// SPDX-License-Identifier: GPL-3.0-or-later import QtQuick QtObject { // Client configuration property real winX property real winY property real winWidth property real winHeight property var conf: ({}) property string lastLoginServer property var savedPassword: ({}) property string lobbyBg property string roomBg property string bgmFile property string language property list disabledPack: [] property string preferedMode property int preferedPlayerNum property int preferredGeneralNum property string ladyImg property real bgmVolume property bool disableMsgAudio property bool hideUseless property list disabledGenerals: [] property list disableGeneralSchemes: [] property int disableSchemeIdx: 0 property int preferredTimeout property int preferredLuckTime property bool firstRun: true // Player property of client property string serverAddr property string screenName: "" property string password: "" property string cipherText property string aeskey // Client data property string serverMotd: "" property list serverHiddenPacks: [] property bool serverEnableBot: true property int roomCapacity: 0 property int roomTimeout: 0 property bool heg: false property bool enableFreeAssign: false property bool observing: false property bool replaying: false property list blockedUsers: [] property int totalTime: 0 // FIXME: only for notifying onDisabledGeneralsChanged: { disableGeneralSchemes[disableSchemeIdx] = disabledGenerals; } function loadConf() { conf = JSON.parse(Backend.loadConf()); winX = conf.winX ?? 100; winY = conf.winY ?? 100; winWidth = conf.winWidth ?? 960; winHeight = conf.winHeight ?? 540; lastLoginServer = conf.lastLoginServer ?? "127.0.0.1"; savedPassword = conf.savedPassword ?? {}; lobbyBg = conf.lobbyBg ?? AppPath + "/image/background"; roomBg = conf.roomBg ?? AppPath + "/image/gamebg"; bgmFile = conf.bgmFile ?? AppPath + "/audio/system/bgm.mp3"; language = conf.language ?? (() => { let ret = SysLocale; if (ret.startsWith('zh_')) { return 'zh_CN'; } else { return 'en_US'; } })(); disabledPack = conf.disabledPack ?? [ "test_p_0" ]; preferedMode = conf.preferedMode ?? "aaa_role_mode"; preferedPlayerNum = conf.preferedPlayerNum ?? 2; preferredGeneralNum = conf.preferredGeneralNum ?? 3; ladyImg = conf.ladyImg ?? AppPath + "/image/lady"; Backend.volume = conf.effectVolume ?? 50.; bgmVolume = conf.bgmVolume ?? 50.; disableMsgAudio = conf.disableMsgAudio ?? false; hideUseless = conf.hideUseless ?? false; preferredTimeout = conf.preferredTimeout ?? 15; preferredLuckTime = conf.preferredLuckTime ?? 0; firstRun = conf.firstRun ?? true; disabledGenerals = conf.disabledGenerals ?? []; disableGeneralSchemes = conf.disableGeneralSchemes ?? [ disabledGenerals ]; disableSchemeIdx = conf.disableSchemeIdx ?? 0; blockedUsers = conf.blockedUsers ?? []; } function saveConf() { conf.winX = realMainWin.x; conf.winY = realMainWin.y; conf.winWidth = realMainWin.width; conf.winHeight = realMainWin.height; conf.lastLoginServer = lastLoginServer; conf.savedPassword = savedPassword; conf.lobbyBg = lobbyBg; conf.roomBg = roomBg; conf.bgmFile = bgmFile; conf.language = language; conf.disabledPack = disabledPack; conf.preferedMode = preferedMode; conf.preferedPlayerNum = preferedPlayerNum; conf.ladyImg = ladyImg; conf.preferredGeneralNum = preferredGeneralNum; conf.effectVolume = Backend.volume; conf.bgmVolume = bgmVolume; conf.disableMsgAudio = disableMsgAudio; conf.hideUseless = hideUseless; conf.preferredTimeout = preferredTimeout; conf.preferredLuckTime = preferredLuckTime; conf.firstRun = firstRun; conf.disabledGenerals = disabledGenerals; conf.disableGeneralSchemes = disableGeneralSchemes; conf.disableSchemeIdx = disableSchemeIdx; conf.blockedUsers = blockedUsers; Backend.saveConf(JSON.stringify(conf, undefined, 2)); } }