コード例 #1
0
        public void Update(GameTime gameTime)
        {
            _camera.Update(gameTime);
            SM.Update(gameTime);
            _editor.Update();
            EC.Update();
            _man.Update(gameTime);

            if (InputHelper.IsNewKeyPress(Keys.H))
            {
                // harvest
                foreach (KeyValuePair <int, BaseEntity> keypair in EC.All)
                {
                    Harvestable beh = keypair.Value.GetProperty <Harvestable>();

                    if (beh != null)
                    {
                        beh.Harvest(keypair.Value);
                    }

                    if (keypair.Value.Schematic == EntitySchematics.Tree)
                    {
                        break;
                    }
                }
            }
        }
コード例 #2
0
 public void Update()
 {
     inventory.AddToInventory(harvestable.Harvest(), harvestable.amountPerCollection);
     if (harvestable.remainingAmount <= 0)
     {
         Object.Destroy(harvestable);
     }
     state = ActionState.Done;
 }
コード例 #3
0
 public override void InitializeStates(out BaseState default_state)
 {
     default_state     = growing;
     base.serializable = true;
     growing.EventTransition(GameHashes.Wilt, stalled, (StatesInstance smi) => smi.IsWilting()).EventTransition(GameHashes.CropSleep, stalled, (StatesInstance smi) => smi.IsSleeping()).EventTransition(GameHashes.PlanterStorage, growing.planted, (StatesInstance smi) => smi.master.rm.Replanted)
     .EventTransition(GameHashes.PlanterStorage, growing.wild, (StatesInstance smi) => !smi.master.rm.Replanted)
     .TriggerOnEnter(GameHashes.Grow, null)
     .Update("CheckGrown", delegate(StatesInstance smi, float dt)
     {
         if (smi.ReachedNextHarvest())
         {
             smi.GoTo(grown);
         }
     }, UpdateRate.SIM_4000ms, false)
     .ToggleStatusItem(Db.Get().CreatureStatusItems.Growing, (StatesInstance smi) => smi.master.GetComponent <Growing>())
     .Enter(delegate(StatesInstance smi)
     {
         State state = (!smi.master.rm.Replanted) ? growing.wild : growing.planted;
         smi.GoTo(state);
     });
     growing.wild.ToggleAttributeModifier("GrowingWild", (StatesInstance smi) => smi.wildGrowingRate, null);
     growing.planted.ToggleAttributeModifier("Growing", (StatesInstance smi) => smi.baseGrowingRate, null);
     stalled.EventTransition(GameHashes.WiltRecover, growing, (StatesInstance smi) => smi.CanExitStalled()).EventTransition(GameHashes.CropWakeUp, growing, (StatesInstance smi) => smi.CanExitStalled());
     grown.DefaultState(grown.idle).TriggerOnEnter(GameHashes.Grow, null).Update("CheckNotGrown", delegate(StatesInstance smi, float dt)
     {
         if (!smi.ReachedNextHarvest())
         {
             smi.GoTo(growing);
         }
     }, UpdateRate.SIM_4000ms, false)
     .ToggleAttributeModifier("GettingOld", (StatesInstance smi) => smi.getOldRate, null)
     .Enter(delegate(StatesInstance smi)
     {
         smi.ClampGrowthToHarvest();
     })
     .Exit(delegate(StatesInstance smi)
     {
         smi.master.oldAge.SetValue(0f);
     });
     grown.idle.Update("CheckNotGrown", delegate(StatesInstance smi, float dt)
     {
         if (smi.master.shouldGrowOld && smi.master.oldAge.value >= smi.master.oldAge.GetMax())
         {
             smi.GoTo(grown.try_self_harvest);
         }
     }, UpdateRate.SIM_4000ms, false);
     grown.try_self_harvest.Enter(delegate(StatesInstance smi)
     {
         Harvestable component = smi.master.GetComponent <Harvestable>();
         if ((bool)component && component.CanBeHarvested)
         {
             bool harvestWhenReady = component.harvestDesignatable.HarvestWhenReady;
             component.ForceCancelHarvest(null);
             component.Harvest();
             if (harvestWhenReady && (Object)component != (Object)null)
             {
                 component.harvestDesignatable.SetHarvestWhenReady(true);
             }
         }
         smi.master.maturity.SetValue(0f);
         smi.master.oldAge.SetValue(0f);
     }).GoTo(grown.idle);
 }