cargo: support for actors being removed from the world, but not dying

This commit is contained in:
Chris Forbes
2010-01-05 12:47:20 +13:00
parent 52f99cb055
commit e74bcba694
3 changed files with 7 additions and 2 deletions

View File

@@ -36,6 +36,7 @@ namespace OpenRa.Game
Location = location;
CenterLocation = Traits.Util.CenterOfCell(Location);
Owner = owner;
IsInWorld = true;
if (Info == null) return;
@@ -123,6 +124,7 @@ namespace OpenRa.Game
}
public bool IsDead { get { return Health <= 0; } }
public bool IsInWorld { get; set; }
public DamageState GetDamageState()
{

View File

@@ -27,7 +27,7 @@ namespace OpenRa.Game.Orders
public void Tick()
{
selection.RemoveAll(a => a.IsDead);
selection.RemoveAll(a => !a.IsInWorld);
}
public void Render()

View File

@@ -11,7 +11,10 @@ namespace OpenRa.Game
List<Action<World>> frameEndActions = new List<Action<World>>();
public void Add(Actor a) { actors.Add(a); ActorAdded(a); }
public void Remove(Actor a) { actors.Remove(a); ActorRemoved(a); }
public void Remove(Actor a)
{
a.IsInWorld = false; actors.Remove(a); ActorRemoved(a);
}
public void Add(IEffect b) { effects.Add(b); }
public void Remove(IEffect b) { effects.Remove(b); }