public override void OnBuilt() { foreach (var fence in Fence.CreateFences(World.ComponentManager, ContentPaths.Entities.DwarfObjects.fence, Voxels, false)) { AddBody(fence); fence.Manager.RootComponent.AddChild(fence); } }
private DestroyZoneTool DestroyZoneTool; // I should probably be fired for this. public override void OnVoxelsSelected(List <VoxelHandle> voxels, InputManager.MouseButton button) { if (button == InputManager.MouseButton.Left) { foreach (BuildZoneOrder order in World.PersistentData.BuildDesignations) { order.SetTint(Color.White); } foreach (var room in World.EnumerateZones()) { room.SetTint(Color.White); } if (CurrentZoneType == null) { return; } if (button == InputManager.MouseButton.Left) { if (CurrentZoneType.CanBuildHere(voxels, World)) { if (Library.CreateZone(CurrentZoneType.Name, World).HasValue(out var toBuild)) { var order = new BuildZoneOrder(toBuild, World); World.PersistentData.BuildDesignations.Add(order); World.PersistentData.Zones.Add(toBuild); foreach (var v in voxels.Where(v => v.IsValid && !v.IsEmpty)) { order.VoxelOrders.Add(new BuildVoxelOrder(order, order.ToBuild, v)); } order.WorkObjects.AddRange(Fence.CreateFences(World.ComponentManager, ContentPaths.Entities.DwarfObjects.constructiontape, order.VoxelOrders.Select(o => o.Voxel), true)); foreach (var obj in order.WorkObjects) { obj.Manager.RootComponent.AddChild(obj); } World.TaskManager.AddTask(new BuildZoneTask(order)); } } } } else { DestroyZoneTool.OnVoxelsSelected(voxels, button); } }
public override void OnBuilt() { foreach (var body in ZoneBodies) { body.GetRoot().Delete(); } ZoneBodies.Clear(); foreach ( var fence in Fence.CreateFences(World.ComponentManager, ContentPaths.Entities.DwarfObjects.fence, Voxels, false)) { AddBody(fence); fence.Manager.RootComponent.AddChild(fence); } }
private void BuildNewVoxels(IEnumerable <VoxelHandle> designations) { Room toBuild = RoomLibrary.CreateRoom(Faction, CurrentRoomData.Name, World); var order = new BuildRoomOrder(toBuild, Faction, Faction.World); BuildDesignations.Add(order); DesignatedRooms.Add(toBuild); foreach (var v in designations.Where(v => v.IsValid && !v.IsEmpty)) { order.VoxelOrders.Add(new BuildVoxelOrder(order, order.ToBuild, v)); } order.WorkObjects.AddRange(Fence.CreateFences(World.ComponentManager, ContentPaths.Entities.DwarfObjects.constructiontape, order.VoxelOrders.Select(o => o.Voxel), true)); foreach (var obj in order.WorkObjects) { obj.Manager.RootComponent.AddChild(obj); } World.Master.TaskManager.AddTask(new BuildRoomTask(order)); }
private void BuildNewVoxels(IEnumerable <VoxelHandle> designations) { BuildRoomOrder order = null; foreach (var v in designations.Where(v => v.IsValid && !v.IsEmpty)) { if (IsBuildDesignation(v) || IsInRoom(v)) { continue; } // This check should be rendered pointless by the call to Verify made just // before calling this function. var above = VoxelHelpers.GetVoxelAbove(v); if (above.IsValid && !above.IsEmpty) { continue; } if (order == null) { order = GetMostLikelyDesignation(v); } if (order != null && order.ToBuild.RoomData == CurrentRoomData && !order.IsBuilt) { order.VoxelOrders.Add(new BuildVoxelOrder(order, order.ToBuild, v)); } else if (order == null) { if (CurrentRoomData == RoomLibrary.GetData("Stockpile")) { Stockpile toBuild = new Stockpile(Faction, World); DesignatedRooms.Add(toBuild); order = new BuildStockpileOrder(toBuild, this.Faction); order.VoxelOrders.Add(new BuildVoxelOrder(order, toBuild, v)); BuildDesignations.Add(order); } else if (CurrentRoomData == RoomLibrary.GetData("Treasury")) { Treasury toBuild = new Treasury(Faction, World); DesignatedRooms.Add(toBuild); order = new BuildRoomOrder(toBuild, this.Faction, Faction.World); order.VoxelOrders.Add(new BuildVoxelOrder(order, toBuild, v)); BuildDesignations.Add(order); } else { Room toBuild = RoomLibrary.CreateRoom(Faction, CurrentRoomData.Name, designations.ToList(), true, World); DesignatedRooms.Add(toBuild); order = new BuildRoomOrder(toBuild, Faction, Faction.World); order.VoxelOrders.Add(new BuildVoxelOrder(order, toBuild, v)); BuildDesignations.Add(order); } } else if (order.ToBuild.RoomData != CurrentRoomData || order.IsBuilt) { order = null; } } if (order != null) { order.WorkObjects.AddRange(Fence.CreateFences(World.ComponentManager, ContentPaths.Entities.DwarfObjects.constructiontape, order.VoxelOrders.Select(o => o.Voxel), true)); foreach (var obj in order.WorkObjects) { obj.Manager.RootComponent.AddChild(obj); } World.Master.TaskManager.AddTask(new BuildRoomTask(order)); /* * TaskManager.AssignTasks(new List<Task>() * { * new BuildRoomTask(order) * }, Faction.FilterMinionsWithCapability(World.Master.SelectedMinions, GameMaster.ToolMode.BuildZone)); */ } }