Skip to content

Commit

Permalink
Fix RevealsMap's effect not being removed for non-owners.
Browse files Browse the repository at this point in the history
  • Loading branch information
MustaphaTR authored and Mailaender committed Jan 9, 2022
1 parent c6dacb5 commit 721210e
Showing 1 changed file with 22 additions and 5 deletions.
27 changes: 22 additions & 5 deletions OpenRA.Mods.Common/Traits/RevealsMap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class RevealsMapInfo : ConditionalTraitInfo
public override object Create(ActorInitializer init) { return new RevealsMap(this); }
}

public class RevealsMap : ConditionalTrait<RevealsMapInfo>, INotifyKilled, INotifyActorDisposing
public class RevealsMap : ConditionalTrait<RevealsMapInfo>, INotifyKilled, INotifyActorDisposing, INotifyOwnerChanged
{
readonly Shroud.SourceType type;

Expand All @@ -51,25 +51,42 @@ protected PPos[] ProjectedCells(Actor self)
return self.World.Map.ProjectedCells;
}

void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
{
if (!IsTraitDisabled)
{
var cells = ProjectedCells(self);
foreach (var player in self.World.Players)
{
RemoveCellsFromPlayerShroud(self, player);
AddCellsToPlayerShroud(self, player, cells);
}
}
}

void INotifyActorDisposing.Disposing(Actor self)
{
RemoveCellsFromPlayerShroud(self, self.Owner);
foreach (var player in self.World.Players)
RemoveCellsFromPlayerShroud(self, player);
}

void INotifyKilled.Killed(Actor self, AttackInfo e)
{
RemoveCellsFromPlayerShroud(self, self.Owner);
foreach (var player in self.World.Players)
RemoveCellsFromPlayerShroud(self, player);
}

protected override void TraitEnabled(Actor self)
{
var cells = ProjectedCells(self);
foreach (var player in self.World.Players)
AddCellsToPlayerShroud(self, player, ProjectedCells(self));
AddCellsToPlayerShroud(self, player, cells);
}

protected override void TraitDisabled(Actor self)
{
RemoveCellsFromPlayerShroud(self, self.Owner);
foreach (var player in self.World.Players)
RemoveCellsFromPlayerShroud(self, player);
}
}
}

0 comments on commit 721210e

Please sign in to comment.