diff --git a/Fk/Base/Config.qml b/Fk/Base/Config.qml index 4c01e525e694ef88230c2be53dde81a312648735..a62a2f95694b468e01db500b00bb5bd1583da525 100644 --- a/Fk/Base/Config.qml +++ b/Fk/Base/Config.qml @@ -68,6 +68,7 @@ QtObject { property string serverMotd: "" property list serverHiddenPacks: [] property bool serverEnableBot: true + property bool serverEnableChangeRoom: false property string headerName: "" property int roomCapacity: 0 property int roomTimeout: 0 diff --git a/Fk/Base/RootPage.qml b/Fk/Base/RootPage.qml index 8d125d671308e3d7b15edc91953fff7dc5c6ba4c..ad992a655efcdfa2f13e00d9faef0d983a3e07b8 100644 --- a/Fk/Base/RootPage.qml +++ b/Fk/Base/RootPage.qml @@ -209,10 +209,11 @@ W.PageBase { } function setServerSettings(sender, data) { - const [ motd, hiddenPacks, enableBots ] = data; + const [ motd, hiddenPacks, enableBots, enableChangeRoom ] = data; Config.serverMotd = motd; Config.serverHiddenPacks = hiddenPacks; Config.serverEnableBot = enableBots; + Config.serverEnableChangeRoom = enableChangeRoom; } function setBusy(sender, data) { diff --git a/Fk/Pages/Common/WaitingRoom.qml b/Fk/Pages/Common/WaitingRoom.qml index 26e88a5c9a74cf63a083752e6f2200eb2867a01e..050403f5a51b66ddc552e3fae8f8fded21ef4825 100644 --- a/Fk/Pages/Common/WaitingRoom.qml +++ b/Fk/Pages/Common/WaitingRoom.qml @@ -15,7 +15,7 @@ W.PageBase { property bool isAllReady: false property bool canAddRobot: false - + property bool canChangeRoom: false property bool isOwner: false property bool isFull: false property bool isReady: false @@ -131,6 +131,14 @@ W.PageBase { id: photoModel } + W.PopupLoader { + id: room_drawer + padding: 0 + width: Config.winWidth * 0.80 + height: Config.winHeight * 0.95 + anchors.centerIn: parent + } + GridLayout { id: roomArea @@ -283,6 +291,19 @@ W.PageBase { anchors.bottom: parent.bottom anchors.margins: 40 + W.ButtonContent{ + visible: isOwner && canChangeRoom + text: Lua.tr("Change Room Config") + onClicked: { + room_drawer.sourceComponent = + Qt.createComponent("../Lobby/CreateRoom.qml"); + room_drawer.item.isChangeRoom = true; + room_drawer.open(); + Config.observing = false; + Config.replaying = false; + } + } + W.ButtonContent { text: Lua.tr("Chat") font.pixelSize: 28 @@ -569,7 +590,7 @@ W.PageBase { App.showToast(Lua.tr("$EnterRoom")); playerNum = Config.roomCapacity; - + canChangeRoom = Config.serverEnableChangeRoom; resetPhotos(); } } diff --git a/Fk/Pages/Lobby/CreateRoom.qml b/Fk/Pages/Lobby/CreateRoom.qml index 94ef8e2a1b9c1ba705855027632fbb6d2bc0feb7..a3e08464c8e743e35033f7f21a18d745956cfaae 100644 --- a/Fk/Pages/Lobby/CreateRoom.qml +++ b/Fk/Pages/Lobby/CreateRoom.qml @@ -10,7 +10,7 @@ import Fk.Widgets as W Item { id: root anchors.fill: parent - + property bool isChangeRoom: false signal finish() W.SideBarSwitcher { @@ -128,9 +128,25 @@ Item { const boardgameConf = Db.getModeSettings(boardgameName); const gameModeConf = Db.getModeSettings(boardgameName + ":" + gameMode); - ClientInstance.notifyServer( - "CreateRoom", - [ + if (root.isChangeRoom) { + App.quitPage(); + ClientInstance.notifyServer("ChangeRoom", [ + roomGeneralSettings.roomName, roomGeneralSettings.playerNum, + Config.preferredTimeout, { + gameMode, + roomName: roomGeneralSettings.roomName, + password: roomGeneralSettings.roomPassword, + _game: boardgameConf, + _mode: gameModeConf, + // FIXME 暂且拿他俩没办法 + disabledPack: boardgameName === "lunarltk" ? disabledPack : [], + disabledGenerals: boardgameName === "lunarltk" ? disabledGenerals : [], + } + ]); + App.setBusy(false); + + } else { + ClientInstance.notifyServer("CreateRoom",[ roomGeneralSettings.roomName, roomGeneralSettings.playerNum, Config.preferredTimeout, { gameMode, @@ -142,8 +158,8 @@ Item { disabledPack: boardgameName === "lunarltk" ? disabledPack : [], disabledGenerals: boardgameName === "lunarltk" ? disabledGenerals : [], } - ] - ); + ]); + } } } diff --git a/lua/client/i18n/zh_CN.lua b/lua/client/i18n/zh_CN.lua index 68900dee6cce82eb269a0363f26d9a4f191dae50..6fe84aa22557f2f28830e3a3a2395caed3d55f5b 100644 --- a/lua/client/i18n/zh_CN.lua +++ b/lua/client/i18n/zh_CN.lua @@ -97,6 +97,7 @@ Fk:loadTranslationTable { ["Full"] = "已满", ["Not Full"] = "未满", ["Room Capacity"] = "人数上限", + ["Change Room Config"] = "房间配置", ["Add Robot"] = "添加机器人", ["Start Game"] = "开始游戏", ["Ready"] = "准备",