新建项目

This commit is contained in:
2026-07-29 10:50:33 +08:00
parent bfd3841cbd
commit 4f69b859a8
49 changed files with 5565 additions and 0 deletions

98
pages/result/result.js Normal file
View File

@@ -0,0 +1,98 @@
const service = require("../../services/game-service");
const { formatCountdown } = require("../../utils/format");
Page({
data: {
code: "",
room: null,
winnerName: "",
winnerCopy: "",
ranking: [],
elapsedText: "00:00",
eventCount: 0,
errorMessage: "",
replaying: false
},
onLoad(options) {
const code = options.code || "";
const room = service.getRoom(code);
if (!room) {
this.setData({ errorMessage: "战报不存在或本地数据已被清理" });
return;
}
const hidersWin = room.winner === "hiders";
const snapshot = room.resultSnapshot;
const sourcePlayers = snapshot
? snapshot.players
: room.players.map((player) => ({
...player,
initialRole: player.initialRole || player.role,
finalRole: player.role,
survivedSeconds: 0
}));
const ranking = [...sourcePlayers]
.sort((a, b) => {
if (b.captures !== a.captures) return b.captures - a.captures;
if (b.survivedSeconds !== a.survivedSeconds) {
return b.survivedSeconds - a.survivedSeconds;
}
if (a.joinedAt !== b.joinedAt) return a.joinedAt - b.joinedAt;
return a.id.localeCompare(b.id);
})
.map((player, index) => ({
...player,
rank: index + 1,
roleText: player.initialRole === "hider" && player.finalRole === "seeker"
? "躲藏者→寻找者"
: player.initialRole === "seeker" ? "寻找者" : "躲藏者",
resultText:
player.captures > 0
? `完成 ${player.captures} 次抓捕`
: player.caughtAt
? "勇敢参与追逃"
: player.initialRole === "hider" ? "坚持到游戏结束" : "持续追踪目标"
}));
this.setData({
code,
room,
errorMessage: "",
winnerName: hidersWin ? "躲藏者胜利" : "寻找者胜利",
winnerCopy: hidersWin
? "有人成功坚持到了倒计时结束。"
: "所有躲藏者都已被找到。",
ranking,
elapsedText: formatCountdown(snapshot ? snapshot.elapsedSeconds : 0),
eventCount: snapshot ? snapshot.eventCount : room.events.length
});
},
replay() {
if (this.data.replaying) return;
this.setData({ replaying: true });
try {
service.resetRoom(this.data.code);
wx.redirectTo({
url: `/pages/lobby/lobby?code=${this.data.code}`
});
} catch (error) {
this.setData({ replaying: false });
wx.showToast({ title: error.message, icon: "none" });
}
},
backHome() {
service.clearCurrentRoom();
wx.reLaunch({ url: "/pages/home/home" });
},
onShareAppMessage() {
if (!this.data.room) {
return { title: "藏猫猫计划", path: "/pages/home/home" };
}
return {
title: `${this.data.room.name}${this.data.winnerName}`,
path: "/pages/home/home"
};
}
});