private TaskState Pickup(Dwarf d, float dt)
        {
            WorldObject obj = d.GetActionPasture().WithdrawWorldObject(d.GetActionWorldObject());
            d.CarryWorldObject(obj);

            return TaskState.Success;
        }
예제 #2
0
        private TaskState Work(Dwarf d, float dt)
        {
            if (State == TaskState.NotActive)
                d.TimeWorked = 0;

            d.GetActionPasture().WorkOnPasture(dt);

            d.TimeWorked += dt;

            if (d.TimeWorked >= 2000f)
            {
                d.TimeWorked = 0;
                TaskManager.AddTask(new WorkAtPastureTask(d.GetActionPasture()));
                return TaskState.Success;
            }
            else
                return TaskState.Running;
        }
예제 #3
0
        private TaskState FindPath(Dwarf d, float dt)
        {
            PastureSim fs = d.GetActionPasture();

            if (State == TaskState.NotActive)
            {
                AsyncPathfinding.RequestPathfinding(d, new Point((int)d.Position.X, (int)d.Position.Y), new Point(fs.CornerFence.X, fs.CornerFence.Y), null);
            }

            List<Path> paths = AsyncPathfinding.GetFinishedPaths(d);
            if (paths.Count == 0)
                return TaskState.Running;
            else
            {
                if (paths[0] == null)
                    return TaskState.Fail;

                d.SetMovePath(paths[0]);
                return TaskState.Success;
            }
        }