private IJob LoadWork(IGenericSaveData workSave) { Type type = workSave.GetSaveType(); logger.Log("Loading work"); if (type == typeof(WalkRandomlyJob)) { logger.Log("Apparently I was WalkingRandomly"); return(new WalkRandomlyJob(this.actor, workSave, logger)); } else if (type == typeof(MiningJob)) { logger.Log("Apparently I was Mining"); return(new MiningJob(this.actor, workSave, logger)); } else if (type == typeof(MoveItemJob)) { logger.Log("Apparently I was Moving an item"); return(new MoveItemJob(this.actor, workSave, logger)); } else { throw new Exception("Unknown type " + type.ToString()); } }
private State LoadState(IGenericSaveData activeState) { Type type = activeState.GetSaveType(); if (type == typeof(AwaitingAstarState)) { return(new AwaitingAstarState(this)); } else if (type == typeof(WaitABitState)) { if (data.astarResult == null) { throw new Exception("Can't be in WaitABitState without astar result"); } return(new WaitABitState(this, activeState)); } else if (type == typeof(TakeStepState)) { if (data.astarResult == null) { throw new Exception("Can't be in TakeStepState without astar result"); } return(new TakeStepState(this)); } else { throw new Exception("Unknown type " + type.ToString()); } }
public void PausedTimerShouldBeSaveAndLoadable() { int waitTimeMs = 100; bool elapsed = false; PausableTimer timer = new PausableTimer(waitTimeMs); timer.Elapsed += (a, b) => { elapsed = true; }; int margin = Mathf.RoundToInt(waitTimeMs * 0.1f); timer.Start(); // Wait half the time, then save System.Threading.Thread.Sleep((waitTimeMs + margin) / 2); timer.Pause(); IGenericSaveData save = timer.GetSave(); Assert.IsFalse(elapsed); timer = new PausableTimer(save); timer.Elapsed += (a, b) => { elapsed = true; }; System.Threading.Thread.Sleep((waitTimeMs + margin) / 2); Assert.IsFalse(elapsed); timer.Resume(); System.Threading.Thread.Sleep((waitTimeMs + margin) / 2); Assert.IsTrue(elapsed); }
private State LoadState(GridActor user, IGenericSaveData activeState) { Type type = activeState.GetSaveType(); logger.Log("Loading my state"); if (type == typeof(FindItemState)) { logger.Log("I was in a FindItemState"); return(new FindItemState(user, activeState, logger)); } else if (type == typeof(WalkToItemState)) { logger.Log("I was in a WalkToItemState"); return(new WalkToItemState(user, activeState, logger)); } else if (type == typeof(WalkToTargetState)) { logger.Log("I was in a WalkToTargetState"); return(new WalkToTargetState(user, activeState, logger)); } else { throw new Exception("Unknown type " + type.ToString()); } }
public DoJobState(GridActor actor, IGenericSaveData save, LilLogger logger) : base(((SaveData)save).parent) { this.actor = actor; this.logger = logger; this.work = LoadWork(((SaveData)save).workSave); logger.Log("Loading my DoJobState"); }
public void Load(IGenericSaveData data) { SaveData save = data as SaveData; MiningRequestPool.Instance.Load(save.miningRequestPoolSave); MoveItemRequestPool.Instance.Load(save.moveItemRequestPoolSave); }
public MineBlockState(GridActor user, IGenericSaveData saveData, LilLogger logger) : base(((SaveData)saveData).parent) { this.user = user; SaveData save = saveData as SaveData; this.request = save.request; logger.Log("Loading MineBlockState with request " + request); }
public void Load(IGenericSaveData data) { SaveData save = (SaveData)data; state = State.LoadingMap; generationTask = Task.Run(() => GridMap.Instance.LoadSave(save.gridmap)); logger.Log("Loaded GridMapComponent"); }
public WalkToBlockState(GridActor user, IGenericSaveData saveData, LilLogger logger) : base(user, ((SaveData)saveData).parent) { this.logger = logger; SaveData save = saveData as SaveData; this.request = save.request; logger.Log("Loaded a WalkToBlockState with request " + request); Debug.Assert(this.request != null); }
public void Load(IGenericSaveData data) { var save = (SaveData)data; transform.position = save.pos; transform.rotation = save.rot; initialPosition = save.referencePos; rotationAngle = save.rotationAngle; }
public FindItemState(GridActor actor, IGenericSaveData saveData, LilLogger logger) : base(((SaveData)saveData).parent) { this.actor = actor; this.logger = logger; SaveData save = saveData as SaveData; this.request = save.request; logger.Log("Loaded my FindItemState with request " + request); }
public MiningJob(GridActor actor, IGenericSaveData save, LilLogger logger) { this.logger = logger; SaveData saveData = (SaveData)save; if (saveData.activeState != null) { machine = new StateMachine(LoadState(actor, saveData.activeState)); } }
public WalkToTargetState(GridActor actor, IGenericSaveData saveData, LilLogger logger) : base(actor, ((SaveData)saveData).parent) { this.actor = actor; this.logger = logger; SaveData save = saveData as SaveData; this.request = save.request; this.item = save.item; logger.Log("Loaded my WalkToTargetState with request " + request); }
public DorfController(IGenericSaveData data, GridActor actor, LilLogger logger) { SaveData save = (SaveData)data; name = save.name; this.logger = logger; logger.Log("I'm being loaded"); this.gridActor = actor; this.stateMachine = new StateMachine(LoadState(save.currentStateSave)); }
public WaitingState(IGenericSaveData saveData) : base(((SaveData)saveData).parent) { data = (SaveData)saveData; timer = SingletonProvider.MainTimerFactory.GetPausableTimer(data.timerSave); if (!data.elapsed) { timer.Elapsed += ((a, b) => { data.elapsed = true; }); timer.Start(); } }
public WalkRandomlyJob(GridActor user, IGenericSaveData save, LilLogger logger) { this.logger = logger; SaveData saveData = (SaveData)save; logger.Log("Loading a WalkRandomlyJob"); if (saveData.activeState != null) { machine = new StateMachine(LoadState(user, saveData.activeState)); } }
public PausableTimer(IGenericSaveData save) { data = (SaveData)save; Elapsed += OnElapsed; bool wasPaused = data.wasPaused; Resume(); if (wasPaused) { Pause(); } }
IGenericSaveData[] GetSavesFromComponents() { var saveables = GetSaveableComponents(); IGenericSaveData[] saves = new IGenericSaveData[saveables.Count]; int i = 0; foreach (var saveable in saveables) { saves[i] = saveable.Save(); i++; } return(saves); }
public WalkingState(GridActor user, IGenericSaveData save) : base(((SaveData)save).parent) { this.user = user; this.data = (SaveData)save; if (data.activeState != null) { this.machine = new StateMachine(LoadState(data.activeState)); } else { Debug.LogWarning("Walkingstate loaded without a state. Terminating."); TerminateMachine(); } }
private State LoadState(IGenericSaveData currentStateSave) { Type type = currentStateSave.GetSaveType(); if (type == typeof(ChoosingJobState)) { return(new ChoosingJobState(gridActor, currentStateSave, logger)); } else if (type == typeof(DoJobState)) { return(new DoJobState(gridActor, currentStateSave, logger)); } else { throw new Exception("Unknown state type " + type.ToString()); } }
private State LoadState(GridActor user, IGenericSaveData activeState) { logger.Log("Loading a WalkRandomlyState"); Type type = activeState.GetSaveType(); if (type == typeof(WalkRandomlyState)) { return(new WalkRandomlyState(user, activeState, logger)); } else if (type == typeof(WaitingState)) { return(new WaitState(logger)); } else { throw new Exception("Unknown type " + type.ToString()); } }
private State LoadState(GridActor actor, IGenericSaveData activeState) { logger.Log("Loading my state"); Type type = activeState.GetSaveType(); if (type == typeof(WalkToBlockState)) { logger.Log("Apparently I was in a WalkToBlockState"); return(new WalkToBlockState(actor, activeState, logger)); } else if (type == typeof(MineBlockState)) { logger.Log("Apparently I was in a WalkToBlockState"); return(new MineBlockState(actor, activeState, logger)); } else { throw new Exception("Unknown type " + type.ToString()); } }
public void Load(IGenericSaveData saveData) { data = (SaveData)saveData; }
public WaitABitState(WalkingState parent, IGenericSaveData save) : base(((SaveData)save).parentSave) { this.parent = parent; }
public TakeStepState(WalkingState parent, IGenericSaveData save) : base(((SaveData)save).parent) { this.parent = parent; }
public State(IGenericSaveData save) { SaveData saveData = (SaveData)save; this.machineTerminated = saveData.machineTerminated; }
public ITimer GetPausableTimer(IGenericSaveData save) { return(new PausableTimer(save)); }
public ChoosingJobState(GridActor actor, IGenericSaveData save, LilLogger logger) : base(((SaveData)save).parent) { this.actor = actor; this.logger = logger; }
public void Load(IGenericSaveData data) { this.data = (SaveData)data; }
public WalkRandomlyState(GridActor user, IGenericSaveData save, LilLogger logger) : base(save) { this.logger = logger; this.user = user; }