Пример #1
0
        public static Queue <Job> Haul(BaseCharacter character, Task task)
        {
            Queue <Job> jobs = new Queue <Job>();
            Job         let  = new Job(
                delegate {
                return(character.inventory.count > 0);
            }
                );

            let.OnEnd = delegate {
                Building building = (Building)Loki.map.GetTilableAt(task.targets.current.position, Layer.Building);
                Recipe   recipe   = building.recipe;

                if (recipe.needs[character.inventory.def].full == false)
                {
                    character.inventory.TransfertTo(recipe.needs[character.inventory.def], recipe.needs[character.inventory.def].max);
                }
            };

            HaulResult res = HaulJob.Get(character, task, character.inventory.free);

            jobs.Enqueue(res.get);

            List <Target> targetList = task.targets.ToList();

            foreach (Target target in targetList)
            {
                if (target.tilable is Stackable)
                {
                    res = HaulJob.Get(character, task, character.inventory.free);
                    jobs.Enqueue(res.get);
                }
                else
                {
                    jobs.Enqueue(let);
                }
            }

            return(jobs);
        }
Пример #2
0
 public HaulJob(BaseCharacter character, Task task) : base(character, task)
 {
     this.jobs = HaulJob.Haul(character, task);
     this.Next(false);
 }