Shift RevealsShroud onto Unit; fix "vehicles don't update shroud" regression in last

This commit is contained in:
Paul Chote
2010-07-27 15:15:26 +12:00
parent a91ebb4eda
commit 9a704e69b2
7 changed files with 12 additions and 48 deletions

View File

@@ -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;

View File

@@ -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)

View File

@@ -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))
{