public void OnVoxelDestroyed(Voxel voxDestroyed) { List <Room> toDestroy = new List <Room>(); Voxel vRef = voxDestroyed; lock (DesignatedRooms) { List <Room> toCheck = new List <Room>(); toCheck.AddRange(DesignatedRooms); foreach (Room r in toCheck) { r.RemoveVoxel(vRef); if (r.Voxels.Count == 0) { toDestroy.Add(r); } } foreach (Room r in toDestroy) { DesignatedRooms.Remove(r); r.Destroy(); } } }
void destroyDialog_OnClosed(Dialog.ReturnStatus status, Room room) { if (status == Dialog.ReturnStatus.Ok) { DesignatedRooms.Remove(room); List <BuildVoxelOrder> existingDesignations = GetDesignationsAssociatedWithRoom(room); BuildRoomOrder buildRoomDes = null; foreach (BuildVoxelOrder des in existingDesignations) { des.Order.VoxelOrders.Remove(des); buildRoomDes = des.Order; } BuildDesignations.Remove(buildRoomDes); room.Destroy(); } }
void destroyDialog_OnClosed(NewGui.Confirm.Result status, Room room) { if (status == NewGui.Confirm.Result.OKAY) { DesignatedRooms.Remove(room); List <BuildVoxelOrder> existingDesignations = GetDesignationsAssociatedWithRoom(room); BuildRoomOrder buildRoomDes = null; foreach (BuildVoxelOrder des in existingDesignations) { des.Order.VoxelOrders.Remove(des); buildRoomDes = des.Order; } BuildDesignations.Remove(buildRoomDes); room.Destroy(); } }
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; } } }
void destroyDialog_OnClosed(Gui.Widgets.Confirm.Result status, Room room) { if (status == Gui.Widgets.Confirm.Result.OKAY) { DesignatedRooms.Remove(room); List <BuildVoxelOrder> existingDesignations = GetDesignationsAssociatedWithRoom(room); BuildRoomOrder buildRoomDes = null; foreach (BuildVoxelOrder des in existingDesignations) { des.Order.VoxelOrders.Remove(des); buildRoomDes = des.Order; } if (buildRoomDes != null && buildRoomDes.DisplayWidget != null) { World.Gui.DestroyWidget(buildRoomDes.DisplayWidget); } BuildDesignations.Remove(buildRoomDes); room.Destroy(); } }
public void OnVoxelDestroyed(VoxelHandle voxDestroyed) { List <Room> toDestroy = new List <Room>(); lock (DesignatedRooms) { List <Room> toCheck = new List <Room>(); toCheck.AddRange(DesignatedRooms.Where(r => r.IsBuilt)); foreach (Room r in toCheck) { if (r.RemoveVoxel(voxDestroyed)) { toDestroy.Add(r); } } foreach (Room r in toDestroy) { DesignatedRooms.Remove(r); r.Destroy(); } } }