public override void InitializeStates(out BaseState default_state) { default_state = grounded; grounded.PlayAnim("grounded", KAnim.PlayMode.Loop).DefaultState(grounded.awaitingAstronaut).TagTransition(GameTags.RocketNotOnGround, spaceborne, false); grounded.awaitingAstronaut.Enter(delegate(StatesInstance smi) { if (smi.CheckStoredMinionIsAssignee()) { smi.GoTo(grounded.hasAstronaut); } Game.Instance.userMenu.Refresh(smi.gameObject); }).EventHandler(GameHashes.AssigneeChanged, delegate(StatesInstance smi) { if (smi.CheckStoredMinionIsAssignee()) { smi.GoTo(grounded.hasAstronaut); } Game.Instance.userMenu.Refresh(smi.gameObject); }).ToggleChore((StatesInstance smi) => smi.master.CreateWorkChore(), grounded.hasAstronaut); grounded.hasAstronaut.EventHandler(GameHashes.AssigneeChanged, delegate(StatesInstance smi) { if (!smi.CheckStoredMinionIsAssignee()) { smi.GoTo(grounded.waitingToRelease); } }); grounded.waitingToRelease.ToggleStatusItem(Db.Get().BuildingStatusItems.DisembarkingDuplicant, (object)null).OnSignal(gantryChanged, grounded.awaitingAstronaut, delegate(StatesInstance smi) { if (HasValidGantry(smi.gameObject)) { smi.master.ReleaseAstronaut(accumulatedPee.Get(smi)); accumulatedPee.Set(false, smi); Game.Instance.userMenu.Refresh(smi.gameObject); return(true); } return(false); }); spaceborne.DefaultState(spaceborne.launch); spaceborne.launch.Enter(delegate(StatesInstance smi) { smi.SetSuspended(true); }).GoTo(spaceborne.idle); spaceborne.idle.TagTransition(GameTags.RocketNotOnGround, spaceborne.land, true); spaceborne.land.Enter(delegate(StatesInstance smi) { smi.SetSuspended(false); Game.Instance.userMenu.Refresh(smi.gameObject); accumulatedPee.Set(true, smi); }).GoTo(grounded.waitingToRelease); }
public override void InitializeStates(out BaseState default_state) { default_state = wild; base.serializable = false; wild.ParamTransition(resourceStorage, unfertilizable, (Instance smi, GameObject p) => (Object)p != (Object)null); unfertilizable.Enter(delegate(Instance smi) { if (smi.AcceptsLiquid()) { smi.GoTo(replanted.irrigated); } }); replanted.Enter(delegate(Instance smi) { ManualDeliveryKG[] components = smi.gameObject.GetComponents <ManualDeliveryKG>(); foreach (ManualDeliveryKG manualDeliveryKG in components) { manualDeliveryKG.Pause(false, "replanted"); } smi.UpdateIrrigation(0.0333333351f); }).Target(resourceStorage).EventHandler(GameHashes.OnStorageChange, delegate(Instance smi) { smi.UpdateIrrigation(0.2f); }) .Target(masterTarget); replanted.irrigated.DefaultState(replanted.irrigated.absorbing).TriggerOnEnter(ResourceRecievedEvent, null); replanted.irrigated.absorbing.DefaultState(replanted.irrigated.absorbing.normal).ParamTransition(hasCorrectLiquid, replanted.starved, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse).ToggleAttributeModifier("Absorbing", (Instance smi) => smi.absorptionRate, null) .Enter(delegate(Instance smi) { smi.UpdateAbsorbing(true); }) .EventHandler(GameHashes.TagsChanged, delegate(Instance smi) { smi.UpdateAbsorbing(true); }) .Exit(delegate(Instance smi) { smi.UpdateAbsorbing(false); }); replanted.irrigated.absorbing.normal.ParamTransition(hasIncorrectLiquid, replanted.irrigated.absorbing.wrongLiquid, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsTrue); replanted.irrigated.absorbing.wrongLiquid.ParamTransition(hasIncorrectLiquid, replanted.irrigated.absorbing.normal, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse); replanted.starved.DefaultState(replanted.starved.normal).TriggerOnEnter(ResourceDepletedEvent, null).ParamTransition(enoughCorrectLiquidToRecover, replanted.irrigated.absorbing, (Instance smi, bool p) => p && hasCorrectLiquid.Get(smi)) .ParamTransition(hasCorrectLiquid, replanted.irrigated.absorbing, (Instance smi, bool p) => p && enoughCorrectLiquidToRecover.Get(smi)); replanted.starved.normal.ParamTransition(hasIncorrectLiquid, replanted.starved.wrongLiquid, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsTrue); replanted.starved.wrongLiquid.ParamTransition(hasIncorrectLiquid, replanted.starved.normal, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse); }