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;
public ActorInitializer( Actor actor, TypeDictionary dict )
public ActorInitializer(Actor actor, TypeDictionary dict)
{
this.self = actor;
this.dict = dict;
}
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 interface IActorInit {}
public interface IActorInit { }
public interface IActorInit<T> : IActorInit
{
T Value( World world );
T Value(World world);
}
public class FacingInit : IActorInit<int>
{
[FieldFromYamlKey] public readonly int value = 128;
public FacingInit() { }
public FacingInit( int init ) { value = init; }
public int Value( World world ) { return value; }
public FacingInit(int init) { value = init; }
public int Value(World world) { return value; }
}
public class TurretFacingInit : IActorInit<int>
{
[FieldFromYamlKey] public readonly int value = 128;
public TurretFacingInit() { }
public TurretFacingInit( int init ) { value = init; }
public int Value( World world ) { return value; }
public TurretFacingInit(int init) { value = init; }
public int Value(World world) { return value; }
}
public class LocationInit : IActorInit<CPos>
{
[FieldFromYamlKey] public readonly int2 value = int2.Zero;
public LocationInit() { }
public LocationInit( CPos init ) { value = init.ToInt2(); }
public LocationInit(CPos init) { value = init.ToInt2(); }
public CPos Value(World world) { return (CPos)value; }
}
@@ -86,18 +86,20 @@ namespace OpenRA
Player player;
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.PlayerName = player.InternalName;
}
public Player Value( World world )
public Player Value(World world)
{
if( player != null )
if (player != null)
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>())
{
cargo = init.Get<CargoInit,Actor[]>().ToList();
cargo = init.Get<CargoInit, Actor[]>().ToList();
totalWeight = cargo.Sum(c => GetWeight(c));
}
else