Shift RevealsShroud onto Unit; fix "vehicles don't update shroud" regression in last
This commit is contained in:
@@ -48,7 +48,7 @@ namespace OpenRA.Traits
|
||||
public object Create(ActorInitializer init) { return new Building(init); }
|
||||
}
|
||||
|
||||
public class Building : INotifyDamage, IResolveOrder, ITick, IRenderModifier, IOccupySpace, IRadarSignature
|
||||
public class Building : INotifyDamage, IResolveOrder, ITick, IRenderModifier, IOccupySpace, IRadarSignature, IRevealShroud
|
||||
{
|
||||
readonly Actor self;
|
||||
public readonly BuildingInfo Info;
|
||||
|
||||
@@ -23,13 +23,23 @@ namespace OpenRA.Traits
|
||||
public object Create( ActorInitializer init ) { return new Unit(); }
|
||||
}
|
||||
|
||||
public class Unit : INotifyDamage, IRadarSignature
|
||||
public class Unit : INotifyDamage, IRadarSignature, IRevealShroud, ITick
|
||||
{
|
||||
[Sync]
|
||||
public int Facing;
|
||||
[Sync]
|
||||
public int Altitude;
|
||||
|
||||
int2 previousLocation;
|
||||
public void Tick(Actor self)
|
||||
{
|
||||
if (!self.IsIdle && previousLocation != self.Location)
|
||||
{
|
||||
previousLocation = self.Location;
|
||||
self.World.WorldActor.traits.Get<Shroud>().UpdateActor(self);
|
||||
}
|
||||
}
|
||||
|
||||
public void Damaged(Actor self, AttackInfo e)
|
||||
{
|
||||
if (e.DamageState == DamageState.Dead)
|
||||
|
||||
@@ -67,11 +67,8 @@ namespace OpenRA.Traits
|
||||
if (a.traits.WithInterface<IRevealShroud>().Count() == 0)
|
||||
return;
|
||||
|
||||
bool shareShroud = true; // Todo: make this a server flag
|
||||
|
||||
if (a.Owner == null || a.Owner.World.LocalPlayer == null
|
||||
|| a.Owner.Stances[a.Owner.World.LocalPlayer] != Stance.Ally) return;
|
||||
if (!shareShroud && a.Owner != a.Owner.World.LocalPlayer) return;
|
||||
|
||||
if (vis.ContainsKey(a))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user