mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 19:58:13 +08:00
a02410c282
* splash screen when app is loading * doRaceRequest * prepare to add fkparse feature * player mark operation * dont call lua in regular room * dont call lua in lobby * clean up * idle_room in Cpp's class Server * fix many small bugs * Security enhancement (#27) * use RSA encryption when sending password * update fkp's url so other can clone it * add salt to password * save password * fix default config bug * fix room reuse bug * disable empty usr name * how to compile (#28) * add some doc * how to compile * update readme * Actions (#29) * judge(not tested) * logic of chat * sendlog at most scenario * adjust ui, add shortcuts * ui, z axis of cardArea * create server cli, improve logging * basic shell using * use gnu readline instead * use static QRegularExp * fix android build * fix automoc problem * MD5 check * md5 check bugfix * cardEffectEvent (#30) * cardEffectEvent * add TODOs * thinking Co-authored-by: Ho-spair <62695577+Ho-spair@users.noreply.github.com>
102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
var generalsOverviewPage, cardsOverviewPage;
|
|
var clientPageCreated = false;
|
|
function createClientPages() {
|
|
if (!clientPageCreated) {
|
|
clientPageCreated = true;
|
|
|
|
generalsOverviewPage = generalsOverview.createObject(mainWindow);
|
|
cardsOverviewPage = cardsOverview.createObject(mainWindow);
|
|
|
|
mainWindow.generalsOverviewPage = generalsOverviewPage;
|
|
mainWindow.cardsOverviewPage = cardsOverviewPage;
|
|
}
|
|
}
|
|
|
|
var callbacks = {};
|
|
|
|
callbacks["NetworkDelayTest"] = function(jsonData) {
|
|
// jsonData: RSA pub key
|
|
let cipherText
|
|
if (config.savedPassword[config.serverAddr] !== undefined
|
|
&& config.savedPassword[config.serverAddr].shorten_password === config.password) {
|
|
cipherText = config.savedPassword[config.serverAddr].password;
|
|
if (Debugging)
|
|
console.log("use remembered password", config.password);
|
|
} else {
|
|
cipherText = Backend.pubEncrypt(jsonData, config.password);
|
|
}
|
|
config.cipherText = cipherText;
|
|
let md5sum = Backend.calcFileMD5();
|
|
ClientInstance.notifyServer("Setup", JSON.stringify([
|
|
config.screenName, cipherText, md5sum
|
|
]));
|
|
}
|
|
|
|
callbacks["ErrorMsg"] = function(jsonData) {
|
|
console.log("ERROR: " + jsonData);
|
|
toast.show(jsonData, 5000);
|
|
mainWindow.busy = false;
|
|
}
|
|
|
|
callbacks["BackToStart"] = function(jsonData) {
|
|
while (mainStack.depth > 1) {
|
|
mainStack.pop();
|
|
}
|
|
}
|
|
|
|
callbacks["EnterLobby"] = function(jsonData) {
|
|
// depth == 1 means the lobby page is not present in mainStack
|
|
createClientPages();
|
|
if (mainStack.depth === 1) {
|
|
// we enter the lobby successfully, so save password now.
|
|
config.lastLoginServer = config.serverAddr;
|
|
config.savedPassword[config.serverAddr] = {
|
|
username: config.screenName,
|
|
password: config.cipherText,
|
|
shorten_password: config.cipherText.slice(0, 8)
|
|
}
|
|
mainStack.push(lobby);
|
|
} else {
|
|
mainStack.pop();
|
|
}
|
|
mainWindow.busy = false;
|
|
}
|
|
|
|
callbacks["EnterRoom"] = function(jsonData) {
|
|
// jsonData: int capacity, int timeout
|
|
let data = JSON.parse(jsonData);
|
|
config.roomCapacity = data[0];
|
|
config.roomTimeout = data[1] - 1;
|
|
mainStack.push(room);
|
|
mainWindow.busy = false;
|
|
}
|
|
|
|
callbacks["UpdateRoomList"] = function(jsonData) {
|
|
let current = mainStack.currentItem; // should be lobby
|
|
current.roomModel.clear();
|
|
JSON.parse(jsonData).forEach(function(room) {
|
|
current.roomModel.append({
|
|
roomId: room[0],
|
|
roomName: room[1],
|
|
gameMode: room[2],
|
|
playerNum: room[3],
|
|
capacity: room[4],
|
|
});
|
|
});
|
|
}
|
|
|
|
callbacks["Chat"] = function(jsonData) {
|
|
// jsonData: { string userName, string general, string time, string msg }
|
|
let current = mainStack.currentItem; // lobby(TODO) or room
|
|
let data = JSON.parse(jsonData);
|
|
let pid = data.type;
|
|
let userName = data.userName;
|
|
let general = Backend.translate(data.general);
|
|
let time = data.time;
|
|
let msg = data.msg;
|
|
if (general === "")
|
|
current.addToChat(pid, data, `[${time}] ${userName}: ${msg}`);
|
|
else
|
|
current.addToChat(pid, data, `[${time}] ${userName}(${general}): ${msg}`);
|
|
}
|