Пример #1
0
        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)
                    });
                }
            }
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        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));
        }
Пример #4
0
        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;
                }
            }
        }
Пример #5
0
        public void AddVoxelOrder(BuildVoxelOrder buildVoxelOrder)
        {
            foreach (BuildVoxelOrder order in VoxelOrders)
            {
                if (order.Voxel.Equals(buildVoxelOrder.Voxel))
                {
                    return;
                }
            }

            VoxelOrders.Add(buildVoxelOrder);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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;
                }
            }
        }
Пример #8
0
        public void AddVoxelOrder(BuildVoxelOrder buildVoxelOrder)
        {
            foreach (BuildVoxelOrder order in VoxelOrders)
            {
                if (order.Voxel.Equals(buildVoxelOrder.Voxel))
                {
                    return;
                }
            }

            VoxelOrders.Add(buildVoxelOrder);
        }