支持所有游戏按房间范围配置和运行
This commit is contained in:
@@ -9,6 +9,7 @@ let fishToken = null;
|
||||
let autoFishing = false;
|
||||
let autoFishCooldownTimer = null;
|
||||
let autoFishCooldownCountdown = null;
|
||||
let fishingCastPending = false;
|
||||
|
||||
/**
|
||||
* 读取 CSRF Token。
|
||||
@@ -199,6 +200,25 @@ function setFishingButton(text, disabled) {
|
||||
button.disabled = disabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前是否已有进行中的钓鱼会话。
|
||||
*
|
||||
* 说明:
|
||||
* - 手动点击抛竿后,在等待浮漂、等待点击、等待自动收竿期间都视为会话未结束。
|
||||
* - 购买自动钓鱼卡后的自动接管,也必须避开这些中间态,避免重复抛竿。
|
||||
*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function hasActiveFishingSession() {
|
||||
return Boolean(
|
||||
fishingCastPending ||
|
||||
fishToken ||
|
||||
fishingTimer ||
|
||||
fishingReelTimeout ||
|
||||
document.getElementById("fishing-bobber"),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动自动钓鱼冷却倒计时(基于时间戳,不受浏览器后台节流影响)。
|
||||
*
|
||||
@@ -363,6 +383,11 @@ function hideAutoFishStopButton() {
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
export async function startFishing() {
|
||||
if (hasActiveFishingSession()) {
|
||||
return;
|
||||
}
|
||||
|
||||
fishingCastPending = true;
|
||||
setFishingButton("🎣 抛竿中...", true);
|
||||
|
||||
try {
|
||||
@@ -381,6 +406,7 @@ export async function startFishing() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 抛竿成功后进入正式钓鱼会话,由 token / timer 接管后续状态。
|
||||
fishToken = data.token;
|
||||
autoFishing = Boolean(data.auto_fishing);
|
||||
appendFishingMessage(`<span style="color:#2563eb;font-weight:bold;">🎣【钓鱼】</span>${escapeHtml(data.message)}<span class="msg-time">(${timeText()})</span>`);
|
||||
@@ -426,6 +452,8 @@ export async function startFishing() {
|
||||
window.chatDialog?.alert?.(`网络错误:${error.message}`, "网络异常", "#cc4444");
|
||||
removeBobber();
|
||||
setFishingButton("🎣 钓鱼", false);
|
||||
} finally {
|
||||
fishingCastPending = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,6 +575,7 @@ function clearAutoFishingTimers() {
|
||||
*/
|
||||
export function resetFishingBtn() {
|
||||
autoFishing = false;
|
||||
fishingCastPending = false;
|
||||
clearAutoFishingTimers();
|
||||
hideAutoFishStopButton();
|
||||
|
||||
@@ -573,7 +602,7 @@ export function checkAndAutoStartFishing() {
|
||||
const minutesLeft = Number(window.chatContext?.autoFishingMinutesLeft || 0);
|
||||
const initialCooldown = Number(window.chatContext?.fishingCooldownSeconds || 0);
|
||||
|
||||
if (minutesLeft <= 0 || autoFishing) {
|
||||
if (minutesLeft <= 0 || autoFishing || hasActiveFishingSession()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user