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; }
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; }
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; }