This commit is contained in:
Matthias Mailänder
2014-01-26 07:54:52 +01:00
committed by Matthias Mailänder
parent e344b95a6f
commit 16ddecdcbf
2 changed files with 17 additions and 15 deletions

View File

@@ -21,45 +21,45 @@ namespace OpenRA
internal TypeDictionary dict; internal TypeDictionary dict;
public ActorInitializer( Actor actor, TypeDictionary dict ) public ActorInitializer(Actor actor, TypeDictionary dict)
{ {
this.self = actor; this.self = actor;
this.dict = dict; this.dict = dict;
} }
public T Get<T>() where T : IActorInit { return dict.Get<T>(); } public T Get<T>() where T : IActorInit { return dict.Get<T>(); }
public U Get<T,U>() where T : IActorInit<U> { return dict.Get<T>().Value( world ); } public U Get<T, U>() where T : IActorInit<U> { return dict.Get<T>().Value(world); }
public bool Contains<T>() where T : IActorInit { return dict.Contains<T>(); } public bool Contains<T>() where T : IActorInit { return dict.Contains<T>(); }
} }
public interface IActorInit {} public interface IActorInit { }
public interface IActorInit<T> : IActorInit public interface IActorInit<T> : IActorInit
{ {
T Value( World world ); T Value(World world);
} }
public class FacingInit : IActorInit<int> public class FacingInit : IActorInit<int>
{ {
[FieldFromYamlKey] public readonly int value = 128; [FieldFromYamlKey] public readonly int value = 128;
public FacingInit() { } public FacingInit() { }
public FacingInit( int init ) { value = init; } public FacingInit(int init) { value = init; }
public int Value( World world ) { return value; } public int Value(World world) { return value; }
} }
public class TurretFacingInit : IActorInit<int> public class TurretFacingInit : IActorInit<int>
{ {
[FieldFromYamlKey] public readonly int value = 128; [FieldFromYamlKey] public readonly int value = 128;
public TurretFacingInit() { } public TurretFacingInit() { }
public TurretFacingInit( int init ) { value = init; } public TurretFacingInit(int init) { value = init; }
public int Value( World world ) { return value; } public int Value(World world) { return value; }
} }
public class LocationInit : IActorInit<CPos> public class LocationInit : IActorInit<CPos>
{ {
[FieldFromYamlKey] public readonly int2 value = int2.Zero; [FieldFromYamlKey] public readonly int2 value = int2.Zero;
public LocationInit() { } public LocationInit() { }
public LocationInit( CPos init ) { value = init.ToInt2(); } public LocationInit(CPos init) { value = init.ToInt2(); }
public CPos Value(World world) { return (CPos)value; } public CPos Value(World world) { return (CPos)value; }
} }
@@ -86,18 +86,20 @@ namespace OpenRA
Player player; Player player;
public OwnerInit() { } public OwnerInit() { }
public OwnerInit( string playerName ) { this.PlayerName = playerName; } public OwnerInit(string playerName) { this.PlayerName = playerName; }
public OwnerInit( Player player ) { public OwnerInit(Player player)
{
this.player = player; this.player = player;
this.PlayerName = player.InternalName; this.PlayerName = player.InternalName;
} }
public Player Value( World world ) public Player Value(World world)
{ {
if( player != null ) if (player != null)
return player; return player;
return world.Players.First( x => x.InternalName == PlayerName );
return world.Players.First(x => x.InternalName == PlayerName);
} }
} }
} }

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA
if (init.Contains<CargoInit>()) if (init.Contains<CargoInit>())
{ {
cargo = init.Get<CargoInit,Actor[]>().ToList(); cargo = init.Get<CargoInit, Actor[]>().ToList();
totalWeight = cargo.Sum(c => GetWeight(c)); totalWeight = cargo.Sum(c => GetWeight(c));
} }
else else