From ccf1ef3adf1626eabc18b0a209c33727ebb11fd7 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 12 Apr 2010 19:32:43 +1200 Subject: [PATCH] added crate action to give support powers --- .../Crates/SupportPowerCrateAction.cs | 47 +++++++++++++++++++ OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + 2 files changed, 48 insertions(+) create mode 100644 OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs diff --git a/OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs b/OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs new file mode 100644 index 0000000000..6270d150bf --- /dev/null +++ b/OpenRA.Mods.RA/Crates/SupportPowerCrateAction.cs @@ -0,0 +1,47 @@ +#region Copyright & License Information +/* + * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford. + * This file is part of OpenRA. + * + * OpenRA is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenRA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenRA. If not, see . + */ +#endregion + +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Crates +{ + class SupportPowerCrateActionInfo : CrateActionInfo + { + public string Power = null; + public override object Create(Actor self) { return new SupportPowerCrateAction(self, this); } + } + + class SupportPowerCrateAction : CrateAction + { + public SupportPowerCrateAction(Actor self, SupportPowerCrateActionInfo info) + : base(self, info) { } + + public override void Activate(Actor collector) + { + var p = collector.Owner.PlayerActor.traits.WithInterface() + .FirstOrDefault(sp => sp.GetType().Name == (info as SupportPowerCrateActionInfo).Power); + + if (p != null) p.Give(0f); + + base.Activate(collector); + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 0726092b1f..4b67458a9e 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -57,6 +57,7 @@ +