Merge pull request #8226 from pchote/actor-disposal

Dispose traits when destroying an actor.
This commit is contained in:
Oliver Brakmann
2015-06-02 19:33:22 +02:00
54 changed files with 138 additions and 81 deletions

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Activities
weapon.Impact(Target.FromPos(self.CenterPosition), self, Enumerable.Empty<int>());
}
self.Destroy();
self.Dispose();
return null;
}

View File

@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Activities
actor.InflictDamage(self, damage, null);
}
self.Destroy();
self.Dispose();
});
}
}

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Activities
return;
target.Owner.PlayerActor.Trait<PlayerResources>().GiveCash(payload);
self.Destroy();
self.Dispose();
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
self.World.AddFrameEndTask(w => w.Add(new FloatingText(target.CenterPosition, target.Owner.Color.RGB, FloatingText.FormatCashTick(payload), 30)));

View File

@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Activities
capturable.EndCapture();
if (capturesInfo != null && capturesInfo.ConsumeActor)
self.Destroy();
self.Dispose();
});
}
}

View File

@@ -17,7 +17,7 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled) return NextActivity;
self.Destroy();
self.Dispose();
return null;
}
}

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Activities
if (hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing || hut.Bridge.GetHut(0) == null || hut.Bridge.GetHut(1) == null)
return;
hut.Repair(self);
self.Destroy();
self.Dispose();
}
}
}

View File

@@ -34,7 +34,7 @@ namespace OpenRA.Mods.Common.Activities
if (health.DamageState == DamageState.Undamaged)
return;
target.InflictDamage(self, -health.MaxHP, null);
self.Destroy();
self.Dispose();
}
}
}

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Activities
if (refund > 0 && self.Owner.IsAlliedWith(self.World.RenderPlayer))
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.Owner.Color.RGB, FloatingText.FormatCashTick(refund), 30)));
self.Destroy();
self.Dispose();
return this;
}

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Activities
var selected = w.Selection.Contains(self);
var controlgroup = w.Selection.GetControlGroupForActor(self);
self.Destroy();
self.Dispose();
foreach (var s in Sounds)
Sound.PlayToPlayer(self.Owner, s, self.CenterPosition);

View File

@@ -76,7 +76,7 @@ namespace OpenRA.Mods.Common.Activities
cargo.Unload(self);
self.World.AddFrameEndTask(w =>
{
if (actor.Destroyed)
if (actor.Disposed)
return;
var move = actor.Trait<IMove>();