Fix RevealsMap's effect not being removed for non-owners.
This commit is contained in:
committed by
Matthias Mailänder
parent
c6dacb50e8
commit
721210eafe
@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public override object Create(ActorInitializer init) { return new RevealsMap(this); }
|
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;
|
readonly Shroud.SourceType type;
|
||||||
|
|
||||||
@@ -51,25 +51,42 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return self.World.Map.ProjectedCells;
|
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)
|
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)
|
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)
|
protected override void TraitEnabled(Actor self)
|
||||||
{
|
{
|
||||||
|
var cells = ProjectedCells(self);
|
||||||
foreach (var player in self.World.Players)
|
foreach (var player in self.World.Players)
|
||||||
AddCellsToPlayerShroud(self, player, ProjectedCells(self));
|
AddCellsToPlayerShroud(self, player, cells);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void TraitDisabled(Actor self)
|
protected override void TraitDisabled(Actor self)
|
||||||
{
|
{
|
||||||
RemoveCellsFromPlayerShroud(self, self.Owner);
|
foreach (var player in self.World.Players)
|
||||||
|
RemoveCellsFromPlayerShroud(self, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user