Fix exploding walls

This commit is contained in:
Paul Chote
2011-06-02 18:11:30 +12:00
parent 2f86208a9a
commit 64497c9b2f
5 changed files with 35 additions and 9 deletions

View File

@@ -347,6 +347,7 @@
<Compile Include="Activities\CaptureActor.cs" /> <Compile Include="Activities\CaptureActor.cs" />
<Compile Include="InvisibleToEnemy.cs" /> <Compile Include="InvisibleToEnemy.cs" />
<Compile Include="ParachuteAttachment.cs" /> <Compile Include="ParachuteAttachment.cs" />
<Compile Include="Render\WithBuildingExplosion.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj"> <ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Render
} }
} }
public class RenderBuilding : RenderSimple, INotifyDamageStateChanged, IRenderModifier, INotifyKilled public class RenderBuilding : RenderSimple, INotifyDamageStateChanged, IRenderModifier
{ {
readonly RenderBuildingInfo Info; readonly RenderBuildingInfo Info;
@@ -103,13 +103,5 @@ namespace OpenRA.Mods.RA.Render
else if (e.DamageState < DamageState.Heavy) else if (e.DamageState < DamageState.Heavy)
anim.ReplaceAnim("idle"); anim.ReplaceAnim("idle");
} }
public void Killed(Actor self, AttackInfo e)
{
var bi = self.Info.Traits.Get<BuildingInfo>();
FootprintUtils.UnpathableTiles(self.Info.Name, bi, self.Location).Do(
t => self.World.AddFrameEndTask(
w => w.Add(new Explosion(w, Traits.Util.CenterOfCell(t), "building", false, 0))));
}
} }
} }

View File

@@ -0,0 +1,28 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using OpenRA.Mods.RA.Buildings;
using OpenRA.Mods.RA.Effects;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Render
{
class WithBuildingExplosionInfo : TraitInfo<WithBuildingExplosion> { }
class WithBuildingExplosion : INotifyKilled
{
public void Killed(Actor self, AttackInfo e)
{
var bi = self.Info.Traits.Get<BuildingInfo>();
FootprintUtils.UnpathableTiles(self.Info.Name, bi, self.Location).Do(
t => self.World.AddFrameEndTask(
w => w.Add(new Explosion(w, Traits.Util.CenterOfCell(t), "building", false, 0))));
}
}
}

View File

@@ -205,6 +205,7 @@
Buildable: Buildable:
Queue: Building Queue: Building
RenderBuilding: RenderBuilding:
WithBuildingExplosion:
DeadBuildingState: DeadBuildingState:
EmitInfantryOnSell: EmitInfantryOnSell:
ActorTypes: e6,e1 ActorTypes: e6,e1
@@ -234,6 +235,8 @@
Armor: Armor:
Type: Wood Type: Wood
Building: Building:
RenderBuilding:
WithBuildingExplosion:
-RepairableBuilding: -RepairableBuilding:
-Capturable: -Capturable:
Tooltip: Tooltip:
@@ -249,6 +252,7 @@
RenderBuilding: RenderBuilding:
OverrideTileset: DESERT OverrideTileset: DESERT
OverrideImage: v23 OverrideImage: v23
-WithBuildingExplosion:
^Wall: ^Wall:
AppearsOnRadar: AppearsOnRadar:

View File

@@ -176,6 +176,7 @@
DamagedSound: kaboom1.aud DamagedSound: kaboom1.aud
DestroyedSound: kaboom22.aud DestroyedSound: kaboom22.aud
RenderBuilding: RenderBuilding:
WithBuildingExplosion:
RepairableBuilding: RepairableBuilding:
EmitInfantryOnSell: EmitInfantryOnSell:
ActorTypes: e1,e1,e1,c1,c2,e6 ActorTypes: e1,e1,e1,c1,c2,e6