add support power charge bar

This commit is contained in:
Chris Forbes
2011-03-08 20:02:02 +13:00
parent 6d36272134
commit 0770524c05
4 changed files with 70 additions and 4 deletions

View File

@@ -34,6 +34,11 @@ namespace OpenRA.Mods.RA
init.world.ActorAdded += ActorAdded;
init.world.ActorRemoved += ActorRemoved;
}
static string MakeKey(SupportPower sp)
{
return sp.Info.AllowMultiple ? sp.Info.OrderName + "_" + sp.self.ActorID : sp.Info.OrderName;
}
void ActorAdded(Actor a)
@@ -42,8 +47,8 @@ namespace OpenRA.Mods.RA
return;
foreach (var t in a.TraitsImplementing<SupportPower>())
{
var key = (t.Info.AllowMultiple) ? t.Info.OrderName+"_"+a.ActorID : t.Info.OrderName;
{
var key = MakeKey(t);
if (Powers.ContainsKey(key))
{
@@ -69,8 +74,8 @@ namespace OpenRA.Mods.RA
return;
foreach (var t in a.TraitsImplementing<SupportPower>())
{
var key = (t.Info.AllowMultiple) ? t.Info.OrderName+"_"+a.ActorID : t.Info.OrderName;
{
var key = MakeKey(t);
Powers[key].Instances.Remove(t);
if (Powers[key].Instances.Count == 0 && !Powers[key].Disabled)
Powers.Remove(key);
@@ -94,6 +99,17 @@ namespace OpenRA.Mods.RA
{
if (Powers.ContainsKey(key))
Powers[key].Target();
}
static readonly SupportPowerInstance[] NoInstances;
public IEnumerable<SupportPowerInstance> GetPowersForActor(Actor a)
{
if (a.Owner != self.Owner || !a.HasTrait<SupportPower>())
return NoInstances;
return a.TraitsImplementing<SupportPower>()
.Select(t => Powers[MakeKey(t)]);
}
public class SupportPowerInstance