diff --git a/resources/js/chat-room/idiom-quiz.js b/resources/js/chat-room/idiom-quiz.js index 60c9b04..b8dd3f2 100644 --- a/resources/js/chat-room/idiom-quiz.js +++ b/resources/js/chat-room/idiom-quiz.js @@ -27,23 +27,41 @@ function handleIdiomGameStarted(e) { * 收到猜成语结果事件。 */ function handleIdiomGameAnswered(e) { - const { answer, winner_username, reward_gold, reward_exp } = e.detail || {}; + const { answer, winner_username, reward_gold, reward_exp, round_id } = e.detail || {}; if (!answer) return; currentRoundId = 0; - // 如果当前用户打开答题弹窗但被别人抢先了,关闭弹窗 + // 关闭当前用户的答题弹窗(如果开着的话) const answerModal = document.getElementById("idiom-answer-modal"); if (answerModal && answerModal.style.display !== "none") { answerModal.style.display = "none"; - window.chatToast?.show({ - title: "被抢先了", - message: `${winner_username} 率先答对了「${answer}」,下次加油!`, - icon: "😅", - color: "#f59e0b", - duration: 4000, - }); } + + // ── 全局文字提示:在聊天窗口中追加结果消息 ── + const now = new Date(); + const timeStr = now.getHours().toString().padStart(2, "0") + ":" + + now.getMinutes().toString().padStart(2, "0") + ":" + + now.getSeconds().toString().padStart(2, "0"); + + const div = document.createElement("div"); + div.className = "msg-line"; + div.innerHTML = `🎉 恭喜 ${winner_username} 率先答对成语「${answer}」,获得 ${reward_gold} 金币、${reward_exp} 经验!(${timeStr})`; + + const say1 = document.getElementById("chat-messages-container"); + if (say1) { + say1.appendChild(div); + say1.scrollTop = say1.scrollHeight; + } + + // ── Toast 通知(所有在线用户都能看到) ── + window.chatToast?.show({ + title: "🧩 猜成语", + message: `${winner_username} 答对了「${answer}」,获得 ${reward_gold}💰 + ${reward_exp}⭐!`, + icon: "🎉", + color: "#16a34a", + duration: 6000, + }); } /**