diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 44ffbfeac5..bc8ef1a92b 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -135,6 +135,8 @@ namespace OpenRA.Traits public interface INotifyAddedToWorld { void AddedToWorld(Actor self); } public interface INotifyRemovedFromWorld { void RemovedFromWorld(Actor self); } + + [RequireExplicitImplementation] public interface INotifyActorDisposing { void Disposing(Actor self); } public interface INotifyOwnerChanged { void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner); } public interface INotifyEffectiveOwnerChanged { void OnEffectiveOwnerChanged(Actor self, Player oldEffectiveOwner, Player newEffectiveOwner); } diff --git a/OpenRA.Mods.Cnc/Traits/FrozenUnderFogUpdatedByGps.cs b/OpenRA.Mods.Cnc/Traits/FrozenUnderFogUpdatedByGps.cs index 3ac4baa932..381f5fa296 100644 --- a/OpenRA.Mods.Cnc/Traits/FrozenUnderFogUpdatedByGps.cs +++ b/OpenRA.Mods.Cnc/Traits/FrozenUnderFogUpdatedByGps.cs @@ -69,7 +69,7 @@ namespace OpenRA.Mods.Cnc.Traits ActOnFrozenActorsForAllPlayers(Refresh); } - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { ActOnFrozenActorsForAllPlayers(Remove); } diff --git a/OpenRA.Mods.Common/Scripting/ScriptTriggers.cs b/OpenRA.Mods.Common/Scripting/ScriptTriggers.cs index ba3a4332ea..685f50d9a0 100644 --- a/OpenRA.Mods.Common/Scripting/ScriptTriggers.cs +++ b/OpenRA.Mods.Common/Scripting/ScriptTriggers.cs @@ -523,7 +523,7 @@ namespace OpenRA.Mods.Common.Scripting Clear(t); } - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { ClearAll(); } diff --git a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs index e5c34f8d99..8f75e82bc1 100644 --- a/OpenRA.Mods.Common/Traits/Air/Aircraft.cs +++ b/OpenRA.Mods.Common/Traits/Air/Aircraft.cs @@ -824,7 +824,7 @@ namespace OpenRA.Mods.Common.Traits #endregion - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { UnReserve(); } diff --git a/OpenRA.Mods.Common/Traits/World/EditorResourceLayer.cs b/OpenRA.Mods.Common/Traits/World/EditorResourceLayer.cs index 172e3ea1bc..054d03e855 100644 --- a/OpenRA.Mods.Common/Traits/World/EditorResourceLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/EditorResourceLayer.cs @@ -38,6 +38,8 @@ namespace OpenRA.Mods.Common.Traits public int NetWorth { get; protected set; } + bool disposed; + public EditorResourceLayer(Actor self) { if (self.World.Type != WorldType.Editor) @@ -198,8 +200,7 @@ namespace OpenRA.Mods.Common.Traits l.Draw(wr.Viewport); } - bool disposed; - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { if (disposed) return; diff --git a/OpenRA.Mods.Common/Traits/World/ResourceLayer.cs b/OpenRA.Mods.Common/Traits/World/ResourceLayer.cs index bd94557ffc..d00655ef42 100644 --- a/OpenRA.Mods.Common/Traits/World/ResourceLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/ResourceLayer.cs @@ -36,6 +36,8 @@ namespace OpenRA.Mods.Common.Traits protected readonly CellLayer Content; protected readonly CellLayer RenderContent; + bool disposed; + public ResourceLayer(Actor self) { world = self.World; @@ -286,8 +288,7 @@ namespace OpenRA.Mods.Common.Traits return Content[cell].Type.Info.MaxDensity; } - bool disposed; - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { if (disposed) return; diff --git a/OpenRA.Mods.Common/Traits/World/ShroudRenderer.cs b/OpenRA.Mods.Common/Traits/World/ShroudRenderer.cs index 0a6bda0d17..858b3b5e25 100644 --- a/OpenRA.Mods.Common/Traits/World/ShroudRenderer.cs +++ b/OpenRA.Mods.Common/Traits/World/ShroudRenderer.cs @@ -95,6 +95,7 @@ namespace OpenRA.Mods.Common.Traits Shroud currentShroud; Func visibleUnderShroud, visibleUnderFog; TerrainSpriteLayer shroudLayer, fogLayer; + bool disposed; public ShroudRenderer(World world, ShroudRendererInfo info) { @@ -301,8 +302,7 @@ namespace OpenRA.Mods.Common.Traits return sprites[variant * variantStride + edgesToSpriteIndexOffset[(byte)edges]]; } - bool disposed; - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { if (disposed) return; diff --git a/OpenRA.Mods.Common/Traits/World/SmudgeLayer.cs b/OpenRA.Mods.Common/Traits/World/SmudgeLayer.cs index e7a64a50c4..c458f5eb5f 100644 --- a/OpenRA.Mods.Common/Traits/World/SmudgeLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/SmudgeLayer.cs @@ -88,6 +88,7 @@ namespace OpenRA.Mods.Common.Traits readonly World world; TerrainSpriteLayer render; + bool disposed; public SmudgeLayer(Actor self, SmudgeLayerInfo info) { @@ -207,8 +208,7 @@ namespace OpenRA.Mods.Common.Traits render.Draw(wr.Viewport); } - bool disposed; - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { if (disposed) return; diff --git a/OpenRA.Mods.D2k/Traits/World/BuildableTerrainLayer.cs b/OpenRA.Mods.D2k/Traits/World/BuildableTerrainLayer.cs index a8e3388e45..751987c6f2 100644 --- a/OpenRA.Mods.D2k/Traits/World/BuildableTerrainLayer.cs +++ b/OpenRA.Mods.D2k/Traits/World/BuildableTerrainLayer.cs @@ -32,6 +32,7 @@ namespace OpenRA.Mods.D2k.Traits TerrainSpriteLayer render; Theater theater; + bool disposed; public BuildableTerrainLayer(Actor self, BuildableTerrainLayerInfo info) { @@ -75,8 +76,7 @@ namespace OpenRA.Mods.D2k.Traits render.Draw(wr.Viewport); } - bool disposed; - public void Disposing(Actor self) + void INotifyActorDisposing.Disposing(Actor self) { if (disposed) return;