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) { Player.Faction.RoomBuilder.VoxelsSelected(voxels, button); } else { DestroyZoneTool.OnVoxelsSelected(voxels, button); } }
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); } }