Ejemplo n.º 1
0
            protected override IEnumerable <Task> GetTasks()
            {
                string desc = $"{DescForTool(mineable.tool)} {mineable.def.name}.";

                yield return(new TaskGoTo(game, desc, PathCfg.Adjacent(tile.pos)));

                yield return(new TaskTimedLambda(
                                 game, desc, MinionAnim.Slash,
                                 mineable.tool, mineable.mineAmt,
                                 TaskTimed.FacePt(tile.pos),
                                 _ => 1,
                                 (task, workAmt) =>
                {
                    BB.Assert(task.work == activeWork);
                    mineable.mineAmt -= workAmt;
                    return true;
                },
                                 (task) =>
                {
                    BB.Assert(task.work == activeWork);
                    BB.Assert(mineable.mineAmt <= 0);

                    mineable.jobHandles.Remove(this);
                    game.RemoveBuilding(mineable);
                    game.DropItems(tile, mineable.GetMinedMaterials());
                }
                                 ));
            }