Ejemplo n.º 1
0
 public static double GetDwarfWalkSpeed(double dtd, Dwarf d)
 {
     if (d.GetHoldingWorldObject() != null && d.GetHoldingWorldObject().Weight == Map.MapElementWeight.Heavy)
         return 0.003 * dtd;
     else
         return 0.005 * dtd;
 }
Ejemplo n.º 2
0
        private TaskState Move(Dwarf d, float dt, double dtd)
        {
            if (State == TaskState.NotActive)
            {
                if (d.MovePath.Count == 1)
                {

                }
                ChangeMoveTo(d);
            }

            // Improves hauling
            if (d.GetHoldingWorldObject() != null && d.GetHoldingWorldObject().Weight == MapElementWeight.Heavy)
                d.DidSomeHauling(dt);

            Vector2 addition = d.MoveToDirection * (float)DwarfRules.GetDwarfWalkSpeed(dtd, d);
            Vector2 newPosition = new Vector2(d.Position.X, d.Position.Y) + addition ;

            d.DistanceMoved = d.DistanceMoved + addition.Length();

            if (d.DistanceMoved >= d.MoveToDistance)
            {
                if (d.MovePath.Count == 0)
                    return TaskState.Success;
                d.ChangePosition(new Vector3(d.MoveTo.X, d.MoveTo.Y, 5));
                ChangeMoveTo(d);
            }
            else
                d.ChangePosition(new Vector3(newPosition.X, newPosition.Y, 5));

                return TaskState.Running;
        }
Ejemplo n.º 3
0
        private TaskState Consume(Dwarf d, float dt, double dtd)
        {
            if (d.GetHoldingWorldObject() == null)
                throw new Exception("Dwarf does not carry any tool");
            if (d.GetHoldingWorldObject().GetType().IsSubclassOf(typeof(Tool)) == false)
                throw new Exception("Dwarf tried to consume something that was not tool");

            Tool tool = (Tool)d.RemoveHoldingWorldObject();

            d.ConsumeTool(tool);

            return TaskState.PersonalSuccess;
        }