This commit is contained in:
2026-10-07 18:33:54 +08:00
parent 5285beedc0
commit 3b20ffaf11
7 changed files with 117 additions and 33 deletions
@@ -3893,35 +3893,48 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
}
/// <summary>
/// ⭐ SuoDing 面板关闭时应用勾选结果(由 SuoDingPanel.OnHide 回调):
/// 1. 打开锁定开关(toggle_Lock)
/// 2. 直接激活自动锁定(跳过"先手动锁定一条鱼"的前提)
/// 3. 有勾选 → 进入"图鉴锁定"模式:之后的锁定只从勾选的鱼里选目标
/// ⭐ 一个都没勾 → 不进入图鉴模式(白名单不生效),等同于正常锁定,不会干扰正常玩法。
/// 白名单(selectedSet)由面板 Toggle 实时同步;自动锁定仍按原有优先级
/// ⭐ 图鉴/锁定面板关闭时应用勾选结果:
/// 1. 一条都没勾选 → **不开启锁定功能**(锁定开关/图鉴模式/自动锁定全部保持原样,直接返回)
/// 2. 有勾选 → 打开锁定开关 + 激活自动锁定 + 进入"图鉴锁定"模式(之后只锁勾选的鱼)
/// 白名单由面板勾选列表实时同步;自动锁定仍按原有优先级
/// (特殊Boss > Boss鱼 > 特殊鱼 > 黄金鱼)只从选中的鱼里选目标,选中的鱼死光则不锁定。
/// </summary>
public void ApplySuoDingSelection()
{
// ⭐ 一条都没勾选 → 不开启锁定功能:不碰锁定开关、不进图鉴模式、不激活自动锁定
if (!HasSuoDingSelection())
{
_suoDingMode = false;
return;
}
// 打开锁定开关(已打开则不变;关闭时 onValueChanged 的重置逻辑只在 !on 分支,不受影响)
if (toggle_Lock != null && !toggle_Lock.isOn)
toggle_Lock.isOn = true;
// ⭐ 有勾选才算"图鉴锁定"模式(默认全不选 → 保持正常锁定)
var panel = subUIManager.Get<SuoDingPanel>(UIPanel.GameSuoDing);
_suoDingMode = panel != null && panel.HasSelection;
// ⭐ 有勾选 → 进入"图鉴锁定"模式:之后的锁定只从勾选的鱼里选目标
_suoDingMode = true;
// ⭐ 面板选完即应用:自动锁定立即开始找目标
_autoLockActivated = true;
// ⭐ 三发模式:退出"等手动点击"状态,允许重新按勾选建位
_tripleLockWaitManual = false;
// ⭐ 只有进入图鉴模式时,才把当前手动锁定的目标转为自动锁定(交给白名单筛选);
// 正常锁定(没勾选)保持手动锁定不动,避免把玩家点的鱼放掉
if (_suoDingMode && currSitData != null && currSitData.isManualLock)
// ⭐ 进入图鉴模式后,把当前手动锁定的目标转为自动锁定(交给白名单筛选)
if (currSitData != null && currSitData.isManualLock)
currSitData.isManualLock = false;
}
/// <summary>
/// ⭐ 图鉴/锁定面板当前是否勾选了至少一条鱼(决定关闭面板时是否开启锁定功能)。
/// 通用 = 通用 SuoDing 面板的勾选;XJMH 覆写为原版 PW_SetLock 面板的勾选列表。
/// </summary>
protected virtual bool HasSuoDingSelection()
{
var panel = subUIManager.Get<SuoDingPanel>(UIPanel.GameSuoDing);
return panel != null && panel.HasSelection;
}
private void HandleAutoLock()
{
// ⭐ 退出倒计时期间屏蔽本地玩家自动锁定,其他玩家和机器人不受影响