From a38b5b89db044d18783ba173c2f841e64fa98b62 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 21 Mar 2010 09:49:27 +1300 Subject: [PATCH] add explosive crates --- OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs | 41 +++++++++++++++++++++ OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + 2 files changed, 42 insertions(+) create mode 100644 OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs diff --git a/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs b/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs new file mode 100644 index 0000000000..6bd2eece05 --- /dev/null +++ b/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using OpenRA.Traits; +using OpenRA.Effects; + +namespace OpenRA.Mods.RA.Crates +{ + class ExplodeCrateActionInfo : ITraitInfo + { + public string Weapon = null; + public int SelectionShares = 5; + + public object Create(Actor self) { return new ExplodeCrateAction(self, this); } + } + + class ExplodeCrateAction : ICrateAction + { + Actor self; + ExplodeCrateActionInfo info; + + public ExplodeCrateAction(Actor self, ExplodeCrateActionInfo info) + { + this.self = self; + } + + public int SelectionShares + { + get { return info.SelectionShares; } + } + + public void Activate(Actor collector) + { + self.World.AddFrameEndTask( + w => w.Add(new Bullet(info.Weapon, self.Owner, + self, self.CenterLocation.ToInt2(), self.CenterLocation.ToInt2(), + 0, 0))); + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 796b5cf958..2f3c1499ef 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -53,6 +53,7 @@ +