From a6ad71c19fd58ea2feb4fa8fdcb95883209a1948 Mon Sep 17 00:00:00 2001
From: YoumuKon <38815081+YoumuKon@users.noreply.github.com>
Date: Fri, 9 Jun 2023 01:16:23 +0800
Subject: [PATCH] =?UTF-8?q?JS=E4=BF=AE=E6=94=B9+=E8=B7=9D=E7=A6=BB?=
=?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=BF=AE=E6=94=B9=20(#179)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 替换大多数let为const
- 将一些双等号替换为三等号
- 距离计算追加“玩家自己与距离为0”设定,副作用是不显示自身距离
---
Fk/Logic.js | 80 +++----
Fk/Pages/Logic.js | 4 +-
Fk/Pages/RoomLogic.js | 492 +++++++++++++++++++++---------------------
lua/core/player.lua | 3 +-
4 files changed, 293 insertions(+), 286 deletions(-)
diff --git a/Fk/Logic.js b/Fk/Logic.js
index c413f893..c7c19afd 100644
--- a/Fk/Logic.js
+++ b/Fk/Logic.js
@@ -17,7 +17,7 @@ function createClientPages() {
var callbacks = {};
let sheduled_download = "";
-callbacks["NetworkDelayTest"] = function(jsonData) {
+callbacks["NetworkDelayTest"] = (jsonData) => {
// jsonData: RSA pub key
let cipherText;
let aeskey;
@@ -37,10 +37,10 @@ callbacks["NetworkDelayTest"] = function(jsonData) {
Backend.replyDelayTest(config.screenName, cipherText);
}
-callbacks["ErrorMsg"] = function(jsonData) {
+callbacks["ErrorMsg"] = (jsonData) => {
let log;
try {
- let a = JSON.parse(jsonData);
+ const a = JSON.parse(jsonData);
log = qsTr(a[0]).arg(a[1]);
} catch (e) {
log = qsTr(jsonData);
@@ -58,22 +58,22 @@ callbacks["ErrorMsg"] = function(jsonData) {
callbacks["UpdatePackage"] = (jsonData) => sheduled_download = jsonData;
-callbacks["UpdateBusyText"] = function(jsonData) {
+callbacks["UpdateBusyText"] = (jsonData) => {
mainWindow.busyText = jsonData;
}
-callbacks["DownloadComplete"] = function() {
+callbacks["DownloadComplete"] = () => {
mainWindow.busy = false;
mainStack.currentItem.downloadComplete(); // should be pacman page
}
-callbacks["BackToStart"] = function(jsonData) {
+callbacks["BackToStart"] = (jsonData) => {
while (mainStack.depth > 1) {
mainStack.pop();
}
}
-callbacks["EnterLobby"] = function(jsonData) {
+callbacks["EnterLobby"] = (jsonData) => {
// depth == 1 means the lobby page is not present in mainStack
createClientPages();
if (mainStack.depth === 1) {
@@ -92,50 +92,54 @@ callbacks["EnterLobby"] = function(jsonData) {
mainWindow.busy = false;
}
-callbacks["EnterRoom"] = function(jsonData) {
+callbacks["EnterRoom"] = (jsonData) => {
// jsonData: int capacity, int timeout
- let data = JSON.parse(jsonData);
+ const data = JSON.parse(jsonData);
config.roomCapacity = data[0];
config.roomTimeout = data[1] - 1;
- let roomSettings = data[2];
+ const roomSettings = data[2];
config.enableFreeAssign = roomSettings.enableFreeAssign;
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],
- hasPassword: room[5] ? true : false,
+callbacks["UpdateRoomList"] = (jsonData) => {
+ const current = mainStack.currentItem; // should be lobby
+ if (mainStack.currentItem === 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],
+ hasPassword: room[5] ? true : false,
+ });
});
- });
+ }
}
callbacks["UpdatePlayerNum"] = (j) => {
- let current = mainStack.currentItem; // should be lobby
- let data = JSON.parse(j);
- let l = data[0];
- let s = data[1];
- current.lobbyPlayerNum = l;
- current.serverPlayerNum = s;
+ const current = mainStack.currentItem; // should be lobby
+ if (mainStack.currentItem === lobby) {
+ const data = JSON.parse(j);
+ const l = data[0];
+ const s = data[1];
+ current.lobbyPlayerNum = l;
+ current.serverPlayerNum = s;
+ }
}
-callbacks["Chat"] = function(jsonData) {
+callbacks["Chat"] = (jsonData) => {
// jsonData: { string userName, string general, string time, string msg }
- let current = mainStack.currentItem; // lobby or room
- let data = JSON.parse(jsonData);
- let pid = data.sender;
- let userName = data.userName;
- let general = Backend.translate(data.general);
- let time = data.time;
- let msg = data.msg;
+ const current = mainStack.currentItem; // lobby or room
+ const data = JSON.parse(jsonData);
+ const pid = data.sender;
+ const userName = data.userName;
+ const general = Backend.translate(data.general);
+ const time = data.time;
+ const msg = data.msg;
if (general === "")
current.addToChat(pid, data, `[${time}] ${userName}: ${msg}`);
@@ -143,8 +147,8 @@ callbacks["Chat"] = function(jsonData) {
current.addToChat(pid, data, `[${time}] ${userName}(${general}): ${msg}`);
}
-callbacks["ServerMessage"] = function(jsonData) {
- let current = mainStack.currentItem; // lobby or room
+callbacks["ServerMessage"] = (jsonData) => {
+ const current = mainStack.currentItem; // lobby or room
current.sendDanmaku('[Server] ' + jsonData);
}
diff --git a/Fk/Pages/Logic.js b/Fk/Pages/Logic.js
index 15c0db6e..da8288f7 100644
--- a/Fk/Pages/Logic.js
+++ b/Fk/Pages/Logic.js
@@ -1,12 +1,12 @@
// SPDX-License-Identifier: GPL-3.0-or-later
-callbacks["UpdateAvatar"] = function(jsonData) {
+callbacks["UpdateAvatar"] = (jsonData) => {
mainWindow.busy = false;
Self.avatar = jsonData;
toast.show("Update avatar done.");
}
-callbacks["UpdatePassword"] = function(jsonData) {
+callbacks["UpdatePassword"] = (jsonData) => {
mainWindow.busy = false;
if (jsonData === "1")
toast.show("Update password done.");
diff --git a/Fk/Pages/RoomLogic.js b/Fk/Pages/RoomLogic.js
index 096630c1..2c5ed583 100644
--- a/Fk/Pages/RoomLogic.js
+++ b/Fk/Pages/RoomLogic.js
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
-var Card = {
+const Card = {
Unknown : 0,
PlayerHand : 1,
PlayerEquip : 2,
@@ -26,12 +26,12 @@ function arrangePhotos() {
const roomAreaPadding = -16;
const verticalPadding = -175 / 8;
const horizontalSpacing = 32;
- let verticalSpacing = (roomArea.width - photoWidth * 7) / 8;
+ const verticalSpacing = (roomArea.width - photoWidth * 7) / 8;
// Position 1-7
- let startX = verticalPadding + verticalSpacing;
- let padding = photoWidth + verticalSpacing;
- let regions = [
+ const startX = verticalPadding + verticalSpacing;
+ const padding = photoWidth + verticalSpacing;
+ const regions = [
{ x: startX + padding * 6, y: roomScene.height - 220 },
{ x: startX + padding * 6, y: roomAreaPadding + horizontalSpacing * 3 },
{ x: startX + padding * 5, y: roomAreaPadding + horizontalSpacing },
@@ -51,7 +51,7 @@ function arrangePhotos() {
[0, 1, 2, 3, 5, 6, 7],
[0, 1, 2, 3, 4, 5, 6, 7],
];
- let seatIndex = regularSeatIndex[playerNum - 2];
+ const seatIndex = regularSeatIndex[playerNum - 2];
let item, region, i;
@@ -67,7 +67,7 @@ function arrangePhotos() {
}
function doOkButton() {
- if (roomScene.state == "playing" || roomScene.state == "responding") {
+ if (roomScene.state === "playing" || roomScene.state === "responding") {
const reply = JSON.stringify(
{
card: dashboard.getSelectedCard(),
@@ -85,7 +85,7 @@ function doOkButton() {
"luckcard", true
].join(","));
- if (roomScene.extra_data.time == 1) {
+ if (roomScene.extra_data.time === 1) {
roomScene.state = "notactive";
}
@@ -95,15 +95,15 @@ function doOkButton() {
}
function doCancelButton() {
- if (roomScene.state == "playing") {
+ if (roomScene.state === "playing") {
dashboard.stopPending();
dashboard.deactivateSkillButton();
dashboard.unSelectAll();
dashboard.enableCards();
dashboard.enableSkills();
return;
- } else if (roomScene.state == "responding") {
- let p = dashboard.pending_skill;
+ } else if (roomScene.state === "responding") {
+ const p = dashboard.pending_skill;
dashboard.stopPending();
dashboard.deactivateSkillButton();
dashboard.unSelectAll();
@@ -132,14 +132,14 @@ function replyToServer(jsonData) {
roomScene.state = "notactive";
} else {
roomScene.state = "";
- let data = mainWindow.fetchMessage();
+ const data = mainWindow.fetchMessage();
return mainWindow.handleMessage(data.command, data.jsonData);
}
}
function getPhotoModel(id) {
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
if (item.id === id) {
return item;
}
@@ -149,7 +149,7 @@ function getPhotoModel(id) {
function getPhoto(id) {
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
if (item.id === id) {
return photos.itemAt(i);
}
@@ -172,7 +172,7 @@ function getAreaItem(area, id) {
return popupBox.item;
}
- let photo = getPhoto(id);
+ const photo = getPhoto(id);
if (!photo) {
return null;
}
@@ -192,12 +192,12 @@ function getAreaItem(area, id) {
function moveCards(moves) {
for (let i = 0; i < moves.length; i++) {
- let move = moves[i];
- let from = getAreaItem(move.fromArea, move.from);
- let to = getAreaItem(move.toArea, move.to);
+ const move = moves[i];
+ const from = getAreaItem(move.fromArea, move.from);
+ const to = getAreaItem(move.toArea, move.to);
if (!from || !to || from === to)
continue;
- let items = from.remove(move.ids, move.fromSpecialName);
+ const items = from.remove(move.ids, move.fromSpecialName);
if (items.length > 0)
to.add(items, move.specialName);
to.updateCardPosition(true);
@@ -228,7 +228,7 @@ function setEmotion(id, emotion, isCardId) {
// TODO: set picture emotion
return;
}
- let component = Qt.createComponent("../RoomElement/PixmapAnimation.qml");
+ const component = Qt.createComponent("../RoomElement/PixmapAnimation.qml");
if (component.status !== Component.Ready)
return;
@@ -249,7 +249,7 @@ function setEmotion(id, emotion, isCardId) {
}
}
- let animation = component.createObject(photo, {source: (OS === "Win" ? "file:///" : "") + path});
+ const animation = component.createObject(photo, {source: (OS === "Win" ? "file:///" : "") + path});
animation.anchors.centerIn = photo;
if (isCardId) {
animation.started.connect(() => photo.busy = true);
@@ -264,7 +264,7 @@ function setEmotion(id, emotion, isCardId) {
}
function changeHp(id, delta, losthp) {
- let photo = getPhoto(id);
+ const photo = getPhoto(id);
if (!photo) {
return null;
}
@@ -277,14 +277,14 @@ function changeHp(id, delta, losthp) {
}
function doIndicate(from, tos) {
- let component = Qt.createComponent("../RoomElement/IndicatorLine.qml");
+ const component = Qt.createComponent("../RoomElement/IndicatorLine.qml");
if (component.status !== Component.Ready)
return;
- let fromItem = getPhotoOrDashboard(from);
- let fromPos = mapFromItem(fromItem, fromItem.width / 2, fromItem.height / 2);
+ const fromItem = getPhotoOrDashboard(from);
+ const fromPos = mapFromItem(fromItem, fromItem.width / 2, fromItem.height / 2);
- let end = [];
+ const end = [];
for (let i = 0; i < tos.length; i++) {
if (from === tos[i])
continue;
@@ -293,17 +293,17 @@ function doIndicate(from, tos) {
end.push(toPos);
}
- let color = "#96943D";
- let line = component.createObject(roomScene, {start: fromPos, end: end, color: color});
+ const color = "#96943D";
+ const line = component.createObject(roomScene, {start: fromPos, end: end, color: color});
line.finished.connect(() => line.destroy());
line.running = true;
}
-callbacks["MaxCard"] = function(jsonData) {
- let data = JSON.parse(jsonData);
- let id = data.id;
- let cardMax = data.pcardMax;
- let photo = getPhoto(id);
+callbacks["MaxCard"] = (jsonData) => {
+ const data = JSON.parse(jsonData);
+ const id = data.id;
+ const cardMax = data.pcardMax;
+ const photo = getPhoto(id);
if (photo) {
photo.maxCard = cardMax;
}
@@ -328,21 +328,21 @@ function changeSelf(id) {
// handle pending messages
if (mainWindow.is_pending) {
- let data = mainWindow.fetchMessage();
+ const data = mainWindow.fetchMessage();
return mainWindow.handleMessage(data.command, data.jsonData);
}
}
-callbacks["AddPlayer"] = function(jsonData) {
+callbacks["AddPlayer"] = (jsonData) => {
// jsonData: int id, string screenName, string avatar, bool ready
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
if (item.id === -1) {
- let data = JSON.parse(jsonData);
- let uid = data[0];
- let name = data[1];
- let avatar = data[2];
- let ready = data[3];
+ const data = JSON.parse(jsonData);
+ const uid = data[0];
+ const name = data[1];
+ const avatar = data[2];
+ const ready = data[3];
item.id = uid;
item.screenName = name;
@@ -365,7 +365,7 @@ callbacks["AddPlayer"] = function(jsonData) {
function enableTargets(card) { // card: int | { skill: string, subcards: int[] }
if (roomScene.respond_play) {
- let candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
+ const candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
if (candidate) {
okButton.enabled = JSON.parse(Backend.callLuaFunction(
"CardFitPattern",
@@ -378,8 +378,8 @@ function enableTargets(card) { // card: int | { skill: string, subcards: int[] }
}
let i = 0;
- let candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
- let all_photos = [];
+ const candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
+ const all_photos = [];
for (i = 0; i < playerNum; i++) {
all_photos.push(photos.itemAt(i))
}
@@ -396,8 +396,8 @@ function enableTargets(card) { // card: int | { skill: string, subcards: int[] }
all_photos.forEach(photo => {
photo.state = "candidate";
- let id = photo.playerid;
- let ret = JSON.parse(Backend.callLuaFunction(
+ const id = photo.playerid;
+ const ret = JSON.parse(Backend.callLuaFunction(
"CanUseCardToTarget",
[card, id, selected_targets]
));
@@ -412,12 +412,12 @@ function enableTargets(card) { // card: int | { skill: string, subcards: int[] }
"CardFitPattern",
[card, roomScene.responding_card]
));
- } else if (okButton.enabled && roomScene.state == "playing") {
+ } else if (okButton.enabled && roomScene.state === "playing") {
okButton.enabled = JSON.parse(Backend.callLuaFunction("CanUseCard", [card, Self.id]));
}
if (okButton.enabled) {
if (roomScene.extra_data instanceof Object) {
- let must = roomScene.extra_data.must_targets;
+ const must = roomScene.extra_data.must_targets;
if (must instanceof Array) {
okButton.enabled = (must.length === 0);
}
@@ -435,9 +435,9 @@ function enableTargets(card) { // card: int | { skill: string, subcards: int[] }
function updateSelectedTargets(playerid, selected) {
let i = 0;
- let card = dashboard.getSelectedCard();
- let candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
- let all_photos = [];
+ const card = dashboard.getSelectedCard();
+ const candidate = (!isNaN(card) && card !== -1) || typeof(card) === "string";
+ const all_photos = [];
for (i = 0; i < playerNum; i++) {
all_photos.push(photos.itemAt(i))
}
@@ -451,8 +451,8 @@ function updateSelectedTargets(playerid, selected) {
if (candidate) {
all_photos.forEach(photo => {
if (photo.selected) return;
- let id = photo.playerid;
- let ret = JSON.parse(Backend.callLuaFunction(
+ const id = photo.playerid;
+ const ret = JSON.parse(Backend.callLuaFunction(
"CanUseCardToTarget",
[card, id, selected_targets]
));
@@ -467,12 +467,12 @@ function updateSelectedTargets(playerid, selected) {
"CardFitPattern",
[card, roomScene.responding_card]
));
- } else if (okButton.enabled && roomScene.state == "playing") {
+ } else if (okButton.enabled && roomScene.state === "playing") {
okButton.enabled = JSON.parse(Backend.callLuaFunction("CanUseCard", [card, Self.id]));
}
if (okButton.enabled) {
if (roomScene.extra_data instanceof Object) {
- let must = roomScene.extra_data.must_targets;
+ const must = roomScene.extra_data.must_targets;
if (must instanceof Array) {
okButton.enabled = (must.filter((val) => {
return selected_targets.indexOf(val) === -1;
@@ -490,10 +490,10 @@ function updateSelectedTargets(playerid, selected) {
}
}
-callbacks["RemovePlayer"] = function(jsonData) {
+callbacks["RemovePlayer"] = (jsonData) => {
// jsonData: int uid
- let uid = JSON.parse(jsonData)[0];
- let model = getPhotoModel(uid);
+ const uid = JSON.parse(jsonData)[0];
+ const model = getPhotoModel(uid);
if (typeof(model) !== "undefined") {
model.id = -1;
model.screenName = "";
@@ -503,13 +503,13 @@ callbacks["RemovePlayer"] = function(jsonData) {
}
}
-callbacks["RoomOwner"] = function(jsonData) {
+callbacks["RoomOwner"] = (jsonData) => {
// jsonData: int uid of the owner
- let uid = JSON.parse(jsonData)[0];
+ const uid = JSON.parse(jsonData)[0];
roomScene.isOwner = (Self.id === uid);
- let model = getPhotoModel(uid);
+ const model = getPhotoModel(uid);
if (typeof(model) !== "undefined") {
model.isOwner = true;
}
@@ -518,7 +518,7 @@ callbacks["RoomOwner"] = function(jsonData) {
function checkAllReady() {
let allReady = true;
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
if (!item.isOwner && !item.ready) {
allReady = false;
break;
@@ -536,7 +536,7 @@ callbacks["ReadyChanged"] = (j) => {
roomScene.isReady = ready === 1;
}
- let model = getPhotoModel(id);
+ const model = getPhotoModel(id);
if (typeof(model) !== "undefined") {
model.ready = ready ? true : false;
checkAllReady();
@@ -548,19 +548,19 @@ callbacks["NetStateChanged"] = (j) => {
const id = data[0];
let state = data[1];
- let model = getPhotoModel(id);
- if (state == "run" && model.dead) {
+ const model = getPhotoModel(id);
+ if (state === "run" && model.dead) {
state = "leave";
}
model.netstate = state;
}
-callbacks["PropertyUpdate"] = function(jsonData) {
+callbacks["PropertyUpdate"] = (jsonData) => {
// jsonData: int id, string property_name, value
- let data = JSON.parse(jsonData);
- let uid = data[0];
- let property_name = data[1];
- let value = data[2];
+ const data = JSON.parse(jsonData);
+ const uid = data[0];
+ const property_name = data[1];
+ const value = data[2];
let model = getPhotoModel(uid);
@@ -569,33 +569,33 @@ callbacks["PropertyUpdate"] = function(jsonData) {
}
}
-callbacks["StartGame"] = function(jsonData) {
+callbacks["StartGame"] = (jsonData) => {
roomScene.isStarted = true;
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
item.ready = false;
item.general = "";
}
}
-callbacks["ArrangeSeats"] = function(jsonData) {
+callbacks["ArrangeSeats"] = (jsonData) => {
// jsonData: seat order
- let order = JSON.parse(jsonData);
+ const order = JSON.parse(jsonData);
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
item.seatNumber = order.indexOf(item.id) + 1;
}
// make Self to the first of list, then reorder photomodel
- let selfIndex = order.indexOf(Self.id);
- let after = order.splice(selfIndex);
+ const selfIndex = order.indexOf(Self.id);
+ const after = order.splice(selfIndex);
after.push(...order);
- let photoOrder = after;
+ const photoOrder = after;
for (let i = 0; i < photoModel.count; i++) {
- let item = photoModel.get(i);
+ const item = photoModel.get(i);
item.index = photoOrder.indexOf(item.id);
}
@@ -611,12 +611,12 @@ function cancelAllFocus() {
}
}
-callbacks["MoveFocus"] = function(jsonData) {
+callbacks["MoveFocus"] = (jsonData) => {
// jsonData: int[] focuses, string command
cancelAllFocus();
- let data = JSON.parse(jsonData);
- let focuses = data[0];
- let command = data[1];
+ const data = JSON.parse(jsonData);
+ const focuses = data[0];
+ const command = data[1];
let item, model;
for (let i = 0; i < playerNum; i++) {
@@ -639,28 +639,28 @@ callbacks["MoveFocus"] = function(jsonData) {
}
}
-callbacks["PlayerRunned"] = function(jsonData) {
+callbacks["PlayerRunned"] = (jsonData) => {
// jsonData: int runner, int robot
- let data = JSON.parse(jsonData);
- let runner = data[0];
- let robot = data[1];
+ const data = JSON.parse(jsonData);
+ const runner = data[0];
+ const robot = data[1];
- let model = getPhotoModel(runner);
+ const model = getPhotoModel(runner);
if (typeof(model) !== "undefined") {
model.id = robot;
}
}
-callbacks["AskForGeneral"] = function(jsonData) {
+callbacks["AskForGeneral"] = (jsonData) => {
// jsonData: string[] Generals
- let data = JSON.parse(jsonData);
- let generals = data[0];
- let n = data[1];
- let heg = data[2];
+ const data = JSON.parse(jsonData);
+ const generals = data[0];
+ const n = data[1];
+ const heg = data[2];
roomScene.promptText = Backend.translate("#AskForGeneral");
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/ChooseGeneralBox.qml");
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
box.accepted.connect(() => {
replyToServer(JSON.stringify(box.choices));
});
@@ -671,11 +671,11 @@ callbacks["AskForGeneral"] = function(jsonData) {
box.updatePosition();
}
-callbacks["AskForSkillInvoke"] = function(jsonData) {
+callbacks["AskForSkillInvoke"] = (jsonData) => {
// jsonData: [ string name, string prompt ]
- let data = JSON.parse(jsonData);
- let skill = data[0];
- let prompt = data[1];
+ const data = JSON.parse(jsonData);
+ const skill = data[0];
+ const prompt = data[1];
roomScene.promptText = prompt ? processPrompt(prompt) : Backend.translate("#AskForSkillInvoke")
.arg(Backend.translate(skill));
roomScene.state = "replying";
@@ -684,23 +684,23 @@ callbacks["AskForSkillInvoke"] = function(jsonData) {
roomScene.cancelButton.enabled = true;
}
-callbacks["AskForGuanxing"] = function(jsonData) {
- let data = JSON.parse(jsonData);
- let cards = [];
- let min_top_cards = data.min_top_cards;
- let max_top_cards = data.max_top_cards;
- let min_bottom_cards = data.min_bottom_cards;
- let max_bottom_cards = data.max_bottom_cards;
- let top_area_name = data.top_area_name;
- let bottom_area_name = data.bottom_area_name;
+callbacks["AskForGuanxing"] = (jsonData) => {
+ const data = JSON.parse(jsonData);
+ const cards = [];
+ const min_top_cards = data.min_top_cards;
+ const max_top_cards = data.max_top_cards;
+ const min_bottom_cards = data.min_bottom_cards;
+ const max_bottom_cards = data.max_bottom_cards;
+ const top_area_name = data.top_area_name;
+ const bottom_area_name = data.bottom_area_name;
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/GuanxingBox.qml");
data.cards.forEach(id => {
- let d = Backend.callLuaFunction("GetCardData", [id]);
+ const d = Backend.callLuaFunction("GetCardData", [id]);
cards.push(JSON.parse(d));
});
- let box = roomScene.popupBox.item;
- if (max_top_cards == 0) {
+ const box = roomScene.popupBox.item;
+ if (max_top_cards === 0) {
box.areaCapacities = [max_bottom_cards];
box.areaLimits = [min_bottom_cards];
box.areaNames = [Backend.translate(bottom_area_name)];
@@ -716,25 +716,27 @@ callbacks["AskForGuanxing"] = function(jsonData) {
});
}
-callbacks["AskForExchange"] = function(jsonData) {
- let data = JSON.parse(jsonData);
- let cards = [];
- let cards_name = [];
- let capacities = [];
- let limits = [];
+callbacks["AskForExchange"] = (jsonData) => {
+ const data = JSON.parse(jsonData);
+ const cards = [];
+ const cards_name = [];
+ const capacities = [];
+ const limits = [];
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/GuanxingBox.qml");
let for_i = 0;
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
data.piles.forEach(ids => {
- ids.forEach(id => {
- let d = Backend.callLuaFunction("GetCardData", [id]);
- cards.push(JSON.parse(d));
- });
- capacities.push(ids.length);
- limits.push(0);
- cards_name.push(Backend.translate(data.piles_name[for_i]));
- for_i ++;
+ if (ids.length > 0) {
+ ids.forEach(id => {
+ const d = Backend.callLuaFunction("GetCardData", [id]);
+ cards.push(JSON.parse(d));
+ });
+ capacities.push(ids.length);
+ limits.push(0);
+ cards_name.push(Backend.translate(data.piles_name[for_i]));
+ for_i ++;
+ }
});
box.areaCapacities = capacities
box.areaLimits = limits
@@ -745,13 +747,13 @@ callbacks["AskForExchange"] = function(jsonData) {
replyToServer(JSON.stringify(box.getResult()));
});
}
-callbacks["AskForChoice"] = function(jsonData) {
+callbacks["AskForChoice"] = (jsonData) => {
// jsonData: [ string[] choices, string skill ]
// TODO: multiple choices, e.g. benxi_ol
- let data = JSON.parse(jsonData);
- let choices = data[0];
- let skill_name = data[1];
- let prompt = data[2];
+ const data = JSON.parse(jsonData);
+ const choices = data[0];
+ const skill_name = data[1];
+ const prompt = data[2];
if (prompt === "") {
roomScene.promptText = Backend.translate("#AskForChoice")
.arg(Backend.translate(skill_name));
@@ -760,7 +762,7 @@ callbacks["AskForChoice"] = function(jsonData) {
}
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/ChoiceBox.qml");
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
box.options = choices;
box.skill_name = skill_name;
box.accepted.connect(() => {
@@ -768,30 +770,30 @@ callbacks["AskForChoice"] = function(jsonData) {
});
}
-callbacks["AskForCardChosen"] = function(jsonData) {
+callbacks["AskForCardChosen"] = (jsonData) => {
// jsonData: [ int[] handcards, int[] equips, int[] delayedtricks,
// string reason ]
- let data = JSON.parse(jsonData);
- let handcard_ids = data[0];
- let equip_ids = data[1];
- let delayedTrick_ids = data[2];
- let reason = data[3];
- let handcards = [];
- let equips = [];
- let delayedTricks = [];
+ const data = JSON.parse(jsonData);
+ const handcard_ids = data[0];
+ const equip_ids = data[1];
+ const delayedTrick_ids = data[2];
+ const reason = data[3];
+ const handcards = [];
+ const equips = [];
+ const delayedTricks = [];
handcard_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
handcards.push(card_data);
});
equip_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
equips.push(card_data);
});
delayedTrick_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
delayedTricks.push(card_data);
});
@@ -799,7 +801,7 @@ callbacks["AskForCardChosen"] = function(jsonData) {
.arg(Backend.translate(reason));
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/PlayerCardBox.qml");
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
box.addHandcards(handcards);
box.addEquips(equips);
box.addDelayedTricks(delayedTricks);
@@ -809,32 +811,32 @@ callbacks["AskForCardChosen"] = function(jsonData) {
});
}
-callbacks["AskForCardsChosen"] = function(jsonData) {
+callbacks["AskForCardsChosen"] = (jsonData) => {
// jsonData: [ int[] handcards, int[] equips, int[] delayedtricks,
// int min, int max, string reason ]
- let data = JSON.parse(jsonData);
- let handcard_ids = data[0];
- let equip_ids = data[1];
- let delayedTrick_ids = data[2];
- let min = data[3];
- let max = data[4];
- let reason = data[5];
- let handcards = [];
- let equips = [];
- let delayedTricks = [];
+ const data = JSON.parse(jsonData);
+ const handcard_ids = data[0];
+ const equip_ids = data[1];
+ const delayedTrick_ids = data[2];
+ const min = data[3];
+ const max = data[4];
+ const reason = data[5];
+ const handcards = [];
+ const equips = [];
+ const delayedTricks = [];
handcard_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
handcards.push(card_data);
});
equip_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
equips.push(card_data);
});
delayedTrick_ids.forEach(id => {
- let card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
+ const card_data = JSON.parse(Backend.callLuaFunction("GetCardData", [id]));
delayedTricks.push(card_data);
});
@@ -842,7 +844,7 @@ callbacks["AskForCardsChosen"] = function(jsonData) {
.arg(Backend.translate(reason));
roomScene.state = "replying";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/PlayerCardBox.qml");
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
box.multiChoose = true;
box.min = min;
box.max = max;
@@ -855,7 +857,7 @@ callbacks["AskForCardsChosen"] = function(jsonData) {
});
}
-callbacks["AskForMoveCardInBoard"] = function(jsonData) {
+callbacks["AskForMoveCardInBoard"] = (jsonData) => {
const data = JSON.parse(jsonData);
const { cards, cardsPosition, generalNames } = data;
@@ -882,58 +884,58 @@ callbacks["AskForMoveCardInBoard"] = function(jsonData) {
});
}
-callbacks["MoveCards"] = function(jsonData) {
+callbacks["MoveCards"] = (jsonData) => {
// jsonData: merged moves
- let moves = JSON.parse(jsonData);
+ const moves = JSON.parse(jsonData);
moveCards(moves);
}
-callbacks["PlayCard"] = function(jsonData) {
+callbacks["PlayCard"] = (jsonData) => {
// jsonData: int playerId
- let playerId = parseInt(jsonData);
- if (playerId == Self.id) {
+ const playerId = parseInt(jsonData);
+ if (playerId === Self.id) {
roomScene.promptText = Backend.translate("#PlayCard");
roomScene.state = "playing";
okButton.enabled = false;
}
}
-callbacks["LoseSkill"] = function(jsonData) {
+callbacks["LoseSkill"] = (jsonData) => {
// jsonData: [ int player_id, string skill_name ]
- let data = JSON.parse(jsonData);
- let id = data[0];
- let skill_name = data[1];
- let prelight = data[2];
+ const data = JSON.parse(jsonData);
+ const id = data[0];
+ const skill_name = data[1];
+ const prelight = data[2];
if (id === Self.id) {
dashboard.loseSkill(skill_name, prelight);
}
}
-callbacks["AddSkill"] = function(jsonData) {
+callbacks["AddSkill"] = (jsonData) => {
// jsonData: [ int player_id, string skill_name ]
- let data = JSON.parse(jsonData);
- let id = data[0];
- let skill_name = data[1];
- let prelight = data[2];
+ const data = JSON.parse(jsonData);
+ const id = data[0];
+ const skill_name = data[1];
+ const prelight = data[2];
if (id === Self.id) {
dashboard.addSkill(skill_name, prelight);
}
}
-callbacks["PrelightSkill"] = function(jsonData) {
- let data = JSON.parse(jsonData);
- let skill_name = data[0];
- let prelight = data[1];
+callbacks["PrelightSkill"] = (jsonData) => {
+ const data = JSON.parse(jsonData);
+ const skill_name = data[0];
+ const prelight = data[1];
dashboard.prelightSkill(skill_name, prelight);
}
// prompt: 'string::::'
function processPrompt(prompt) {
- let data = prompt.split(":");
+ const data = prompt.split(":");
let raw = Backend.translate(data[0]);
- let src = parseInt(data[1]);
- let dest = parseInt(data[2]);
+ const src = parseInt(data[1]);
+ const dest = parseInt(data[2]);
if (raw.match("%src")) raw = raw.replace("%src", Backend.translate(getPhoto(src).general));
if (raw.match("%dest")) raw = raw.replace("%dest", Backend.translate(getPhoto(dest).general));
if (raw.match("%arg")) raw = raw.replace("%arg", Backend.translate(data[3]));
@@ -941,13 +943,13 @@ function processPrompt(prompt) {
return raw;
}
-callbacks["AskForUseActiveSkill"] = function(jsonData) {
+callbacks["AskForUseActiveSkill"] = (jsonData) => {
// jsonData: string skill_name, string prompt
- let data = JSON.parse(jsonData);
- let skill_name = data[0];
- let prompt = data[1];
- let cancelable = data[2];
- let extra_data = data[3] ?? {};
+ const data = JSON.parse(jsonData);
+ const skill_name = data[0];
+ const prompt = data[1];
+ const cancelable = data[2];
+ const extra_data = data[3] ?? {};
if (prompt === "") {
roomScene.promptText = Backend.translate("#AskForUseActiveSkill")
.arg(Backend.translate(skill_name));
@@ -969,21 +971,21 @@ callbacks["AskForUseActiveSkill"] = function(jsonData) {
cancelButton.enabled = cancelable;
}
-callbacks["CancelRequest"] = function() {
+callbacks["CancelRequest"] = () => {
roomScene.state = "notactive";
}
-callbacks["GameLog"] = function(jsonData) {
+callbacks["GameLog"] = (jsonData) => {
roomScene.addToLog(jsonData)
}
-callbacks["AskForUseCard"] = function(jsonData) {
+callbacks["AskForUseCard"] = (jsonData) => {
// jsonData: card, pattern, prompt, cancelable, {}
- let data = JSON.parse(jsonData);
- let cardname = data[0];
- let pattern = data[1];
- let prompt = data[2];
- let extra_data = data[4];
+ const data = JSON.parse(jsonData);
+ const cardname = data[0];
+ const pattern = data[1];
+ const prompt = data[2];
+ const extra_data = data[4];
if (extra_data != null) {
roomScene.extra_data = extra_data;
}
@@ -1001,12 +1003,12 @@ callbacks["AskForUseCard"] = function(jsonData) {
cancelButton.enabled = true;
}
-callbacks["AskForResponseCard"] = function(jsonData) {
+callbacks["AskForResponseCard"] = (jsonData) => {
// jsonData: card_name, pattern, prompt, cancelable, {}
- let data = JSON.parse(jsonData);
- let cardname = data[0];
- let pattern = data[1];
- let prompt = data[2];
+ const data = JSON.parse(jsonData);
+ const cardname = data[0];
+ const pattern = data[1];
+ const prompt = data[2];
if (prompt === "") {
roomScene.promptText = Backend.translate("#AskForResponseCard")
@@ -1021,25 +1023,25 @@ callbacks["AskForResponseCard"] = function(jsonData) {
cancelButton.enabled = true;
}
-callbacks["WaitForNullification"] = function() {
+callbacks["WaitForNullification"] = () => {
roomScene.state = "notactive";
}
-callbacks["SetPlayerMark"] = function(jsonData) {
- let data = JSON.parse(jsonData);
- let player = getPhoto(data[0]);
- let mark = data[1];
- let value = data[2] instanceof Array ? data[2] : data[2].toString();
- if (value == 0) {
+callbacks["SetPlayerMark"] = (jsonData) => {
+ const data = JSON.parse(jsonData);
+ const player = getPhoto(data[0]);
+ const mark = data[1];
+ const value = data[2] instanceof Array ? data[2] : data[2].toString();
+ if (value === 0) {
player.markArea.removeMark(mark);
} else {
player.markArea.setMark(mark, mark.startsWith("@@") ? "" : value);
}
}
-callbacks["Animate"] = function(jsonData) {
+callbacks["Animate"] = (jsonData) => {
// jsonData: [Object object]
- let data = JSON.parse(jsonData);
+ const data = JSON.parse(jsonData);
switch (data.type) {
case "Indicate":
data.to.forEach(item => {
@@ -1055,8 +1057,8 @@ callbacks["Animate"] = function(jsonData) {
case "LightBox":
break;
case "SuperLightBox": {
- let path = data.path;
- let jsonData = data.data;
+ const path = data.path;
+ const jsonData = data.data;
roomScene.bigAnim.source = AppPath + "/" + path;
if (jsonData && jsonData !== "") {
roomScene.bigAnim.item.loadData(jsonData);
@@ -1064,17 +1066,17 @@ callbacks["Animate"] = function(jsonData) {
break;
}
case "InvokeSkill": {
- let id = data.player;
- let component = Qt.createComponent("../RoomElement/SkillInvokeAnimation.qml");
+ const id = data.player;
+ const component = Qt.createComponent("../RoomElement/SkillInvokeAnimation.qml");
if (component.status !== Component.Ready)
return;
- let photo = getPhoto(id);
+ const photo = getPhoto(id);
if (!photo) {
return null;
}
- let animation = component.createObject(photo, {
+ const animation = component.createObject(photo, {
skill_name: Backend.translate(data.name),
skill_type: (data.skill_type ? data.skill_type : "special"),
});
@@ -1087,12 +1089,12 @@ callbacks["Animate"] = function(jsonData) {
}
}
-callbacks["LogEvent"] = function(jsonData) {
+callbacks["LogEvent"] = (jsonData) => {
// jsonData: [Object object]
- let data = JSON.parse(jsonData);
+ const data = JSON.parse(jsonData);
switch (data.type) {
case "Damage": {
- let item = getPhotoOrDashboard(data.to);
+ const item = getPhotoOrDashboard(data.to);
setEmotion(data.to, "damage");
item.tremble();
data.damageType = data.damageType || "normal_damage";
@@ -1110,10 +1112,10 @@ callbacks["LogEvent"] = function(jsonData) {
break;
}
case "PlaySkillSound": {
- let skill = data.name;
+ const skill = data.name;
let extension = data.extension;
if (!extension) {
- let data = JSON.parse(Backend.callLuaFunction("GetSkillData", [skill]));
+ const data = JSON.parse(Backend.callLuaFunction("GetSkillData", [skill]));
extension = data.extension;
}
Backend.playSound("./packages/" + extension + "/audio/skill/" + skill, data.i);
@@ -1124,8 +1126,8 @@ callbacks["LogEvent"] = function(jsonData) {
break;
}
case "Death": {
- let item = getPhoto(data.to);
- let extension = JSON.parse(Backend.callLuaFunction("GetGeneralData", [item.general])).extension;
+ const item = getPhoto(data.to);
+ const extension = JSON.parse(Backend.callLuaFunction("GetGeneralData", [item.general])).extension;
Backend.playSound("./packages/" + extension + "/audio/death/" + item.general);
}
default:
@@ -1133,17 +1135,17 @@ callbacks["LogEvent"] = function(jsonData) {
}
}
-callbacks["GameOver"] = function(jsonData) {
+callbacks["GameOver"] = (jsonData) => {
roomScene.state = "notactive";
roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/GameOverBox.qml");
- let box = roomScene.popupBox.item;
+ const box = roomScene.popupBox.item;
box.winner = jsonData;
// roomScene.isStarted = false;
}
callbacks["FillAG"] = (j) => {
- let data = JSON.parse(j);
- let ids = data[0];
+ const data = JSON.parse(j);
+ const ids = data[0];
roomScene.manualBox.sourceComponent = Qt.createComponent("../RoomElement/AG.qml");
roomScene.manualBox.item.addIds(ids);
}
@@ -1155,11 +1157,11 @@ callbacks["AskForAG"] = (j) => {
callbacks["TakeAG"] = (j) => {
if (!roomScene.manualBox.item) return;
- let data = JSON.parse(j);
- let pid = data[0];
- let cid = data[1];
- let item = getPhoto(pid);
- let general = Backend.translate(item.general);
+ const data = JSON.parse(j);
+ const pid = data[0];
+ const cid = data[1];
+ const item = getPhoto(pid);
+ const general = Backend.translate(item.general);
// the item should be AG box
roomScene.manualBox.item.takeAG(general, cid);
@@ -1168,9 +1170,9 @@ callbacks["TakeAG"] = (j) => {
callbacks["CloseAG"] = () => roomScene.manualBox.item.close();
callbacks["CustomDialog"] = (j) => {
- let data = JSON.parse(j);
- let path = data.path;
- let dat = data.data;
+ const data = JSON.parse(j);
+ const path = data.path;
+ const dat = data.data;
roomScene.state = "replying";
roomScene.popupBox.source = AppPath + "/" + path;
if (dat) {
@@ -1179,38 +1181,38 @@ callbacks["CustomDialog"] = (j) => {
}
callbacks["UpdateLimitSkill"] = (j) => {
- let data = JSON.parse(j);
- let id = data[0];
- let skill = data[1];
- let time = data[2];
+ const data = JSON.parse(j);
+ const id = data[0];
+ const skill = data[1];
+ const time = data[2];
- let photo = getPhoto(id);
+ const photo = getPhoto(id);
if (photo) {
photo.updateLimitSkill(skill, time);
}
}
callbacks["UpdateDrawPile"] = (j) => {
- let data = parseInt(j);
+ const data = parseInt(j);
roomScene.miscStatus.pileNum = data;
}
callbacks["UpdateRoundNum"] = (j) => {
- let data = parseInt(j);
+ const data = parseInt(j);
roomScene.miscStatus.roundNum = data;
}
// 神貂蝉
callbacks["StartChangeSelf"] = (j) => {
- let id = parseInt(j);
+ const id = parseInt(j);
ClientInstance.notifyServer("PushRequest", "changeself," + j);
}
callbacks["ChangeSelf"] = (j) => {
- let data = parseInt(j);
+ const data = parseInt(j);
if (Self.id === data) {
- let msg = mainWindow.fetchMessage();
+ const msg = mainWindow.fetchMessage();
if (!msg) return;
mainWindow.handleMessage(msg.command, msg.jsonData);
return;
diff --git a/lua/core/player.lua b/lua/core/player.lua
index 1422e88c..21c8b9b0 100644
--- a/lua/core/player.lua
+++ b/lua/core/player.lua
@@ -397,7 +397,8 @@ end
--- 通过 二者位次+距离技能之和 与 两者间固定距离 进行对比,更大的为实际距离。
---@param other Player @ 其他玩家
function Player:distanceTo(other)
- assert(other:isInstanceOf(Player))
+ -- assert(other:isInstanceOf(Player))
+ if other == self then return 0 end
local right = 0
local temp = self
while temp ~= other do