Files
OpenRA/OpenRa.Mods.RA/Crate Actions/FirepowerUpgradeCrateAction.cs
2010-02-11 17:23:02 +13:00

49 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenRa.Traits;
using OpenRa.Mods.RA.Effects;
namespace OpenRa.Mods.RA
{
class FirepowerUpgradeCrateActionInfo : ITraitInfo
{
public float Multiplier = 2.0f;
public int SelectionShares = 10;
public object Create(Actor self) { return new FirepowerUpgradeCrateAction(self); }
}
class FirepowerUpgradeCrateAction : ICrateAction
{
Actor self;
public FirepowerUpgradeCrateAction(Actor self)
{
this.self = self;
}
public int SelectionShares
{
get { return self.Info.Traits.Get<FirepowerUpgradeCrateActionInfo>().SelectionShares; }
}
public void Activate(Actor collector)
{
Sound.PlayToPlayer(collector.Owner, "firepo1.aud");
collector.World.AddFrameEndTask(w =>
{
var multiplier = self.Info.Traits.Get<FirepowerUpgradeCrateActionInfo>().Multiplier;
collector.traits.Add(new FirepowerUpgrade(multiplier));
w.Add(new CrateEffect(collector, "fpower"));
});
}
}
class FirepowerUpgrade : IFirepowerModifier
{
float multiplier;
public FirepowerUpgrade(float multiplier) { this.multiplier = multiplier; }
public float GetFirepowerModifier() { return multiplier; }
}
}