Пример #1
0
        public ITask GenerateTask()
        {
            Queue <ITask> queuedTasks   = new Queue <ITask>();
            ITask         compositeTask = new CompositeTask(queuedTasks);

            ITask findFood = new FindTask <Food>(_owningAgent, (target, food) =>
            {
                // Called when food found. Create seek task.
                ITask seekFood = new SeekTask(_owningAgent, target, 3, () =>
                {
                    ITask intentTask = new IntentTask(_owningAgent, food, EIntent.EAT, () =>
                    {
                        EnergyCompontent foodEnergy = food.TakeEnergy(new EnergyCompontent
                        {
                            EnergyType = EEnergyType.NOURISHMENT
                        });
                        _owningAgent.GiveEnergy(new EnergyCompontent
                        {
                            EnergyType = EEnergyType.NOURISHMENT,
                            KiloJoules = foodEnergy.KiloJoules
                        });
                    });
                    queuedTasks.Enqueue(intentTask);
                });
                queuedTasks.Enqueue(seekFood);
            });

            queuedTasks.Enqueue(findFood);
            compositeTask.Start();

            return(compositeTask);
        }
Пример #2
0
 public void GiveEnergy(EnergyCompontent energy)
 {
     if (energy.EnergyType == EEnergyType.NOURISHMENT)
     {
         _kiloJouleEnergy += energy.KiloJoules;
     }
 }
Пример #3
0
 public EnergyCompontent TakeEnergy(EnergyCompontent energy)
 {
     if (energy.EnergyType == EEnergyType.NOURISHMENT)
     {
         // Can not currently eat people
     }
     return(new EnergyCompontent());
 }
Пример #4
0
        public EnergyCompontent TakeEnergy(EnergyCompontent energy)
        {
            // Lets say that 10 calories can be eaten in 1 seconds.
            float caloriesConsumed = Time.deltaTime * 10;

            if (caloriesConsumed > _caloriesLeft)
            {
                caloriesConsumed = _caloriesLeft;
            }

            _caloriesLeft -= caloriesConsumed;

            return(new EnergyCompontent
            {
                EnergyType = EEnergyType.NOURISHMENT,
                KiloJoules = caloriesConsumed * 4.184f
            });
        }
Пример #5
0
 public void GiveEnergy(EnergyCompontent energy)
 {
     // Food cannot recieve energy
 }