From 605bc928d7dcbaa3adee45288e2eb2ffaa28f58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:08:43 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=8A=AC=E5=A4=B4=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fk/Base/Config.qml | 1 + Fk/Components/LunarLTK/Dashboard.qml | 2 -- Fk/Pages/Common/RoomPage.qml | 2 +- Fk/Pages/Lobby/Lobby.qml | 5 +++++ Fk/Pages/Lobby/RoomGeneralSettings.qml | 8 ++++++++ Fk/Pages/LunarLTK/RoomLogic.js | 4 +--- lua/client/i18n/zh_CN.lua | 1 + 7 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Fk/Base/Config.qml b/Fk/Base/Config.qml index c10fc2a..63d489c 100644 --- a/Fk/Base/Config.qml +++ b/Fk/Base/Config.qml @@ -67,6 +67,7 @@ QtObject { property string serverMotd: "" property list serverHiddenPacks: [] property bool serverEnableBot: true + property string headerName: "" property int roomCapacity: 0 property int roomTimeout: 0 //property int roomChooseGeneralTimeout: 0 diff --git a/Fk/Components/LunarLTK/Dashboard.qml b/Fk/Components/LunarLTK/Dashboard.qml index 42ee2cc..8e13d1d 100644 --- a/Fk/Components/LunarLTK/Dashboard.qml +++ b/Fk/Components/LunarLTK/Dashboard.qml @@ -155,7 +155,6 @@ RowLayout { } }); uiUpdate["_new"]?.forEach(dat => { - const sortable = Lua.call("CanSortHandcards", Self.id); if (dat.type == "CardItem") { const data = Lua.call("GetCardData", dat.data.id); data.x = parentPos.x; @@ -168,7 +167,6 @@ RowLayout { if (vcard) { card.virt_name = vcard.name; } - card.draggable = sortable; handcardAreaItem.add(card); } }); diff --git a/Fk/Pages/Common/RoomPage.qml b/Fk/Pages/Common/RoomPage.qml index 7b0df68..903655e 100644 --- a/Fk/Pages/Common/RoomPage.qml +++ b/Fk/Pages/Common/RoomPage.qml @@ -62,7 +62,7 @@ Item { Text { anchors.centerIn: parent - text: Lua.tr("Click The Game Scene to back") + text: Config.headerName !== "" ? Config.headerName : Lua.tr("Click The Game Scene to back") font.pixelSize: 16 } } diff --git a/Fk/Pages/Lobby/Lobby.qml b/Fk/Pages/Lobby/Lobby.qml index 63ef806..cd80d70 100644 --- a/Fk/Pages/Lobby/Lobby.qml +++ b/Fk/Pages/Lobby/Lobby.qml @@ -321,6 +321,11 @@ W.PageBase { const roomSettings = data[2]; // Config.enableFreeAssign = roomSettings.enableFreeAssign; Config.heg = roomSettings.gameMode.includes('heg_mode'); + let displayName = roomSettings.roomName; + if (roomSettings.roomId) { + displayName += "[{id}]".replace("{id}", roomSettings.roomId); + } + Config.headerName = Lua.tr("Current room: %1").arg(displayName); App.enterNewPage("Fk.Pages.Common", "RoomPage", { gameComponent: Qt.createComponent("Fk.Pages.Common", "WaitingRoom"), }); diff --git a/Fk/Pages/Lobby/RoomGeneralSettings.qml b/Fk/Pages/Lobby/RoomGeneralSettings.qml index 9586582..5636fd5 100644 --- a/Fk/Pages/Lobby/RoomGeneralSettings.qml +++ b/Fk/Pages/Lobby/RoomGeneralSettings.qml @@ -134,6 +134,14 @@ Item { roomName.text, playerNum.value, Config.preferredTimeout, { gameMode, + roomName: roomName.text, + enableFreeAssign: freeAssignCheck.checked, + enableDeputy: deputyCheck.checked, + gameMode: Config.preferedMode, + disabledPack: disabledPack, + generalNum: Config.preferredGeneralNum, + generalTimeout: Config.preferredChooseGeneralTimeout, + luckTime: Config.preferredLuckTime, password: roomPassword.text, _game: boardgameConf, _mode: gameModeConf, diff --git a/Fk/Pages/LunarLTK/RoomLogic.js b/Fk/Pages/LunarLTK/RoomLogic.js index befafcc..73c76cc 100644 --- a/Fk/Pages/LunarLTK/RoomLogic.js +++ b/Fk/Pages/LunarLTK/RoomLogic.js @@ -666,14 +666,12 @@ callbacks["PropertyUpdate"] = (sender, data) => { } callbacks["UpdateHandcard"] = (sender) => { - const sortable = Lua.call("CanSortHandcards", Self.id); - roomScene.dashboard.handcardArea.cards.forEach((v) => { const id = v.cid; if (Lua.evaluate(`ClientInstance:getCardArea(${id}) == Card.PlayerHand and ClientInstance:getCardOwner(${id}) == Self`)) { v.setData(Lua.call("GetCardData", id, true)); v.known = Lua.call("CardVisibility", id); - v.draggable = sortable; + v.draggable = true; } }); } diff --git a/lua/client/i18n/zh_CN.lua b/lua/client/i18n/zh_CN.lua index 60e07fb..c1c3fd0 100644 --- a/lua/client/i18n/zh_CN.lua +++ b/lua/client/i18n/zh_CN.lua @@ -305,6 +305,7 @@ FreeKill使用的是libgit2的C API,与此同时使用Git完成拓展包的下 ["Copy Audio Text"] = "复制语音文本", ["$WelcomeToLobby"] = "欢迎进入新月杀游戏大厅!", + ["Current room: %1"] = "当前房间:%1", ["GameMode"] = "游戏模式:", ["LuckCardNum"] = "手气卡次数:", ["ResponseTime"] = "出手时间:", -- Gitee From 4cf9b316518d4e1b92a947f75c86708523ecd14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:08:43 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=AF=95=E5=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fk/Pages/Common/PackageDownload.qml | 61 ++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/Fk/Pages/Common/PackageDownload.qml b/Fk/Pages/Common/PackageDownload.qml index f54a1f0..588fc01 100644 --- a/Fk/Pages/Common/PackageDownload.qml +++ b/Fk/Pages/Common/PackageDownload.qml @@ -8,10 +8,12 @@ W.PageBase { property bool needRestart: false + property var hasHandlerModel: [] function setPackages(summary) { const localSummary = JSON.parse(Pacman.getPackSummary()); packageModel.clear(); + hasHandlerModel.clear(); for (let data of summary) { data.oldHash = localSummary.find(d => d.name === data.name)?.hash ?? "(nil)"; packageModel.append(data); @@ -62,8 +64,10 @@ W.PageBase { function setDownloadError(sender, msg) { const item = packageRepeater.itemAt(root.currentPackageIndex); - item.subTitle = " " + msg; item.hasError = true; + [item.errorMsg, item.errorHandler] = fastRepair(msg); + item.subTitle = " " + item.errorMsg + "
" + msg; + root.hasHandlerModel.append(root.currentPackageIndex); } function showTransferProgress(sender, data) { @@ -104,6 +108,8 @@ W.PageBase { W.ActionRow { property string myName: name property bool hasError: false + property string errorMsg: "" + property var errorHandler title: { const old = oldHash === "(nil)" ? oldHash : oldHash.substring(0, 8); @@ -125,6 +131,18 @@ W.PageBase { border.width: 4 visible: root.currentPackageIndex === index } + + W.ButtonContent { + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + text: "修复" + visible: parent.errorHandler !== null + onClicked: { + const it = packageRepeater.itemAt(i); + parent.errorHandler(it.myName, index); + root.hasHandlerModel.remove(index); + } + } } } } @@ -169,6 +187,24 @@ W.PageBase { } } } + + W.ButtonContent { + id: repairButton + visible: false + text: "修复全部内容并退出" + anchors.bottom: backButton.top + anchors.bottomMargin: 8 + width: parent.width - 16 + x: 8 + + onClicked: { + for (idx of root.hasHandlerModel) { + const it = packageRepeater.itemAt(idx); + parent.errorHandler(it.myName, idx); + } + App.quitPage(); + } + } } Component.onCompleted: { @@ -177,4 +213,27 @@ W.PageBase { addCallback(Command.PackageDownloadError, setDownloadError); addCallback(Command.PackageTransferProgress, showTransferProgress); } + + function fastRepair(errorMsg) { + if (/Workspace is dirty/g.exec(errorMsg)) { + return ["工作区有未保存的人为修改", (packageName, index) => { + console.log("Uninstalling " + packageName); + Pacman.removePack(packageName); + // updatePackageList(); + packageModel.remove(index); + }]; + }else if (/exists and is not an empty directory/g.exec(errorMsg)) { + return ["目录已存在且非空", null]; + } else if (/no such file or directory/g.exec(errorMsg)) { + return ["文件或目录不存在", null]; + } else if (/authentiation required but no callback is set/g.exec(errorMsg)) { + return ["无法访问仓库URL", null]; + } else if (/no match for id/g.exec(errorMsg)) { + return ["服务器所需的版本不存在", null]; + } else if (/Http/g.exec(errorMsg)) { + return ["网络错误", null]; + } + + return [null, null]; + } } -- Gitee From c1363ad46aa8a3b2dfecf2176e2231a1041a224e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:08:43 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fk/Pages/Common/PackageDownload.qml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Fk/Pages/Common/PackageDownload.qml b/Fk/Pages/Common/PackageDownload.qml index 588fc01..0c4802a 100644 --- a/Fk/Pages/Common/PackageDownload.qml +++ b/Fk/Pages/Common/PackageDownload.qml @@ -13,7 +13,7 @@ W.PageBase { function setPackages(summary) { const localSummary = JSON.parse(Pacman.getPackSummary()); packageModel.clear(); - hasHandlerModel.clear(); + hasHandlerModel = []; for (let data of summary) { data.oldHash = localSummary.find(d => d.name === data.name)?.hash ?? "(nil)"; packageModel.append(data); @@ -43,6 +43,9 @@ W.PageBase { } } + if (hasHandlerModel.length > 0) { + repairButton.visible = true; + } backButton.visible = true; } @@ -67,7 +70,7 @@ W.PageBase { item.hasError = true; [item.errorMsg, item.errorHandler] = fastRepair(msg); item.subTitle = " " + item.errorMsg + "
" + msg; - root.hasHandlerModel.append(root.currentPackageIndex); + root.hasHandlerModel.push(root.currentPackageIndex); } function showTransferProgress(sender, data) { @@ -109,7 +112,7 @@ W.PageBase { property string myName: name property bool hasError: false property string errorMsg: "" - property var errorHandler + property var errorHandler: null title: { const old = oldHash === "(nil)" ? oldHash : oldHash.substring(0, 8); @@ -137,9 +140,8 @@ W.PageBase { anchors.verticalCenter: parent.verticalCenter text: "修复" visible: parent.errorHandler !== null - onClicked: { - const it = packageRepeater.itemAt(i); - parent.errorHandler(it.myName, index); + onClicked: {; + parent.errorHandler(parent.myName, index); root.hasHandlerModel.remove(index); } } @@ -198,9 +200,9 @@ W.PageBase { x: 8 onClicked: { - for (idx of root.hasHandlerModel) { + for (let idx of root.hasHandlerModel) { const it = packageRepeater.itemAt(idx); - parent.errorHandler(it.myName, idx); + it.errorHandler(it.myName, idx); } App.quitPage(); } -- Gitee From f912c9ec54c5de9084f3082b6f1fe1e7c7fed87c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:08:43 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E9=80=82=E5=BA=94fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fk/Pages/Lobby/Lobby.qml | 2 +- Fk/Pages/Lobby/RoomGeneralSettings.qml | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Fk/Pages/Lobby/Lobby.qml b/Fk/Pages/Lobby/Lobby.qml index cd80d70..776b3d9 100644 --- a/Fk/Pages/Lobby/Lobby.qml +++ b/Fk/Pages/Lobby/Lobby.qml @@ -322,7 +322,7 @@ W.PageBase { // Config.enableFreeAssign = roomSettings.enableFreeAssign; Config.heg = roomSettings.gameMode.includes('heg_mode'); let displayName = roomSettings.roomName; - if (roomSettings.roomId) { + if (roomSettings.roomId !== undefined) { displayName += "[{id}]".replace("{id}", roomSettings.roomId); } Config.headerName = Lua.tr("Current room: %1").arg(displayName); diff --git a/Fk/Pages/Lobby/RoomGeneralSettings.qml b/Fk/Pages/Lobby/RoomGeneralSettings.qml index 5636fd5..326b51b 100644 --- a/Fk/Pages/Lobby/RoomGeneralSettings.qml +++ b/Fk/Pages/Lobby/RoomGeneralSettings.qml @@ -135,13 +135,6 @@ Item { Config.preferredTimeout, { gameMode, roomName: roomName.text, - enableFreeAssign: freeAssignCheck.checked, - enableDeputy: deputyCheck.checked, - gameMode: Config.preferedMode, - disabledPack: disabledPack, - generalNum: Config.preferredGeneralNum, - generalTimeout: Config.preferredChooseGeneralTimeout, - luckTime: Config.preferredLuckTime, password: roomPassword.text, _game: boardgameConf, _mode: gameModeConf, -- Gitee From 0c23a90cdff765b4dcbb931a86497626f91b4e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:08:43 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=96=87=E5=AD=97=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=92=8C=E9=87=8D=E8=A6=81=E7=A6=81=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fk/Pages/Common/PackageDownload.qml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Fk/Pages/Common/PackageDownload.qml b/Fk/Pages/Common/PackageDownload.qml index 0c4802a..124f99b 100644 --- a/Fk/Pages/Common/PackageDownload.qml +++ b/Fk/Pages/Common/PackageDownload.qml @@ -68,9 +68,11 @@ W.PageBase { function setDownloadError(sender, msg) { const item = packageRepeater.itemAt(root.currentPackageIndex); item.hasError = true; - [item.errorMsg, item.errorHandler] = fastRepair(msg); - item.subTitle = " " + item.errorMsg + "
" + msg; - root.hasHandlerModel.push(root.currentPackageIndex); + item.subTitle = " " + msg; + if (item.myName !== "freekill-core") { + [item.errorMsg, item.errorHandler] = fastRepair(msg); + root.hasHandlerModel.push(root.currentPackageIndex); + } } function showTransferProgress(sender, data) { @@ -123,6 +125,9 @@ W.PageBase { } else { ret += `${old} -> ${now}`; } + if (errorMsg !== "") { + ret += ` (错误: ${errorMsg})`; + } return ret; } subTitle: "⏰ Please wait..." -- Gitee From ae3ae94fcbb50acbf28cc1bbb8644e761cea37ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 11 Oct 2025 21:38:01 +0800 Subject: [PATCH 6/6] fix --- Fk/Pages/Common/PackageDownload.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Fk/Pages/Common/PackageDownload.qml b/Fk/Pages/Common/PackageDownload.qml index 124f99b..916be20 100644 --- a/Fk/Pages/Common/PackageDownload.qml +++ b/Fk/Pages/Common/PackageDownload.qml @@ -71,7 +71,9 @@ W.PageBase { item.subTitle = " " + msg; if (item.myName !== "freekill-core") { [item.errorMsg, item.errorHandler] = fastRepair(msg); - root.hasHandlerModel.push(root.currentPackageIndex); + if (item.errorHandler !== null) { + root.hasHandlerModel.push(root.currentPackageIndex); + } } } -- Gitee