using System; using OpenRA.Traits; namespace OpenRA.Mods.Common { public class FacingInit : IActorInit { [FieldFromYamlKey] readonly int value = 128; public FacingInit() { } public FacingInit(int init) { value = init; } public int Value(World world) { return value; } } public class DynamicFacingInit : IActorInit> { readonly Func func; public DynamicFacingInit(Func func) { this.func = func; } public Func Value(World world) { return func; } } public class SubCellInit : IActorInit { [FieldFromYamlKey] readonly int value = (int)SubCell.FullCell; public SubCellInit() { } public SubCellInit(int init) { value = init; } public SubCellInit(SubCell init) { value = (int)init; } public SubCell Value(World world) { return (SubCell)value; } } public class CenterPositionInit : IActorInit { [FieldFromYamlKey] readonly WPos value = WPos.Zero; public CenterPositionInit() { } public CenterPositionInit(WPos init) { value = init; } public WPos Value(World world) { return value; } } // Allows maps / transformations to specify the faction variant of an actor. public class FactionInit : IActorInit { [FieldFromYamlKey] public readonly string Faction; public FactionInit() { } public FactionInit(string faction) { Faction = faction; } public string Value(World world) { return Faction; } } public class EffectiveOwnerInit : IActorInit { [FieldFromYamlKey] readonly Player value = null; public EffectiveOwnerInit() { } public EffectiveOwnerInit(Player owner) { value = owner; } Player IActorInit.Value(World world) { return value; } } }