コード例 #1
0
 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);
 }