public override void OnVoxelsSelected(List <VoxelHandle> Voxels, InputManager.MouseButton button) { var v = Player.VoxSelector.VoxelUnderMouse; if (Faction.RoomBuilder.IsBuildDesignation(v)) { BuildVoxelOrder vox = Faction.RoomBuilder.GetBuildDesignation(v); if (vox != null && vox.Order != null) { vox.Order.Destroy(); if (vox.Order.DisplayWidget != null) { World.Gui.DestroyWidget(vox.Order.DisplayWidget); } Faction.RoomBuilder.BuildDesignations.Remove(vox.Order); Faction.RoomBuilder.DesignatedRooms.Remove(vox.Order.ToBuild); } } else if (Faction.RoomBuilder.IsInRoom(v)) { Room existingRoom = Faction.RoomBuilder.GetMostLikelyRoom(v); if (existingRoom != null) { World.Gui.ShowModalPopup(new Gui.Widgets.Confirm { Text = "Do you want to destroy this " + existingRoom.RoomData.Name + "?", OnClose = (sender) => DestroyRoom((sender as Gui.Widgets.Confirm).DialogResult, existingRoom, Faction, World) }); } } }
private void DeleteVoxels(IEnumerable <Voxel> refs) { foreach (Voxel v in refs.Select(r => r).Where(v => !v.IsEmpty)) { if (IsBuildDesignation(v)) { BuildVoxelOrder vox = GetBuildDesignation(v); vox.ToBuild.Destroy(); BuildDesignations.Remove(vox.Order); } else if (IsInRoom(v)) { Room existingRoom = GetMostLikelyRoom(v); if (existingRoom == null) { continue; } Dialog destroyDialog = Dialog.Popup(PlayState.GUI, "Destroy room?", "Do you want to destroy this " + existingRoom.RoomData.Name + "?", Dialog.ButtonType.OkAndCancel); destroyDialog.OnClosed += (status) => destroyDialog_OnClosed(status, existingRoom); break; } } }
public override Act CreateScript(Creature creature) { Room room = Zone as Room; if (room == null) { return(null); } if (!creature.Faction.RoomBuilder.IsBuildDesignation(room)) { return(null); } BuildVoxelOrder voxVoxelOrder = creature.Faction.RoomBuilder.GetBuildDesignation(room); if (voxVoxelOrder == null) { return(null); } BuildRoomOrder designation = voxVoxelOrder.Order; if (designation == null) { return(null); } return(new BuildRoomAct(creature.AI, designation)); }
private void DeleteVoxels(IEnumerable <Voxel> refs) { foreach (Voxel v in refs.Select(r => r).Where(v => !v.IsEmpty)) { if (IsBuildDesignation(v)) { BuildVoxelOrder vox = GetBuildDesignation(v); vox.ToBuild.Destroy(); BuildDesignations.Remove(vox.Order); } else if (IsInRoom(v)) { Room existingRoom = GetMostLikelyRoom(v); if (existingRoom == null) { continue; } World.NewGui.ShowDialog(new NewGui.Confirm { Text = "Do you want to destroy this" + existingRoom.RoomData.Name + "?", OnClose = (sender) => destroyDialog_OnClosed((sender as NewGui.Confirm).DialogResult, existingRoom) }); break; } } }
public void AddVoxelOrder(BuildVoxelOrder buildVoxelOrder) { foreach (BuildVoxelOrder order in VoxelOrders) { if (order.Voxel.Equals(buildVoxelOrder.Voxel)) { return; } } VoxelOrders.Add(buildVoxelOrder); }
public void AddVoxelOrder(BuildVoxelOrder buildVoxelOrder) { if (Creature.Movement.IsSessile) { return; } foreach (BuildVoxelOrder order in VoxelOrders) { if (order.Voxel.Equals(buildVoxelOrder.Voxel)) { return; } } VoxelOrders.Add(buildVoxelOrder); }
private void DeleteVoxels(IEnumerable <VoxelHandle> Voxels) { if (Voxels == null) { return; } foreach (var v in Voxels.Where(v => v.IsValid && !v.IsEmpty)) { if (IsBuildDesignation(v)) { BuildVoxelOrder vox = GetBuildDesignation(v); if (vox != null && vox.Order != null) { vox.Order.Destroy(); if (vox.Order.DisplayWidget != null) { World.Gui.DestroyWidget(vox.Order.DisplayWidget); } BuildDesignations.Remove(vox.Order); DesignatedRooms.Remove(vox.Order.ToBuild); } } else if (IsInRoom(v)) { Room existingRoom = GetMostLikelyRoom(v); if (existingRoom == null) { continue; } World.Gui.ShowModalPopup(new Gui.Widgets.Confirm { Text = "Do you want to destroy this " + existingRoom.RoomData.Name + "?", OnClose = (sender) => destroyDialog_OnClosed((sender as Gui.Widgets.Confirm).DialogResult, existingRoom) }); break; } } }