public override void InitializeStates(out BaseState default_state) { default_state = unworkable; root.Enter(delegate(StatesInstance smi) { smi.master.workable.SetWorkTime(float.PositiveInfinity); }); workable.ToggleChore(CreateUseChore, work_pst).EventTransition(GameHashes.ActiveChanged, workable.cooling, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null).EventTransition(GameHashes.OperationalChanged, workable.cooling, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null) .Transition(unworkable, (StatesInstance smi) => !smi.IsWorkable(), UpdateRate.SIM_200ms); workable.cooling.EventTransition(GameHashes.OperationalChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).EventHandler(GameHashes.ActiveChanged, delegate(StatesInstance smi) { smi.master.CheckWorking(); }).Enter(delegate(StatesInstance smi) { smi.master.gameObject.GetComponent <ManualDeliveryKG>().Pause(true, "Working"); if (!smi.EnvironmentNeedsCooling() || !smi.master.HasMaterial() || !smi.EnvironmentHighEnoughPressure()) { smi.GoTo(unworkable); } }) .Update("IceCooledFanCooling", delegate(StatesInstance smi, float dt) { smi.master.DoCooling(dt); }, UpdateRate.SIM_200ms, false) .Exit(delegate(StatesInstance smi) { if (!smi.master.HasMaterial()) { smi.master.gameObject.GetComponent <ManualDeliveryKG>().Pause(false, "Working"); } smi.master.liquidStorage.DropAll(false, false, default(Vector3), true); }); work_pst.ScheduleGoTo(2f, unworkable); unworkable.Update("IceFanUnworkableStatusItems", delegate(StatesInstance smi, float dt) { smi.master.UpdateUnworkableStatusItems(); }, UpdateRate.SIM_200ms, false).Transition(workable.waiting, (StatesInstance smi) => smi.IsWorkable(), UpdateRate.SIM_200ms).Enter(delegate(StatesInstance smi) { smi.master.UpdateUnworkableStatusItems(); }) .Exit(delegate(StatesInstance smi) { smi.master.UpdateUnworkableStatusItems(); }); }
public override void InitializeStates(out BaseState default_state) { default_state = unworkable; root.Enter(delegate(StatesInstance smi) { smi.master.workable.SetWorkTime(float.PositiveInfinity); }); workable.ToggleChore(CreateUseChore, work_pst).EventTransition(GameHashes.ActiveChanged, workable.consuming, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null).EventTransition(GameHashes.OperationalChanged, workable.consuming, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null) .Transition(unworkable, (StatesInstance smi) => !smi.IsWorkable(), UpdateRate.SIM_200ms); work_pst.Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt) { smi.master.EmitContents(); }, UpdateRate.SIM_200ms, false).ScheduleGoTo(2f, unworkable); unworkable.Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt) { smi.master.EmitContents(); }, UpdateRate.SIM_200ms, false).Update("LiquidFanUnworkableStatusItems", delegate(StatesInstance smi, float dt) { smi.master.UpdateUnworkableStatusItems(); }, UpdateRate.SIM_200ms, false).Transition(workable.waiting, (StatesInstance smi) => smi.IsWorkable(), UpdateRate.SIM_200ms) .Enter(delegate(StatesInstance smi) { smi.master.UpdateUnworkableStatusItems(); }) .Exit(delegate(StatesInstance smi) { smi.master.UpdateUnworkableStatusItems(); }); workable.consuming.EventTransition(GameHashes.OperationalChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).EventHandler(GameHashes.ActiveChanged, delegate(StatesInstance smi) { smi.master.CheckWorking(); }).Enter(delegate(StatesInstance smi) { if (!smi.EnvironmentNeedsCooling() || !smi.master.HasMaterial() || !smi.EnvironmentHighEnoughPressure()) { smi.GoTo(unworkable); } ElementConsumer component2 = smi.master.GetComponent <ElementConsumer>(); component2.consumptionRate = smi.master.flowRate; component2.RefreshConsumptionRate(); }) .Update(delegate(StatesInstance smi, float dt) { smi.master.CoolContents(dt); }, UpdateRate.SIM_200ms, false) .ScheduleGoTo(12f, workable.emitting) .Exit(delegate(StatesInstance smi) { ElementConsumer component = smi.master.GetComponent <ElementConsumer>(); component.consumptionRate = 0f; component.RefreshConsumptionRate(); }); workable.emitting.EventTransition(GameHashes.ActiveChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).EventTransition(GameHashes.OperationalChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).ScheduleGoTo(3f, workable.consuming) .Update(delegate(StatesInstance smi, float dt) { smi.master.CoolContents(dt); }, UpdateRate.SIM_200ms, false) .Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt) { smi.master.EmitContents(); }, UpdateRate.SIM_200ms, false); }