2023-04-09 13:35:35 +08:00
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2023-03-14 14:12:13 +08:00
|
|
|
import QtQuick
|
|
|
|
import QtQuick.Controls
|
|
|
|
import QtQuick.Layouts
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
Flickable {
|
|
|
|
flickableDirection: Flickable.AutoFlickIfNeeded
|
|
|
|
clip: true
|
|
|
|
contentHeight: layout.height
|
|
|
|
|
|
|
|
ColumnLayout {
|
|
|
|
id: layout
|
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Room Name")
|
|
|
|
}
|
|
|
|
TextField {
|
|
|
|
id: roomName
|
|
|
|
maximumLength: 64
|
|
|
|
font.pixelSize: 18
|
|
|
|
text: Backend.translate("$RoomName").arg(Self.screenName)
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Player num")
|
|
|
|
}
|
|
|
|
SpinBox {
|
|
|
|
id: playerNum
|
|
|
|
from: 2
|
|
|
|
to: 8
|
|
|
|
value: config.preferedPlayerNum
|
|
|
|
|
|
|
|
onValueChanged: {
|
|
|
|
config.preferedPlayerNum = value;
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Game Mode")
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
2023-06-04 19:31:44 +08:00
|
|
|
ComboBox {
|
|
|
|
id: gameModeCombo
|
|
|
|
textRole: "name"
|
|
|
|
model: ListModel {
|
|
|
|
id: gameModeList
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
onCurrentIndexChanged: {
|
2023-06-09 17:23:02 +08:00
|
|
|
const data = gameModeList.get(currentIndex);
|
2023-06-04 19:31:44 +08:00
|
|
|
playerNum.from = data.minPlayer;
|
|
|
|
playerNum.to = data.maxPlayer;
|
2023-03-14 14:12:13 +08:00
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
config.preferedMode = data.orig_name;
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
2023-06-15 21:19:57 +08:00
|
|
|
text: Backend.translate("Select generals num")
|
2023-06-04 19:31:44 +08:00
|
|
|
}
|
|
|
|
SpinBox {
|
|
|
|
id: generalNum
|
|
|
|
from: 3
|
|
|
|
to: 18
|
|
|
|
value: config.preferredGeneralNum
|
|
|
|
|
|
|
|
onValueChanged: {
|
|
|
|
config.preferredGeneralNum = value;
|
|
|
|
}
|
2023-03-20 14:53:56 +08:00
|
|
|
}
|
|
|
|
}
|
2023-04-30 18:54:23 +08:00
|
|
|
|
2023-06-15 21:19:57 +08:00
|
|
|
Text {
|
|
|
|
id: warning
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
visible: JSON.parse(Backend.callLuaFunction("GetAvailableGeneralsNum", [])) < config.preferredGeneralNum * config.preferedPlayerNum
|
|
|
|
text: Backend.translate("No enough generals")
|
|
|
|
color: "red"
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Operation timeout")
|
|
|
|
}
|
|
|
|
SpinBox {
|
|
|
|
from: 10
|
|
|
|
to: 60
|
|
|
|
editable: true
|
|
|
|
value: config.preferredTimeout
|
|
|
|
|
|
|
|
onValueChanged: {
|
|
|
|
config.preferredTimeout = value;
|
|
|
|
}
|
2023-04-30 18:54:23 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Luck Card Times")
|
|
|
|
}
|
|
|
|
SpinBox {
|
|
|
|
from: 0
|
|
|
|
to: 8
|
|
|
|
value: config.preferredLuckTime
|
2023-05-19 07:45:21 +08:00
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
onValueChanged: {
|
|
|
|
config.preferredLuckTime = value;
|
|
|
|
}
|
2023-05-19 07:45:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Text {
|
|
|
|
text: Backend.translate("Room Password")
|
|
|
|
}
|
|
|
|
TextField {
|
|
|
|
id: roomPassword
|
|
|
|
maximumLength: 16
|
|
|
|
font.pixelSize: 18
|
|
|
|
}
|
2023-05-27 21:58:32 +08:00
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
Switch {
|
|
|
|
id: freeAssignCheck
|
|
|
|
checked: Debugging ? true : false
|
|
|
|
text: Backend.translate("Enable free assign")
|
|
|
|
}
|
|
|
|
|
|
|
|
Switch {
|
|
|
|
id: deputyCheck
|
|
|
|
checked: Debugging ? true : false
|
|
|
|
text: Backend.translate("Enable deputy general")
|
|
|
|
}
|
|
|
|
|
|
|
|
RowLayout {
|
|
|
|
anchors.rightMargin: 8
|
|
|
|
spacing: 16
|
|
|
|
Button {
|
|
|
|
text: Backend.translate("OK")
|
2023-06-15 21:19:57 +08:00
|
|
|
enabled: !(warning.visible)
|
2023-06-04 19:31:44 +08:00
|
|
|
onClicked: {
|
|
|
|
root.finished();
|
|
|
|
mainWindow.busy = true;
|
|
|
|
|
|
|
|
let disabledGenerals = config.disabledGenerals.slice();
|
|
|
|
if (disabledGenerals.length) {
|
|
|
|
const availablePack = JSON.parse(Backend.callLuaFunction("GetAllGeneralPack", [])).
|
|
|
|
filter((pack) => !config.disabledPack.includes(pack));
|
|
|
|
disabledGenerals = disabledGenerals.filter((general) => {
|
|
|
|
return availablePack.find((pack) => JSON.parse(Backend.callLuaFunction("GetGenerals", [pack])).includes(general));
|
|
|
|
});
|
|
|
|
|
|
|
|
disabledGenerals = Array.from(new Set(disabledGenerals));
|
|
|
|
}
|
|
|
|
|
|
|
|
ClientInstance.notifyServer(
|
|
|
|
"CreateRoom",
|
|
|
|
JSON.stringify([roomName.text, playerNum.value, config.preferredTimeout, {
|
|
|
|
enableFreeAssign: freeAssignCheck.checked,
|
|
|
|
enableDeputy: deputyCheck.checked,
|
|
|
|
gameMode: config.preferedMode,
|
|
|
|
disabledPack: config.disabledPack,
|
|
|
|
generalNum: config.preferredGeneralNum,
|
|
|
|
luckTime: config.preferredLuckTime,
|
|
|
|
password: roomPassword.text,
|
|
|
|
disabledGenerals,
|
|
|
|
}])
|
|
|
|
);
|
2023-05-13 14:20:48 +08:00
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
2023-06-04 19:31:44 +08:00
|
|
|
Button {
|
|
|
|
text: Backend.translate("Cancel")
|
|
|
|
onClicked: {
|
|
|
|
root.finished();
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
Component.onCompleted: {
|
2023-06-09 17:23:02 +08:00
|
|
|
const mode_data = JSON.parse(Backend.callLuaFunction("GetGameModes", []));
|
2023-06-04 19:31:44 +08:00
|
|
|
let i = 0;
|
|
|
|
for (let d of mode_data) {
|
|
|
|
gameModeList.append(d);
|
|
|
|
if (d.orig_name == config.preferedMode) {
|
|
|
|
gameModeCombo.currentIndex = i;
|
|
|
|
}
|
|
|
|
i += 1;
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
|
2023-06-04 19:31:44 +08:00
|
|
|
playerNum.value = config.preferedPlayerNum;
|
|
|
|
}
|
2023-03-14 14:12:13 +08:00
|
|
|
}
|
|
|
|
}
|