Ejemplo n.º 1
0
            public override void InitializeStates(out StateMachine.BaseState default_state)
            {
                default_state = this.converting;
                this.waiting
                .EventTransition(GameHashes.OnStorageChange, this.hasfilter, (CoalSynth.StatesInstance smi) => smi.master.HasFilter() && smi.master.operational.IsOperational)
                .EventTransition(GameHashes.OperationalChanged, this.hasfilter, (CoalSynth.StatesInstance smi) => smi.master.HasFilter() && smi.master.operational.IsOperational);

                this.hasfilter
                .EventTransition(GameHashes.OnStorageChange, this.converting, (CoalSynth.StatesInstance smi) => smi.master.IsConvertable())
                .EventTransition(GameHashes.OperationalChanged, this.waiting, (CoalSynth.StatesInstance smi) => !smi.master.operational.IsOperational).Enter("EnableConsumption", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.elementConsumer.EnableConsumption(true);
                }).Exit("DisableConsumption", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.elementConsumer.EnableConsumption(false);
                });
                this.converting.Enter("SetActive(true)", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.operational.SetActive(true, false);
                }).Exit("SetActive(false)", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.operational.SetActive(false, false);
                }).Enter("EnableConsumption", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.elementConsumer.EnableConsumption(true);
                }).Exit("DisableConsumption", delegate(CoalSynth.StatesInstance smi)
                {
                    smi.master.elementConsumer.EnableConsumption(false);
                }).EventTransition(GameHashes.OnStorageChange, this.waiting, (CoalSynth.StatesInstance smi) => !smi.master.IsConvertable()).EventTransition(GameHashes.OperationalChanged, this.waiting, (CoalSynth.StatesInstance smi) => !smi.master.operational.IsOperational);
            }
Ejemplo n.º 2
0
 /// <summary>
 /// Clears the existing Transition actions on a state. Parameter transitions are not
 /// affected.
 /// </summary>
 /// <param name="state">The state to modify.</param>
 public static void ClearTransitions(this StateMachine.BaseState state)
 {
     if (state != null)
     {
         state.transitions.Clear();
     }
 }
Ejemplo n.º 3
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     SteamTurbine.InitializeStatusItems();
     default_state = this.operational;
     this.root.Update("UpdateBlocked", delegate(SteamTurbine.Instance smi, float dt)
     {
         smi.UpdateBlocked(dt);
     }, UpdateRate.SIM_200ms, false);
     this.inoperational.EventTransition(GameHashes.OperationalChanged, this.operational.active, (SteamTurbine.Instance smi) => smi.master.GetComponent <Operational>().IsOperational).QueueAnim("off", false, null);
     this.operational.DefaultState(this.operational.active).EventTransition(GameHashes.OperationalChanged, this.inoperational, (SteamTurbine.Instance smi) => !smi.master.GetComponent <Operational>().IsOperational).Update("UpdateOperational", delegate(SteamTurbine.Instance smi, float dt)
     {
         smi.UpdateState(dt);
     }, UpdateRate.SIM_200ms, false).Exit(delegate(SteamTurbine.Instance smi)
     {
         smi.DisableStatusItems();
     });
     this.operational.idle.QueueAnim("on", false, null);
     this.operational.active.Update("UpdateActive", delegate(SteamTurbine.Instance smi, float dt)
     {
         smi.master.Pump(dt);
     }, UpdateRate.SIM_200ms, false).ToggleStatusItem((SteamTurbine.Instance smi) => SteamTurbine.activeStatusItem, (SteamTurbine.Instance smi) => smi.master).Enter(delegate(SteamTurbine.Instance smi)
     {
         smi.GetComponent <KAnimControllerBase>().Play(SteamTurbine.States.ACTIVE_ANIMS, KAnim.PlayMode.Loop);
         smi.GetComponent <Operational>().SetActive(true, false);
     }).Exit(delegate(SteamTurbine.Instance smi)
     {
         smi.master.GetComponent <Generator>().ResetJoules();
         smi.GetComponent <Operational>().SetActive(false, false);
     });
     this.operational.tooHot.Enter(delegate(SteamTurbine.Instance smi)
     {
         smi.GetComponent <KAnimControllerBase>().Play(SteamTurbine.States.TOOHOT_ANIMS, KAnim.PlayMode.Loop);
     });
 }
Ejemplo n.º 4
0
            public void UpdateState(float dt)
            {
                bool flag  = this.CanSteamFlow(ref this.insufficientMass, ref this.insufficientTemperature);
                bool flag2 = this.IsTooHot(ref this.buildingTooHot);

                this.UpdateStatusItems();
                StateMachine.BaseState currentState = base.smi.GetCurrentState();
                if (flag2)
                {
                    if (currentState != base.sm.operational.tooHot)
                    {
                        base.smi.GoTo(base.sm.operational.tooHot);
                    }
                }
                else if (flag)
                {
                    if (currentState != base.sm.operational.active)
                    {
                        base.smi.GoTo(base.sm.operational.active);
                    }
                }
                else if (currentState != base.sm.operational.idle)
                {
                    base.smi.GoTo(base.sm.operational.idle);
                }
            }
Ejemplo n.º 5
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state   = (StateMachine.BaseState) this.waitingfordelivery;
     this.statusItem = new StatusItem(nameof(DazBottleEmptier), "", "", "", StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID);
     this.statusItem.resolveStringCallback = (Func <string, object, string>)((str, data) =>
     {
         DazBottleEmptier bottleEmptier = (DazBottleEmptier)data;
         if ((UnityEngine.Object)bottleEmptier == (UnityEngine.Object)null)
         {
             return(str);
         }
         return(bottleEmptier.allowManualPumpingStationFetching ? (string)(bottleEmptier.isGasEmptier ? BUILDING.STATUSITEMS.CANISTER_EMPTIER.ALLOWED.NAME : BUILDING.STATUSITEMS.BOTTLE_EMPTIER.ALLOWED.NAME) : (string)(bottleEmptier.isGasEmptier ? BUILDING.STATUSITEMS.CANISTER_EMPTIER.DENIED.NAME : BUILDING.STATUSITEMS.BOTTLE_EMPTIER.DENIED.NAME));
     });
     this.statusItem.resolveTooltipCallback = (Func <string, object, string>)((str, data) =>
     {
         DazBottleEmptier bottleEmptier = (DazBottleEmptier)data;
         if ((UnityEngine.Object)bottleEmptier == (UnityEngine.Object)null)
         {
             return(str);
         }
         return(bottleEmptier.allowManualPumpingStationFetching ? (bottleEmptier.isGasEmptier ? (string)BUILDING.STATUSITEMS.CANISTER_EMPTIER.ALLOWED.TOOLTIP : (string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.ALLOWED.TOOLTIP) : (bottleEmptier.isGasEmptier ? (string)BUILDING.STATUSITEMS.CANISTER_EMPTIER.DENIED.TOOLTIP : (string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.DENIED.TOOLTIP));
     });
     this.root.ToggleStatusItem(this.statusItem, (Func <DazBottleEmptier.StatesInstance, object>)(smi => (object)smi.master));
     this.unoperational.TagTransition(GameTags.Operational, this.waitingfordelivery).PlayAnim("off");
     this.waitingfordelivery.TagTransition(GameTags.Operational, this.unoperational, true).EventTransition(GameHashes.OnStorageChange, this.emptying, (StateMachine <DazBottleEmptier.States, DazBottleEmptier.StatesInstance, DazBottleEmptier, object> .Transition.ConditionCallback)(smi => !smi.GetComponent <Storage>().IsEmpty())).Enter("CreateChore", (StateMachine <DazBottleEmptier.States, DazBottleEmptier.StatesInstance, DazBottleEmptier, object> .State.Callback)(smi => smi.CreateChore())).Exit("CancelChore", (StateMachine <DazBottleEmptier.States, DazBottleEmptier.StatesInstance, DazBottleEmptier, object> .State.Callback)(smi => smi.CancelChore())).PlayAnim("on");
     this.emptying.TagTransition(GameTags.Operational, this.unoperational, true).EventTransition(GameHashes.OnStorageChange, this.waitingfordelivery, (StateMachine <DazBottleEmptier.States, DazBottleEmptier.StatesInstance, DazBottleEmptier, object> .Transition.ConditionCallback)(smi => smi.GetComponent <Storage>().IsEmpty())).Enter("StartMeter", (StateMachine <DazBottleEmptier.States, DazBottleEmptier.StatesInstance, DazBottleEmptier, object> .State.Callback)(smi => smi.StartMeter())).Update("Emit", (System.Action <DazBottleEmptier.StatesInstance, float>)((smi, dt) => smi.Emit(dt))).PlayAnim("working_loop", KAnim.PlayMode.Loop);
 }
Ejemplo n.º 6
0
 static void Postfix(Repairable.States __instance, ref StateMachine.BaseState default_state)
 {
     if (Options.Opts.AutoRepairOff)
     {
         default_state = __instance.forbidden;
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Clears the existing Enter actions on a state.
 /// </summary>
 /// <param name="state">The state to modify.</param>
 public static void ClearEnterActions(this StateMachine.BaseState state)
 {
     if (state != null)
     {
         state.enterActions.Clear();
     }
 }
Ejemplo n.º 8
0
 private void OnRefreshUserMenu(object data)
 {
     if ((UnityEngine.Object)base.gameObject != (UnityEngine.Object)null && smi != null)
     {
         StateMachine.BaseState currentState = smi.GetCurrentState();
         if (currentState == smi.sm.forbidden)
         {
             UserMenu      userMenu    = Game.Instance.userMenu;
             GameObject    gameObject  = base.gameObject;
             string        iconName    = "action_repair";
             string        text        = STRINGS.BUILDINGS.REPAIRABLE.ENABLE_AUTOREPAIR.NAME;
             System.Action on_click    = AllowRepair;
             string        tooltipText = STRINGS.BUILDINGS.REPAIRABLE.ENABLE_AUTOREPAIR.TOOLTIP;
             userMenu.AddButton(gameObject, new KIconButtonMenu.ButtonInfo(iconName, text, on_click, Action.NumActions, null, null, null, tooltipText, true), 1f);
         }
         else
         {
             UserMenu      userMenu2   = Game.Instance.userMenu;
             GameObject    gameObject2 = base.gameObject;
             string        tooltipText = "action_repair";
             string        text        = STRINGS.BUILDINGS.REPAIRABLE.DISABLE_AUTOREPAIR.NAME;
             System.Action on_click    = CancelRepair;
             string        iconName    = STRINGS.BUILDINGS.REPAIRABLE.DISABLE_AUTOREPAIR.TOOLTIP;
             userMenu2.AddButton(gameObject2, new KIconButtonMenu.ButtonInfo(tooltipText, text, on_click, Action.NumActions, null, null, null, iconName, true), 1f);
         }
     }
 }
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.off;
     this.off.PlayAnim("off").EventTransition(GameHashes.OperationalChanged, (GameStateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .State) this.on, (StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .Transition.ConditionCallback)(smi => smi.master.operational.IsOperational));
     this.on.PlayAnim("on").EventTransition(GameHashes.OperationalChanged, this.off, (StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .Transition.ConditionCallback)(smi => !smi.master.operational.IsOperational)).DefaultState(this.on.waiting);
     this.on.waiting.EventTransition(GameHashes.OnStorageChange, this.on.working_pre, (StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .Transition.ConditionCallback)(smi => smi.master.GetComponent <GermScrubConverter>().CanConvertAtAll()));
     this.on.working_pre.PlayAnim("working_pre").OnAnimQueueComplete(this.on.working);
     this.on.working.Enter((StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .State.Callback)(smi => smi.master.operational.SetActive(true, false))).QueueAnim("working_loop", true, (Func <HexiLiquidGermScrubber.StatesInstance, string>)null).EventTransition(GameHashes.OnStorageChange, this.on.working_pst, (StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .Transition.ConditionCallback)(smi => !smi.master.GetComponent <GermScrubConverter>().CanConvertAtAll())).Exit((StateMachine <HexiLiquidGermScrubber.States, HexiLiquidGermScrubber.StatesInstance, HexiLiquidGermScrubber, object> .State.Callback)(smi => smi.master.operational.SetActive(false, false)));
     this.on.working_pst.PlayAnim("working_pst").OnAnimQueueComplete(this.on.waiting);
 }
Ejemplo n.º 10
0
        // Token: 0x0600233B RID: 9019 RVA: 0x000AE72C File Offset: 0x000AC92C
        public override void InitializeStates(out StateMachine.BaseState default_state)
        {
            default_state     = this.offline;
            base.serializable = false;

            this.statusItemUnderMass = new StatusItem("statusItemUnderMass", "No material in contact with operating surface(s)", "Both operating surfaces has to be in contact with gas, liquid or tile.", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, SimViewMode.None, 63486);

            this.statusItemOverTemp = new StatusItem("statusItemOverTemp", BUILDING.STATUSITEMS.HEATINGSTALLEDHOTENV.NAME, BUILDING.STATUSITEMS.HEATINGSTALLEDHOTENV.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, SimViewMode.None, 63486);
            this.statusItemOverTemp.resolveStringCallback = delegate(string str, object obj)
            {
                PeltierCooler.StatesInstance statesInstance = (PeltierCooler.StatesInstance)obj;
                return(string.Format(str, GameUtil.GetFormattedTemperature(statesInstance.master.MaxOutputTemperature, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true)));
            };

            this.statusItemUnderTemp = new StatusItem("statusItemUnderTemp", BUILDING.STATUSITEMS.CANNOTCOOLFURTHER.NAME, BUILDING.STATUSITEMS.CANNOTCOOLFURTHER.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, SimViewMode.None, 63486);
            this.statusItemUnderTemp.resolveStringCallback = delegate(string str, object obj)
            {
                PeltierCooler.StatesInstance statesInstance = (PeltierCooler.StatesInstance)obj;
                return(string.Format(str, GameUtil.GetFormattedTemperature(statesInstance.master.MinInputTemperature, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true)));
            };

            this.offline.EventTransition(GameHashes.OperationalChanged, this.online, (PeltierCooler.StatesInstance smi) => smi.master.operational.IsOperational);
            this.online.EventTransition(GameHashes.OperationalChanged, this.offline, (PeltierCooler.StatesInstance smi) => !smi.master.operational.IsOperational).DefaultState(this.online.heating).Update("peltiercooler_online", delegate(PeltierCooler.StatesInstance smi, float dt)
            {
                switch (smi.master.MonitorHeating(dt))
                {
                case PeltierCooler.MonitorState.ReadyToHeat:
                    smi.GoTo(this.online.heating);
                    break;

                case PeltierCooler.MonitorState.TooHot:
                    smi.GoTo(this.online.overtemp);
                    break;

                case PeltierCooler.MonitorState.TooCold:
                    smi.GoTo(this.online.undertemp);
                    break;

                case PeltierCooler.MonitorState.NotEnoughMass:
                    smi.GoTo(this.online.undermass);
                    break;
                }
            }, UpdateRate.SIM_200ms, false);
            this.online.heating.Enter(delegate(PeltierCooler.StatesInstance smi)
            {
                smi.master.operational.SetActive(true, false);
            }).Exit(delegate(PeltierCooler.StatesInstance smi)
            {
                smi.master.operational.SetActive(false, false);
            });
            this.online.undermass.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemUnderMass, null);
            this.online.overtemp.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemOverTemp, null);
            this.online.undertemp.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemUnderTemp, null);
        }
Ejemplo n.º 11
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = this.noage;
     this.noage.Transition(this.immortal, (smi => smi.master.IsImmortal()), UpdateRate.SIM_200ms).Transition(this.youthful, (smi => smi.master.IsYouthful()), UpdateRate.SIM_200ms).Transition(this.middleaged, (smi => !smi.master.IsYouthful() && !smi.master.IsElderly() && !smi.master.IsDying()), UpdateRate.SIM_200ms).Transition(this.elderly, (smi => smi.master.IsElderly()), UpdateRate.SIM_200ms).Transition(this.dying, (smi => smi.master.IsDying()), UpdateRate.SIM_200ms).Transition(this.dead, (smi => smi.master.IsDead()), UpdateRate.SIM_200ms);
     this.immortal.Enter("Immortal", (smi => smi.master.ApplyImmortalModifiers())).Exit("NotImmortal", (smi => smi.master.RemoveModifiers(smi.master.immortalAttributeModifiers))).ToggleStatusItem(DuplicantLifecycleStrings.Immortal, null).ToggleExpression(Db.Get().Expressions.Relief, null).TagTransition(GameTags.Dead, this.dead);
     this.youthful.Enter("Youthful", (smi => smi.master.ApplyYouthfulModifiers())).Exit("NotYouthful", (smi => smi.master.RemoveModifiers(smi.master.youthAttributeModifiers))).ToggleStatusItem(DuplicantLifecycleStrings.AgingYouth, null).ToggleExpression(Db.Get().Expressions.Happy, null).Transition(this.middleaged, (smi => smi.master.IsMiddleAged()), UpdateRate.SIM_4000ms).Transition(this.immortal, (smi => smi.master.IsImmortal()), UpdateRate.SIM_1000ms).TagTransition(GameTags.Dead, this.dead);
     this.middleaged.Enter("MiddleAged", (smi => smi.master.ApplyMiddleAgedModifiers())).Exit("NotMiddleAged", (smi => smi.master.RemoveModifiers(smi.master.middleAttributeModifiers))).ToggleStatusItem(DuplicantLifecycleStrings.AgingMiddle, null).Transition(this.elderly, (smi => smi.master.IsElderly()), UpdateRate.SIM_4000ms).Transition(this.immortal, (smi => smi.master.IsImmortal()), UpdateRate.SIM_1000ms).TagTransition(GameTags.Dead, this.dead);
     this.elderly.Enter("Elderly", (smi => smi.master.ApplyElderlyModifiers())).Exit("NotElderly", (smi => smi.master.RemoveModifiers(smi.master.elderlyAttributeModifiers))).ToggleStatusItem(DuplicantLifecycleStrings.AgingElderly, null).ToggleExpression(Db.Get().Expressions.Tired, null).Transition(this.dying, (smi => smi.master.IsDying()), UpdateRate.SIM_4000ms).Transition(this.immortal, (smi => smi.master.IsImmortal()), UpdateRate.SIM_1000ms).TagTransition(GameTags.Dead, this.dead);
     this.dying.Enter("Dying", (smi => smi.master.ApplyDyingModifiers())).ToggleStatusItem(DuplicantLifecycleStrings.AgingDying, null).ToggleExpression(Db.Get().Expressions.Sick, null).Transition(this.dead, (smi => smi.master.TimeToDie()), UpdateRate.SIM_4000ms).Transition(this.immortal, (smi => smi.master.IsImmortal()), UpdateRate.SIM_1000ms).TagTransition(GameTags.Dead, this.dead);
     this.dead.Enter("Dead", (smi => smi.StopSM("Death")));
 }
Ejemplo n.º 12
0
            public override void InitializeStates(out StateMachine.BaseState default_state)
            {
                default_state = waiting;

                this.waiting
                .EventTransition(GameHashes.OnStorageChange, this.HasInput, (FusionReactor.StatesInstance smi) => smi.master.HasInput() && smi.master.operational.IsOperational)
                .EventTransition(GameHashes.OperationalChanged, this.waiting, (FusionReactor.StatesInstance smi) => smi.master.HasInput() && smi.master.operational.IsOperational);

                this.HasInput
                .EventTransition(GameHashes.OnStorageChange, this.HasInput, (FusionReactor.StatesInstance smi) => smi.master.HasInput() && smi.master.operational.IsOperational)
                .EventTransition(GameHashes.OperationalChanged, this.waiting, (FusionReactor.StatesInstance smi) => smi.master.HasInput() && smi.master.operational.IsOperational);
            }
Ejemplo n.º 13
0
 public static bool Prefix(ref StateMachine.BaseState default_state, SleepChoreMonitor __instance)
 {
     if (SleepNotIncludedConfigChecker.ForceLoad || CustomGameSettings.Instance.GetCurrentQualitySetting(SleepNotIncludedPatches.RemoveSleepEffects).id == "Enabled")
     {
         default_state = (StateMachine.BaseState)__instance.satisfied;
         __instance.root.TagTransition(GameTags.Minion, __instance.satisfied, false);
         return(false);
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 14
0
 public static bool Prefix(ref StateMachine.BaseState default_state, SuitSuffocationMonitor __instance)
 {
     if (OxygenNotNeededConfigChecker.ForceLoad || CustomGameSettings.Instance.GetCurrentQualitySetting(OxygenNotNeededPatches.WorldRequiresOxygen).id == "Enabled")
     {
         default_state = (StateMachine.BaseState)__instance.satisfied;
         __instance.root.TagTransition(GameTags.Minion, __instance.satisfied, false);
         return(false);
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 15
0
 public static bool Prefix(ref StateMachine.BaseState default_state, BladderMonitor __instance)
 {
     if (BladderNotIncludedConfigChecker.ForceLoad || CustomGameSettings.Instance.GetCurrentQualitySetting(BladderNotIncludedPatches.RemoveBladderEffects).id == "Enabled")
     {
         default_state = (StateMachine.BaseState)__instance.satisfied;
         __instance.root.TagTransition(GameTags.Minion, __instance.satisfied, false);
         __instance.satisfied.Transition(__instance.satisfied, (smi => smi.WantsToPee()), UpdateRate.SIM_4000ms);
         return(false);
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 16
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state   = (StateMachine.BaseState) this.waitingfordelivery;
     this.statusItem = new StatusItem(nameof(VesselInserter), string.Empty, string.Empty, string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, 129022);
     this.statusItem.resolveStringCallback = (Func <string, object, string>)((str, data) =>
     {
         VesselInserter bottleEmptier = (VesselInserter)data;
         if ((UnityEngine.Object)bottleEmptier == (UnityEngine.Object)null)
         {
             return(str);
         }
         if (bottleEmptier.allowManualPumpingStationFetching)
         {
             return((string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.ALLOWED.NAME);
         }
         return((string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.DENIED.NAME);
     });
     this.statusItem.resolveTooltipCallback = (Func <string, object, string>)((str, data) =>
     {
         VesselInserter bottleEmptier = (VesselInserter)data;
         if ((UnityEngine.Object)bottleEmptier == (UnityEngine.Object)null)
         {
             return(str);
         }
         if (bottleEmptier.allowManualPumpingStationFetching)
         {
             return((string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.ALLOWED.TOOLTIP);
         }
         return((string)BUILDING.STATUSITEMS.BOTTLE_EMPTIER.DENIED.TOOLTIP);
     });
     this.root.ToggleStatusItem(this.statusItem, (Func <VesselInserter.StatesInstance, object>)(smi => (object)smi.master));
     this.unoperational.TagTransition(GameTags.Operational, this.waitingfordelivery, false).PlayAnim("off");
     this.waitingfordelivery.TagTransition(GameTags.Operational, this.unoperational, true)
     .EventTransition(GameHashes.OnStorageChange, this.emptying, (StateMachine <VesselInserter.States, VesselInserter.StatesInstance, VesselInserter, object> .Transition.ConditionCallback)
                          (smi => smi.GetComponent <Storage>().MassStored() != 0))
     .Enter("CreateChore", (StateMachine <VesselInserter.States, VesselInserter.StatesInstance, VesselInserter, object> .State.Callback)(smi => smi.CreateChore()))
     .Exit("CancelChore", (StateMachine <VesselInserter.States, VesselInserter.StatesInstance, VesselInserter, object> .State.Callback)(smi => smi.CancelChore()))
     .PlayAnim("on");
     this.emptying.TagTransition(GameTags.Operational, this.unoperational, true)
     //.Update("CheckBonusDeliveries", (System.Action<VesselInserter.StatesInstance, float>)((smi, dt) => smi.CheckChore(dt)))
     .EventTransition(GameHashes.OnStorageChange, this.waitingfordelivery,
                      (StateMachine <VesselInserter.States, VesselInserter.StatesInstance, VesselInserter, object> .Transition.ConditionCallback)
                          (smi => smi.GetComponent <Storage>().MassStored() == 0));
     //.Enter("StartMeter", (StateMachine<VesselInserter.States, VesselInserter.StatesInstance, VesselInserter, object>.State.Callback)
     //	(smi => smi.SetStorageZeroes()));
     //.Update("Emit", (System.Action<VesselInserter.StatesInstance, float>)
     //	((smi, dt) => smi.Emit(dt)), UpdateRate.SIM_200ms, false).PlayAnim("working_loop", KAnim.PlayMode.Loop);
 }
Ejemplo n.º 17
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.disabled;
     this.root.EventTransition(GameHashes.OperationalChanged, this.disabled, (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .Transition.ConditionCallback)(smi => !smi.master.operational.IsOperational));
     this.disabled.EventTransition(GameHashes.OperationalChanged, this.waiting, (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .Transition.ConditionCallback)(smi => smi.master.operational.IsOperational));
     this.waiting.Enter("Waiting", (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .State.Callback)
                            (smi => smi.master.operational.SetActive(false, false))).EventTransition(GameHashes.OnStorageChange, this.converting,
                                                                                                     (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .Transition.ConditionCallback)
                                                                                                         (smi => smi.master.CheckEnoughMassToConvert()));
     this.converting.Enter("Ready", (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .State.Callback)
                               (smi => smi.master.operational.SetActive(true, false)))
     .Transition(this.waiting, (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .Transition.ConditionCallback)
                     (smi => !smi.master.CheckCanConvert()), UpdateRate.SIM_200ms)
     .EventHandler(GameHashes.OnStorageChange, (StateMachine <EthanolDistillery.States, EthanolDistillery.StatesInstance, EthanolDistillery, object> .State.Callback)
                       (smi => smi.TryEmit()));
 }
Ejemplo n.º 18
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = this.disabled;
     this.root.EventTransition(GameHashes.OperationalChanged, this.disabled, (CoalComp.StatesInstance smi) => !smi.master.operational.IsOperational);
     this.disabled.EventTransition(GameHashes.OperationalChanged, this.waiting, (CoalComp.StatesInstance smi) => smi.master.operational.IsOperational);
     this.waiting.EventTransition(GameHashes.OnStorageChange, this.converting, (CoalComp.StatesInstance smi) => smi.master.GetComponent <ElementConverter>().HasEnoughMassToStartConverting());
     this.converting.Enter(delegate(CoalComp.StatesInstance smi)
     {
         smi.master.operational.SetActive(true, false);
     }).Exit(delegate(CoalComp.StatesInstance smi)
     {
         smi.master.operational.SetActive(false, false);
     }).Transition(this.waiting, (CoalComp.StatesInstance smi) => !smi.master.GetComponent <ElementConverter>().CanConvertAtAll(), UpdateRate.SIM_200ms).EventHandler(GameHashes.OnStorageChange, delegate(CoalComp.StatesInstance smi)
     {
         smi.TryEmit();
     });
 }
Ejemplo n.º 19
0
            public override void InitializeStates(out StateMachine.BaseState default_state)
            {
                default_state     = this.offline;
                base.serializable = false;
                this.statusItemUnderMassLiquid = new StatusItem("statusItemUnderMassLiquid", BUILDING.STATUSITEMS.HEATINGSTALLEDLOWMASS_LIQUID.NAME, BUILDING.STATUSITEMS.HEATINGSTALLEDLOWMASS_LIQUID.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, 129022);
                this.statusItemUnderMassGas    = new StatusItem("statusItemUnderMassGas", BUILDING.STATUSITEMS.HEATINGSTALLEDLOWMASS_GAS.NAME, BUILDING.STATUSITEMS.HEATINGSTALLEDLOWMASS_GAS.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, 129022);
                this.statusItemOverTemp        = new StatusItem("statusItemOverTemp", BUILDING.STATUSITEMS.HEATINGSTALLEDHOTENV.NAME, BUILDING.STATUSITEMS.HEATINGSTALLEDHOTENV.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, 129022);
                this.statusItemOverTemp.resolveStringCallback = delegate(string str, object obj)
                {
                    ThermalReducer.StatesInstance statesInstance = (ThermalReducer.StatesInstance)obj;
                    return(string.Format(str, GameUtil.GetFormattedTemperature(statesInstance.master.TargetTemperature, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)));
                };
                this.offline.EventTransition(GameHashes.OperationalChanged, this.online, (ThermalReducer.StatesInstance smi) => smi.master.operational.IsOperational);
                this.online.EventTransition(GameHashes.OperationalChanged, this.offline, (ThermalReducer.StatesInstance smi) => !smi.master.operational.IsOperational).DefaultState(this.online.heating).Update("spaceheater_online", delegate(ThermalReducer.StatesInstance smi, float dt)
                {
                    switch (smi.master.MonitorHeating(dt))
                    {
                    case ThermalReducer.MonitorState.ReadyToHeat:
                        smi.GoTo(this.online.heating);
                        break;

                    case ThermalReducer.MonitorState.TooHot:
                        smi.GoTo(this.online.overtemp);
                        break;

                    case ThermalReducer.MonitorState.NotEnoughLiquid:
                        smi.GoTo(this.online.undermassliquid);
                        break;

                    case ThermalReducer.MonitorState.NotEnoughGas:
                        smi.GoTo(this.online.undermassgas);
                        break;
                    }
                }, UpdateRate.SIM_4000ms, false);
                this.online.heating.Enter(delegate(ThermalReducer.StatesInstance smi)
                {
                    smi.master.operational.SetActive(true, false);
                }).Exit(delegate(ThermalReducer.StatesInstance smi)
                {
                    smi.master.operational.SetActive(false, false);
                });
                this.online.undermassliquid.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemUnderMassLiquid, null);
                this.online.undermassgas.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemUnderMassGas, null);
                this.online.overtemp.ToggleCategoryStatusItem(Db.Get().StatusItemCategories.Heat, this.statusItemOverTemp, null);
            }
Ejemplo n.º 20
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.off;
     this.off.PlayAnim("off").EventTransition(GameHashes.OperationalChanged, (GameStateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State) this.on, (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .Transition.ConditionCallback)(smi => smi.GetComponent <Operational>().IsOperational));
     this.on.DefaultState(this.on.pre).Enter("ToggleActive", (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State.Callback)(smi => smi.GetComponent <Operational>().SetActive(true))).Exit("ToggleActive", (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State.Callback)(smi => smi.GetComponent <Operational>().SetActive(false)));
     this.on.pre.PlayAnim("on_pre").OnAnimQueueComplete(this.on.loop);
     this.on.loop.PlayAnim("on", KAnim.PlayMode.Loop).EventTransition(GameHashes.OperationalChanged, this.on.pst, (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsOperational)).TagTransition(GameTags.Detecting, (GameStateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State) this.on.working);
     this.on.pst.PlayAnim("on_pst").OnAnimQueueComplete(this.off);
     this.on.working.DefaultState(this.on.working.pre).Enter("ToggleActive", (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State.Callback)(smi =>
     {
         smi.GetComponent <Operational>().SetActive(true);
     })).Exit("ToggleActive", (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .State.Callback)(smi =>
     {
         smi.GetComponent <Operational>().SetActive(false);
     }));
     this.on.working.pre.PlayAnim("detect_pre").OnAnimQueueComplete(this.on.working.loop);
     this.on.working.loop.PlayAnim("detect_loop", KAnim.PlayMode.Loop).EventTransition(GameHashes.OperationalChanged, this.on.working.pst, (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsOperational)).EventTransition(GameHashes.ActiveChanged, this.on.working.pst, (StateMachine <RadioTowerStates, RadioTowerStates.Instance, IStateMachineTarget, RadioTowerStates.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsActive)).TagTransition(GameTags.Detecting, this.on.working.pst, true);
     this.on.working.pst.PlayAnim("detect_pst").OnAnimQueueComplete(this.on.loop);
 }
            public override void InitializeStates(out StateMachine.BaseState default_state)
            {
                default_state = (StateMachine.BaseState) this.calm;

                this.calm.
                Enter((StateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .State.Callback)(smi =>
                {
                    //PUtil.LogDebug("Critter enter calm state");
                    smi.gameObject.AddOrGet <FactionAlignment>().SwitchAlignment(FactionManager.FactionID.Pest);
                })).
                Update("evaluate_aggroLevel_calm", (System.Action <AggroMonitor.Instance, float>)((smi, dt) => smi.EvaluateAggroLevel()),
                       UpdateRate.SIM_200ms).ParamTransition <bool>((StateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .Parameter <bool>) this.isAggro,
                                                                    this.aggro, GameStateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .IsTrue);

                this.aggro.
                Enter((StateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .State.Callback)(smi =>
                {
                    //PUtil.LogDebug("Critter enter aggro state");
                    smi.gameObject.AddOrGet <FactionAlignment>().SwitchAlignment(FactionManager.FactionID.Hostile);
                })).
                ToggleStatusItem((String)DangerousWorldStrings.AGGRO_CRITTER_AGGRO_TITLE, (String)DangerousWorldStrings.AGGRO_CRITTER_AGGRO_DESC).
                Update("evaluate_aggroLevel_aggro", (System.Action <AggroMonitor.Instance, float>)((smi, dt) => smi.EvaluateAggroLevel()),
                       UpdateRate.SIM_200ms).ParamTransition <bool>((StateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .Parameter <bool>) this.isAggro,
                                                                    this.calm, GameStateMachine <AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def> .IsFalse);

                this.aggro.attack.

                /*Enter((StateMachine<AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def>.State.Callback)(smi =>
                 * {
                 *  PUtil.LogDebug(("Critter attack: {0}").F(smi.MainFiend.name));
                 * })).*/
                ToggleStatusItem((String)DangerousWorldStrings.AGGRO_CRITTER_ATTACK_TITLE, (String)DangerousWorldStrings.AGGRO_CRITTER_ATTACK_DESC).
                Update("evaluate_aggroLevel_aggro", (System.Action <AggroMonitor.Instance, float>)((smi, dt) => smi.EvaluateAggroLevel()), UpdateRate.SIM_200ms);

                this.aggro.subdued.

                /*Enter((StateMachine<AggroMonitor, AggroMonitor.Instance, IStateMachineTarget, AggroMonitor.Def>.State.Callback)(smi =>
                 * {
                 *  PUtil.LogDebug(("Critter subdued: {0}").F(smi.MainFiend.name));
                 * })).*/
                ToggleStatusItem((String)DangerousWorldStrings.AGGRO_CRITTER_SUBDUED_TITLE, (String)DangerousWorldStrings.AGGRO_CRITTER_SUBDUED_DESC).
                Update("evaluate_aggroLevel_aggro", (System.Action <AggroMonitor.Instance, float>)((smi, dt) => smi.EvaluateAggroLevel()), UpdateRate.SIM_200ms);
            }
Ejemplo n.º 22
0
        public override void InitializeStates(out StateMachine.BaseState default_state)
        {
            default_state = EnoughLight;

            root.Update(CheckLightLevel);

            EnoughLight.ParamTransition(LightLevel, Dark, (smi, lux) => lux < DarkThreshold);

            Dark
            .Enter(smi => smi.Effects.Add(Effects.DarkId, false))
            .Exit(smi => smi.Effects.Remove(Effects.DarkId))
            .ParamTransition(LightLevel, PitchBlack, IsZero)
            .ParamTransition(LightLevel, EnoughLight, (smi, lux) => lux >= DarkThreshold);

            PitchBlack
            .Enter(smi => smi.Effects.Add(Effects.PitchBlackId, false))
            .Exit(smi => smi.Effects.Remove(Effects.PitchBlackId))
            .ParamTransition(LightLevel, Dark, IsGTZero);
        }
Ejemplo n.º 23
0
            public override void InitializeStates(out StateMachine.BaseState default_state)
            {
                this.serializable      = true;
                default_state          = (StateMachine.BaseState) this.waiting;
                this.statusItemCooling = new StatusItem("cooling", (string)CREATURES.STATUSITEMS.COOLING.NAME, (string)CREATURES.STATUSITEMS.COOLING.TOOLTIP, string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, 129022);

                this.waiting
                //.Enter("Waiting", (StateMachine<CloudyBreath.States, CloudyBreath.StatesInstance, CloudyBreath, object>.State.Callback)
                //(smi => smi.master.operational.SetActive(false, false)))
                .EventTransition(GameHashes.OnStorageChange, this.cooling,
                                 (StateMachine <CloudyBreath.States, CloudyBreath.StatesInstance, CloudyBreath, object> .Transition.ConditionCallback)
                                     (smi => smi.master.CheckCanCool()));
                this.cooling
                //.Enter("Cooling", (StateMachine<CloudyBreath.States, CloudyBreath.StatesInstance, CloudyBreath, object>.State.Callback)
                //(smi => smi.master.operational.SetActive(true, false)))
                .Transition(this.waiting, (StateMachine <CloudyBreath.States, CloudyBreath.StatesInstance, CloudyBreath, object> .Transition.ConditionCallback)
                                (smi => !smi.master.CheckCanCool()), UpdateRate.SIM_200ms)
                .EventHandler(GameHashes.OnStorageChange, (StateMachine <CloudyBreath.States, CloudyBreath.StatesInstance, CloudyBreath, object> .State.Callback)
                                  (smi => smi.master.Cool()));
            }
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.disabled;
     this.disabled.EventTransition(GameHashes.ActiveChanged, this.converting, (StateMachine <GermScrubConverter.States, GermScrubConverter.StatesInstance, GermScrubConverter, object> .Transition.ConditionCallback)(smi =>
     {
         if (!((UnityEngine.Object)smi.master.operational == (UnityEngine.Object)null))
         {
             return(smi.master.operational.IsActive);
         }
         return(true);
     }));
     this.converting.Enter("AddStatusItems", (StateMachine <GermScrubConverter.States, GermScrubConverter.StatesInstance, GermScrubConverter, object> .State.Callback)(smi => smi.AddStatusItems())).Exit("RemoveStatusItems", (StateMachine <GermScrubConverter.States, GermScrubConverter.StatesInstance, GermScrubConverter, object> .State.Callback)(smi => smi.RemoveStatusItems())).EventTransition(GameHashes.ActiveChanged, this.disabled, (StateMachine <GermScrubConverter.States, GermScrubConverter.StatesInstance, GermScrubConverter, object> .Transition.ConditionCallback)(smi =>
     {
         if ((UnityEngine.Object)smi.master.operational != (UnityEngine.Object)null)
         {
             return(!smi.master.operational.IsActive);
         }
         return(false);
     })).Update("ConvertMass", (Action <GermScrubConverter.StatesInstance, float>)((smi, dt) => smi.master.ConvertMass()), UpdateRate.SIM_1000ms, true);
 }
Ejemplo n.º 25
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.off;
     this.root.Update("RefreshConsuming", ((smi, dt) => smi.master.UpdateConsuming()), UpdateRate.SIM_1000ms, false);
     this.off
     .PlayAnim("off")
     .EventTransition(GameHashes.OperationalChanged, this.idle, (smi => smi.GetComponent <Operational>().IsOperational));
     this.idle
     .PlayAnim("on")
     .EventTransition(GameHashes.OperationalChanged, this.off, (smi => !smi.GetComponent <Operational>().IsOperational))
     .ParamTransition <bool>(this.consuming, this.working, IsTrue);
     this.working
     .PlayAnim("working_pre")
     .PlayAnim("working_loop", KAnim.PlayMode.Loop)
     .EventTransition(GameHashes.OperationalChanged, this.off, (smi => !smi.GetComponent <Operational>().IsOperational))
     .ParamTransition <bool>(this.consuming, this.post, IsFalse);
     this.post
     .PlayAnim("working_pst")
     .OnAnimQueueComplete(this.idle);
 }
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.off;
     this.off.PlayAnim("off").EventTransition(GameHashes.OperationalChanged, (GameStateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State) this.on, (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .Transition.ConditionCallback)(smi => smi.GetComponent <Operational>().IsOperational));
     this.on.DefaultState(this.on.pre).ToggleStatusItem(Db.Get().BuildingStatusItems.DetectorScanning).Enter("ToggleActive", (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State.Callback)(smi => smi.GetComponent <Operational>().SetActive(true))).Exit("ToggleActive", (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State.Callback)(smi => smi.GetComponent <Operational>().SetActive(false))).Update("Scan Sky", (System.Action <AdvancedSpaceScannerController.Instance, float>)((smi, dt) => smi.ScanSky()));
     this.on.pre.PlayAnim("on_pre").OnAnimQueueComplete(this.on.loop);
     this.on.loop.PlayAnim("on", KAnim.PlayMode.Loop).EventTransition(GameHashes.OperationalChanged, this.on.pst, (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsOperational)).TagTransition(GameTags.Detecting, (GameStateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State) this.on.working);
     this.on.pst.PlayAnim("on_pst").OnAnimQueueComplete(this.off);
     this.on.working.DefaultState(this.on.working.pre).ToggleStatusItem(Db.Get().BuildingStatusItems.IncomingMeteors).Enter("ToggleActive", (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State.Callback)(smi =>
     {
         smi.GetComponent <Operational>().SetActive(true);
         smi.SetLogicSignal(true);
     })).Exit("ToggleActive", (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State.Callback)(smi =>
     {
         smi.GetComponent <Operational>().SetActive(false);
         smi.SetLogicSignal(false);
     }));
     this.on.working.pre.PlayAnim("detect_pre").OnAnimQueueComplete(this.on.working.loop);
     this.on.working.loop.PlayAnim("detect_loop", KAnim.PlayMode.Loop).EventTransition(GameHashes.OperationalChanged, this.on.working.pst, (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsOperational)).EventTransition(GameHashes.ActiveChanged, this.on.working.pst, (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .Transition.ConditionCallback)(smi => !smi.GetComponent <Operational>().IsActive)).TagTransition(GameTags.Detecting, this.on.working.pst, true);
     this.on.working.pst.PlayAnim("detect_pst").OnAnimQueueComplete(this.on.loop).Enter("Reroll", (StateMachine <AdvancedSpaceScannerController, AdvancedSpaceScannerController.Instance, IStateMachineTarget, AdvancedSpaceScannerController.Def> .State.Callback)(smi => smi.RerollAccuracy()));
 }
Ejemplo n.º 27
0
        /// <summary>
        /// Transpiles InitializeStates to remove the FastUpdate updater.
        /// </summary>
        internal static bool Prefix(ref StateMachine.BaseState default_state,
                                    ReachabilityMonitor __instance)
        {
            // Existing states
            ReachabilityMonitorState reachable = __instance.reachable, unreachable =
                __instance.unreachable;
            var param = __instance.isReachable;
            // New state: avoid an extra event on startup by only transitioning after the
            // first successful reachability update
            var tbd = __instance.CreateState("tbd");

            default_state           = tbd;
            __instance.serializable = StateMachine.SerializeType.Never;
            tbd.ParamTransition(param, unreachable, ReachabilityMonitor.IsFalse).
            ParamTransition(param, reachable, ReachabilityMonitor.IsTrue);
            reachable.ToggleTag(GameTags.Reachable).
            Enter("TriggerEvent", TriggerEvent).
            ParamTransition(param, unreachable, ReachabilityMonitor.IsFalse);
            unreachable.Enter("TriggerEvent", TriggerEvent).
            ParamTransition(param, reachable, ReachabilityMonitor.IsTrue);
            return(false);
        }
Ejemplo n.º 28
0
        public override void InitializeStates(out StateMachine.BaseState default_state)
        {
            var darkThreshold       = LightsOutMod.ConfigManager.Config.DarkLuxThreshold;
            var pitchBlackThreshold = LightsOutMod.ConfigManager.Config.PitchBlackLuxThreshold;

            default_state = EnoughLight;

            root.Update(CheckLightLevel);

            EnoughLight.ParamTransition(LightLevel, Dark, (smi, lux) => lux < darkThreshold);

            Dark
            .Enter(smi => smi.Effects.Add(Effects.DarkId, false))
            .Exit(smi => smi.Effects.Remove(Effects.DarkId))
            .ParamTransition(LightLevel, PitchBlack, (smi, lux) => lux <= pitchBlackThreshold)
            .ParamTransition(LightLevel, EnoughLight, (smi, lux) => lux >= darkThreshold);

            PitchBlack
            .Enter(smi => smi.Effects.Add(Effects.PitchBlackId, false))
            .Exit(smi => smi.Effects.Remove(Effects.PitchBlackId))
            .ParamTransition(LightLevel, Dark, (smi, lux) => lux > pitchBlackThreshold);
        }
Ejemplo n.º 29
0
 public override void InitializeStates(out StateMachine.BaseState default_state)
 {
     default_state = (StateMachine.BaseState) this.empty;
     this.empty.PlayAnim("off").EventTransition(GameHashes.OnStorageChange, this.filling, (StateMachine <LiquidBottler.Controller, LiquidBottler.Controller.Instance, LiquidBottler, object> .Transition.ConditionCallback)(smi => smi.master.storage.IsFull()));
     this.filling.PlayAnim("working").OnAnimQueueComplete(this.ready);
     this.ready.EventTransition(GameHashes.OnStorageChange, this.pickup, (StateMachine <LiquidBottler.Controller, LiquidBottler.Controller.Instance, LiquidBottler, object> .Transition.ConditionCallback)(smi => !smi.master.storage.IsFull())).Enter((StateMachine <LiquidBottler.Controller, LiquidBottler.Controller.Instance, LiquidBottler, object> .State.Callback)(smi =>
     {
         smi.master.storage.allowItemRemoval = true;
         foreach (GameObject go in smi.master.storage.items)
         {
             go.Trigger(-778359855, (object)smi.master.storage);
         }
     })).Exit((StateMachine <LiquidBottler.Controller, LiquidBottler.Controller.Instance, LiquidBottler, object> .State.Callback)(smi =>
     {
         smi.master.storage.allowItemRemoval = false;
         foreach (GameObject go in smi.master.storage.items)
         {
             go.Trigger(-778359855, (object)smi.master.storage);
         }
     }));
     this.pickup.PlayAnim("pick_up").OnAnimQueueComplete(this.empty);
 }
Ejemplo n.º 30
0
        public override void InitializeStates(out StateMachine.BaseState default_state)
        {
            default_state = this.satisfiedState;
            // Create and configure the light effect
            Effect needLightEffect = new Effect("NeedLight", "Needs light", "This creature needs light to live properly.", 0f, true, true, true);

            needLightEffect.Add(new AttributeModifier(Db.Get().CritterAttributes.Metabolism.Id, -40f, CREATURES.MODIFIERS.UNHAPPY.NAME));
            needLightEffect.Add(new AttributeModifier(Db.Get().CritterAttributes.Happiness.Id, -10f, CREATURES.MODIFIERS.UNHAPPY.NAME));


            satisfiedState.Transition(needLightState, (CreatureLightMonitor.Instance smi) => smi.IsInDark(), UpdateRate.SIM_1000ms);
            needLightState.Transition(satisfiedState, (CreatureLightMonitor.Instance smi) => !smi.IsInDark(), UpdateRate.SIM_1000ms);

            satisfiedState.Enter(delegate(CreatureLightMonitor.Instance smi)
            {
            });

            needLightState.Enter(delegate(CreatureLightMonitor.Instance smi)
            {
            });

            // Toggle the effects when enter or ewit un needLight state
            needLightState.ToggleEffect((CreatureLightMonitor.Instance smi) => needLightEffect);
        }