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

@@ -39,7 +39,7 @@ namespace OpenRA.Mods.RA.Activities
foreach (var t in target.TraitsImplementing<INotifyInfiltrated>())
t.Infiltrated(target, self);
self.Destroy();
self.Dispose();
if (target.HasTrait<Building>())
Sound.PlayToPlayer(self.Owner, "bldginf1.aud");

View File

@@ -90,7 +90,7 @@ namespace OpenRA.Mods.RA.Activities
foreach (var a in self.World.ActorsWithTrait<ChronoshiftPaletteEffect>())
a.Trait.Enable();
if (teleporter != null && self != teleporter && !teleporter.Destroyed)
if (teleporter != null && self != teleporter && !teleporter.Disposed)
{
var building = teleporter.TraitOrDefault<RenderBuilding>();
if (building != null)

View File

@@ -89,7 +89,7 @@ namespace OpenRA.Mods.RA.Effects
public void Tick(World world)
{
if (self.Destroyed)
if (self.Disposed)
world.AddFrameEndTask(w => w.Remove(this));
show = false;
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.RA.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
if (!show || self.Destroyed)
if (!show || self.Disposed)
return SpriteRenderable.None;
var palette = wr.Palette(info.IndicatorPalettePrefix + self.Owner.InternalName);

View File

@@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA.Traits
self.World.AddFrameEndTask(w =>
{
// damage is inflicted by the chronosphere
if (!self.Destroyed)
if (!self.Disposed)
self.InflictDamage(chronosphere, int.MaxValue, null);
});
return true;