コード例 #1
0
ファイル: RoomsComponent.cs プロジェクト: sonneveld/agscj
        public override void CommandClick(string controlID)
        {
            if (controlID == COMMAND_NEW_ITEM)
            {
                List<RoomTemplate> templates = ConstructListOfRoomTemplates();
                NewRoomDialog dialog = new NewRoomDialog(_agsEditor.CurrentGame, templates);
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    CreateNewRoom(dialog.ChosenRoomNumber, dialog.ChosenTemplate);
                }
                dialog.Dispose();
                DisposeIcons(templates);
            }
            else if (controlID == COMMAND_ADD_EXISTING_ROOM)
            {
                string fileName = _guiController.ShowOpenFileDialog("Choose room to import...", "AGS room files (*.crm)|*.crm");
                if (fileName != null)
                {
                    ImportExistingRoomFile(fileName);
                }
            }
            else if (controlID == COMMAND_CREATE_TEMPLATE)
            {
                CreateTemplateFromRoom(_rightClickedRoomNumber);
            }
            else if (controlID == COMMAND_EXCLUDE_ITEM)
            {
                if (MessageBox.Show("Are you sure you want to remove this room from the game? The file will not be deleted.", "Confirm exclude", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (EnsureNoCharactersStartInRoom(_rightClickedRoomNumber))
                    {
                        RemoveRoomFromGame(_rightClickedRoomNumber);
                    }
                }
            }
            else if (controlID == COMMAND_DELETE_ITEM)
            {
                if (MessageBox.Show("Are you sure you want to delete this room? It cannot be recovered.", "Confirm delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (EnsureNoCharactersStartInRoom(_rightClickedRoomNumber))
                    {
                        DeleteRoom(_rightClickedRoomNumber);
                    }
                }
            }
            else if (controlID == COMMAND_SORT_BY_NUMBER)
            {
                RoomList roomList = (RoomList)_agsEditor.CurrentGame.Rooms;
                roomList.SortByNumber();
                RePopulateTreeView();
                RoomListTypeConverter.SetRoomList(_agsEditor.CurrentGame.Rooms);
            }
            else if (controlID.StartsWith(TREE_PREFIX_ROOM_SETTINGS))
            {
                LoadRoom(controlID);
            }
            else if (controlID.StartsWith(TREE_PREFIX_ROOM_SCRIPT))
            {
                UnloadedRoom selectedRoom = FindRoomByID(Convert.ToInt32(controlID.Substring(3)));
                if (selectedRoom.Script == null)
                {
                    selectedRoom.LoadScript();
                }

                CreateOrShowScript(selectedRoom);
            }
            else if (controlID == COMMAND_LOAD_ROOM)
            {
                if ((_loadedRoom == null) || (_roomSettings == null) ||
                    (_loadedRoom.Number != _rightClickedRoomNumber))
                {
                    UnloadedRoom selectedRoom = FindRoomByID(_rightClickedRoomNumber);
                    LoadDifferentRoom(selectedRoom);
                }

                if (_roomSettings != null)
                {
                    _guiController.AddOrShowPane(_roomSettings);
                }
            }
            else if (controlID == COMMAND_SAVE_ROOM)
            {
                if (_loadedRoom != null)
                {
                    SaveRoomAndShowAnyErrors(_loadedRoom);
                }
            }
            else if (controlID.StartsWith(TREE_PREFIX_ROOM_NODE))
            {
                LoadRoom(controlID);
            }
        }