Esempio n. 1
0
 public void Sim1000ms(float dt)
 {
     if (!((UnityEngine.Object) this == (UnityEngine.Object)null))
     {
         if ((UnityEngine.Object)navigator == (UnityEngine.Object)null)
         {
             navigator = GetComponent <Navigator>();
         }
         if (!((UnityEngine.Object)navigator != (UnityEngine.Object)null) || navigator.IsMoving())
         {
             if ((UnityEngine.Object)choreDriver == (UnityEngine.Object)null)
             {
                 choreDriver = GetComponent <ChoreDriver>();
             }
             if ((UnityEngine.Object)choreDriver != (UnityEngine.Object)null)
             {
                 Chore currentChore = choreDriver.GetCurrentChore();
                 if (currentChore != null && currentChore is FetchAreaChore)
                 {
                     MinionResume component = GetComponent <MinionResume>();
                     if ((UnityEngine.Object)component != (UnityEngine.Object)null)
                     {
                         component.AddExperienceWithAptitude(Db.Get().SkillGroups.Hauling.Id, dt, SKILLS.ALL_DAY_EXPERIENCE);
                     }
                 }
             }
         }
     }
 }
        public void EnableRedAlert()
        {
            ChoreDriver component = GetComponent <ChoreDriver>();

            if ((Object)component != (Object)null)
            {
                Chore currentChore = component.GetCurrentChore();
                if (currentChore != null)
                {
                    bool flag = false;
                    for (int i = 0; i < currentChore.GetPreconditions().Count; i++)
                    {
                        Chore.PreconditionInstance preconditionInstance = currentChore.GetPreconditions()[i];
                        if (preconditionInstance.id == ChorePreconditions.instance.IsNotRedAlert.id)
                        {
                            flag = true;
                        }
                    }
                    if (flag)
                    {
                        component.StopChore();
                    }
                }
            }
        }
Esempio n. 3
0
 public Instance(IStateMachineTarget master, Def def)
     : base(master, def)
 {
     alignment             = master.GetComponent <FactionAlignment>();
     navigator             = master.GetComponent <Navigator>();
     choreDriver           = master.GetComponent <ChoreDriver>();
     refreshThreatDelegate = RefreshThreat;
 }
Esempio n. 4
0
 protected override void OnSpawn()
 {
     base.OnSpawn();
     consumer = gameObject.GetComponent <ChoreConsumer>();
     driver   = gameObject.GetComponent <ChoreDriver>();
     Subscribe((int)GameHashes.ScheduleBlocksChanged, OnScheduleChanged);
     lastGroupID  = CurrentScheduleBlock;
     acquireChore = lastGroupID == FinishTasksPatches.FinishTask.Id;
     allowedChore = null;
 }
 public bool IsEating()
 {
     if ((Object)assigned != (Object)null && assigned.assignee != null)
     {
         GameObject targetGameObject = assigned.assignee.GetSoleOwner().GetComponent <MinionAssignablesProxy>().GetTargetGameObject();
         if ((bool)targetGameObject)
         {
             ChoreDriver component = targetGameObject.GetComponent <ChoreDriver>();
             return((Object)component != (Object)null && component.HasChore() && component.GetCurrentChore().choreType.urge == Db.Get().Urges.Eat);
         }
     }
     return(false);
 }
Esempio n. 6
0
 public override void InitializeStates(out BaseState default_state)
 {
     default_state     = Fresh;
     base.serializable = true;
     root.TagTransition(GameTags.Preserved, Preserved, false).TagTransition(GameTags.Entombed, Preserved, false);
     Fresh.ToggleStatusItem(Db.Get().CreatureStatusItems.Fresh, (Instance smi) => smi).ParamTransition(rotParameter, Stale_Pre, (Instance smi, float p) => p <= smi.def.spoilTime - (smi.def.spoilTime - smi.def.staleTime)).FastUpdate("Rot", rotCB, UpdateRate.SIM_1000ms, true);
     Preserved.TagTransition(PRESERVED_TAGS, Fresh, true).Enter("RefreshModifiers", delegate(Instance smi)
     {
         smi.RefreshModifiers(0f);
     });
     Stale_Pre.Enter(delegate(Instance smi)
     {
         smi.GoTo(Stale);
     });
     Stale.ToggleStatusItem(Db.Get().CreatureStatusItems.Stale, (Instance smi) => smi).ParamTransition(rotParameter, Fresh, (Instance smi, float p) => p > smi.def.spoilTime - (smi.def.spoilTime - smi.def.staleTime)).ParamTransition(rotParameter, Spoiled, GameStateMachine <Rottable, Instance, IStateMachineTarget, Def> .IsLTEZero)
     .FastUpdate("Rot", rotCB, UpdateRate.SIM_1000ms, false);
     Spoiled.Enter(delegate(Instance smi)
     {
         GameObject gameObject = Scenario.SpawnPrefab(Grid.PosToCell(smi.master.gameObject), 0, 0, "RotPile", Grid.SceneLayer.Ore);
         gameObject.gameObject.GetComponent <KSelectable>().SetName(UI.GAMEOBJECTEFFECTS.ROTTEN + " " + smi.master.gameObject.GetProperName());
         gameObject.transform.SetPosition(smi.master.transform.GetPosition());
         gameObject.GetComponent <PrimaryElement>().Mass        = smi.master.GetComponent <PrimaryElement>().Mass;
         gameObject.GetComponent <PrimaryElement>().Temperature = smi.master.GetComponent <PrimaryElement>().Temperature;
         gameObject.SetActive(true);
         PopFXManager.Instance.SpawnFX(PopFXManager.Instance.sprite_Resource, ITEMS.FOOD.ROTPILE.NAME, gameObject.transform, 1.5f, false);
         Edible component = smi.GetComponent <Edible>();
         if ((Object)component != (Object)null)
         {
             if ((Object)component.worker != (Object)null)
             {
                 ChoreDriver component2 = component.worker.GetComponent <ChoreDriver>();
                 if ((Object)component2 != (Object)null && component2.GetCurrentChore() != null)
                 {
                     component2.GetCurrentChore().Fail("food rotted");
                 }
             }
             ReportManager.Instance.ReportValue(ReportManager.ReportType.CaloriesCreated, 0f - component.Calories, StringFormatter.Replace(UI.ENDOFDAYREPORT.NOTES.ROTTED, "{0}", smi.gameObject.GetProperName()), UI.ENDOFDAYREPORT.NOTES.ROTTED_CONTEXT);
         }
         Util.KDestroyGameObject(smi.gameObject);
     });
 }
    public ChoreConsumerState(ChoreConsumer consumer)
    {
        this.consumer       = consumer;
        navigator           = consumer.GetComponent <Navigator>();
        prefabid            = consumer.GetComponent <KPrefabID>();
        ownable             = consumer.GetComponent <Ownable>();
        gameObject          = consumer.gameObject;
        solidTransferArm    = consumer.GetComponent <SolidTransferArm>();
        hasSolidTransferArm = ((Object)solidTransferArm != (Object)null);
        resume        = consumer.GetComponent <MinionResume>();
        choreDriver   = consumer.GetComponent <ChoreDriver>();
        schedulable   = consumer.GetComponent <Schedulable>();
        traits        = consumer.GetComponent <Traits>();
        choreProvider = consumer.GetComponent <ChoreProvider>();
        MinionIdentity component = consumer.GetComponent <MinionIdentity>();

        if ((Object)component != (Object)null)
        {
            if (component.assignableProxy == null)
            {
                component.assignableProxy = MinionAssignablesProxy.InitAssignableProxy(component.assignableProxy, component);
            }
            assignables = component.GetSoleOwner();
            equipment   = component.GetEquipment();
        }
        else
        {
            assignables = consumer.GetComponent <Assignables>();
            equipment   = consumer.GetComponent <Equipment>();
        }
        storage            = consumer.GetComponent <Storage>();
        consumableConsumer = consumer.GetComponent <ConsumableConsumer>();
        worker             = consumer.GetComponent <Worker>();
        selectable         = consumer.GetComponent <KSelectable>();
        if ((Object)schedulable != (Object)null)
        {
            int blockIdx = Schedule.GetBlockIdx();
            scheduleBlock = schedulable.GetSchedule().GetBlock(blockIdx);
        }
    }
Esempio n. 8
0
 public Instance(IStateMachineTarget master)
     : base(master)
 {
     choreDriver = master.GetComponent <ChoreDriver>();
 }
Esempio n. 9
0
        public bool IsEating()
        {
            ChoreDriver component = base.master.GetComponent <ChoreDriver>();

            return(component.HasChore() && component.GetCurrentChore().choreType.urge == Db.Get().Urges.Eat);
        }
 public Instance(IStateMachineTarget master)
     : base(master)
 {
     bladder     = Db.Get().Amounts.Bladder.Lookup(master.gameObject);
     choreDriver = GetComponent <ChoreDriver>();
 }