public override Selector ActivateBehavior(Dwarf d) { d.SetActionPasture(Pasture); d.SetActionWorldObject(FoodItem); return new CollectFoodFromPasture(); }
public override Selector ActivateBehavior(Dwarf d) { d.SetActionWorldObject(WorldObject) ; d.SetActionMapElement(WorldMap.Instance.GetMapElement(WorldObject.Position.X, WorldObject.Position.Y, WorldObject.Position.Z)); return new CollectGameObject(); }
public override Selector ActivateBehavior(Dwarf d) { DwarfConsole.WriteLine("Move crafted task taken: " + Obj.ElementType + " - dwarf: " +d.Id, ConsoleColor.Red); d.SetActionBuilding(CraftBuilding); d.SetActionWorldObject(Obj); return new MoveCraftToDepot(CraftBuilding); }
public override Selector ActivateBehavior(Dwarf d) { d.SetActionWorldObject(Crop); d.SetActionMapElement(WorldMap.Instance.GetMapElement(Crop.Position.X, Crop.Position.Y, Crop.Position.Z)); d.SetActionMapElementType(Crop.ElementType); return new HarvestCrop(); }
public override Selector ActivateBehavior(Dwarf d) { d.SetActionWorldObject(WorldObject); d.SetActionMapElementType(WorldObject.ElementType); d.SetActionLevel(WorldObject.Level); return new PlaceWorldObject(this); }
private TaskState FindDepot(Dwarf d, float dt, double dtd) { if (State == TaskState.NotActive) { List<BuildingRequest> depoesCandidates = new List<BuildingRequest>(); List<Building> depos = WorldMap.Instance.GetDeposWithFood(); foreach (Building b in depos) { depoesCandidates.Add(new BuildingRequest() { Building = b, TypeToGet = MapElementType.None, Level = 1 }); } // If no depot exist that has the required food, the behavier fails if (depoesCandidates.Count == 0) { return TaskState.PersonalFail; } foreach (BuildingRequest b in depoesCandidates) { AsyncPathfinding.RequestPathfinding(d, new Point((int)d.Position.X, (int)d.Position.Y), b.Building.GetActivationPoint(), b); _numerOfPaths++; } } _paths.AddRange(AsyncPathfinding.GetFinishedPathsWithData(d)); if (_paths.Count > _numerOfPaths) { } if (_numerOfPaths != _paths.Count) return TaskState.Running; PathfindingResult shortestPath = Path.ShortestPath(_paths); BuildingRequest br = (BuildingRequest)shortestPath.Data; WorldObject reservedFood = br.Building.ReserveAnyFood(); if (reservedFood == null) return TaskState.PersonalFail; d.SetActionWorldObject(reservedFood); d.SetActionBuilding(br.Building); d.SetMovePath(shortestPath.Path); return TaskState.Success; }