FreeKill/Fk/Config.qml

205 lines
6.7 KiB
QML
Raw Permalink Normal View History

// 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 var favoriteServers: []
property string lobbyBg
property string roomBg
property string bgmFile
property string language
// property list<string> disabledPack: []
property string preferedMode
property int preferedPlayerNum
property int preferredGeneralNum
property var preferredFilter
property string ladyImg
2023-04-28 18:24:31 +08:00
property real bgmVolume
property bool disableMsgAudio
property bool hideUseless
2024-04-07 14:43:39 +08:00
property bool hideObserverChatter
property bool rotateTableCard
property bool hidePresents
// property list<string> disabledGenerals: []
// property list<var> disableGeneralSchemes: []
// property int disableSchemeIdx: 0
property list<var> disableSchemes: []
property int currentDisableIdx: 0
property var curScheme
property int preferredTimeout
property int preferredLuckTime
property bool firstRun: true
// Player property of client
property string serverAddr
property int serverPort
property string screenName: ""
property string password: ""
property string cipherText
property string aeskey
// string => { roomId => config }
property var roomConfigCache: ({})
// Client data
property string serverMotd: ""
property list<string> serverHiddenPacks: []
2023-08-27 20:21:37 +08:00
property bool serverEnableBot: true
property int roomCapacity: 0
property int roomTimeout: 0
property bool heg: false
property bool enableFreeAssign: false
property bool observing: false
2023-08-01 21:01:01 +08:00
property bool replaying: false
property list<string> blockedUsers: []
property int totalTime: 0 // FIXME: only for notifying
onObservingChanged: lcall("SetObserving", observing);
//onReplayingChanged: lcall("SetReplaying", replaying);
// onDisabledGeneralsChanged: {
// disableGeneralSchemes[disableSchemeIdx] = disabledGenerals;
// }
function findFavorite(addr, port) {
for (const s of favoriteServers) {
if (s.addr === addr && s.port === port) {
return s;
}
}
return undefined;
}
function removeFavorite(addr, port) {
for (const i in favoriteServers) {
const s = favoriteServers[i];
if (s.addr === addr && s.port === port) {
favoriteServers.splice(i, 1);
saveConf();
return;
}
}
}
function addFavorite(addr, port, name, username, password) {
for (const i in favoriteServers) {
const s = favoriteServers[i];
if (s.addr === addr && s.port === port) {
s.name = name;
s.username = username;
s.password = password;
saveConf();
return false;
}
}
favoriteServers.unshift({ addr, port, name, username, password });
saveConf();
return true;
}
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 ?? {};
favoriteServers = conf.favoriteServers ?? [];
lobbyBg = conf.lobbyBg ?? AppPath + "/image/background";
roomBg = conf.roomBg ?? AppPath + "/image/gamebg";
bgmFile = conf.bgmFile ?? AppPath + "/audio/system/bgm.mp3";
2023-08-13 01:39:45 +08:00
language = conf.language ?? (() => {
let ret = SysLocale;
2023-11-07 12:49:31 +08:00
if (ret.startsWith('zh_')) {
return 'zh_CN';
} else {
return 'en_US';
2023-08-13 01:39:45 +08:00
}
})();
// disabledPack = conf.disabledPack ?? [ "test_p_0" ];
preferedMode = conf.preferedMode ?? "aaa_role_mode";
preferedPlayerNum = conf.preferedPlayerNum ?? 2;
preferredGeneralNum = conf.preferredGeneralNum ?? 3;
preferredFilter = conf.preferredFilter ?? {
name: "", // 房间名
id: "", // 房间ID
modes : [], // 游戏模式
full : 2, // 满员0满1未满2不限
hasPassword : 2, // 密码0有1无2不限
};
ladyImg = conf.ladyImg ?? AppPath + "/image/lady";
2023-04-28 18:24:31 +08:00
Backend.volume = conf.effectVolume ?? 50.;
bgmVolume = conf.bgmVolume ?? 50.;
disableMsgAudio = conf.disableMsgAudio ?? false;
hideUseless = conf.hideUseless ?? false;
2024-04-07 14:43:39 +08:00
hideObserverChatter = conf.hideObserverChatter ?? false;
rotateTableCard = conf.rotateTableCard ?? false;
hidePresents = conf.hidePresents ?? false;
preferredTimeout = conf.preferredTimeout ?? 15;
preferredLuckTime = conf.preferredLuckTime ?? 0;
firstRun = conf.firstRun ?? true;
// disabledGenerals = conf.disabledGenerals ?? [];
// disableGeneralSchemes = conf.disableGeneralSchemes ?? [ disabledGenerals ];
// disableSchemeIdx = conf.disableSchemeIdx ?? 0;
disableSchemes = conf.disableSchemes ?? [{
name: "",
banPkg: {}, // 被禁用的包,内部数据为 包名: 白名单武将名数组
normalPkg: {}, // 未被禁用的包,内部数据为 包名: 黑名单武将名数组
banCardPkg: [], // 被禁用的卡包
}];
currentDisableIdx = conf.currentDisableIdx ?? 0;
curScheme = disableSchemes[currentDisableIdx];
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.favoriteServers = favoriteServers;
conf.lobbyBg = lobbyBg;
conf.roomBg = roomBg;
conf.bgmFile = bgmFile;
conf.language = language;
// conf.disabledPack = disabledPack;
conf.preferedMode = preferedMode;
conf.preferedPlayerNum = preferedPlayerNum;
conf.preferredFilter = preferredFilter;
conf.ladyImg = ladyImg;
conf.preferredGeneralNum = preferredGeneralNum;
2023-04-28 18:24:31 +08:00
conf.effectVolume = Backend.volume;
conf.bgmVolume = bgmVolume;
conf.disableMsgAudio = disableMsgAudio;
conf.hideUseless = hideUseless;
2024-04-07 14:43:39 +08:00
conf.hideObserverChatter = hideObserverChatter;
conf.rotateTableCard = rotateTableCard;
conf.hidePresents = hidePresents;
conf.preferredTimeout = preferredTimeout;
conf.preferredLuckTime = preferredLuckTime;
conf.firstRun = firstRun;
// conf.disabledGenerals = disabledGenerals;
// conf.disableGeneralSchemes = disableGeneralSchemes;
// conf.disableSchemeIdx = disableSchemeIdx;
disableSchemes[currentDisableIdx] = curScheme;
conf.disableSchemes = disableSchemes;
conf.currentDisableIdx = currentDisableIdx;
conf.blockedUsers = blockedUsers;
Backend.saveConf(JSON.stringify(conf, undefined, 2));
}
}