Commit 5b525970 authored by Chunchi Che's avatar Chunchi Che

try to fix menu

parent 9a562f46
Pipeline #23494 passed with stages
in 17 minutes and 3 seconds
...@@ -15,7 +15,7 @@ import { ...@@ -15,7 +15,7 @@ import {
theme, theme,
Tooltip, Tooltip,
} from "antd"; } from "antd";
import { cloneElement } from "react"; import { cloneElement, useEffect, useState } from "react";
import { useSnapshot } from "valtio"; import { useSnapshot } from "valtio";
import { import {
...@@ -32,64 +32,80 @@ import PhaseType = ygopro.StocGameMessage.MsgNewPhase.PhaseType; ...@@ -32,64 +32,80 @@ import PhaseType = ygopro.StocGameMessage.MsgNewPhase.PhaseType;
const { phase: store } = matStore; const { phase: store } = matStore;
const { useToken } = theme; const { useToken } = theme;
const clearAllIdleInteractivities = () => {
for (const card of cardStore.inner) {
card.idleInteractivities = [];
}
};
// PhaseType, 中文, response, 是否显示,是否禁用
const initialPhaseBind: [
phase: PhaseType,
label: string,
response: number,
show: boolean,
disabled: boolean,
][] = [
[PhaseType.DRAW, "抽卡阶段", -1, true, true],
[PhaseType.STANDBY, "准备阶段", -1, true, true],
[PhaseType.MAIN1, "主要阶段 1", -1, true, true],
[PhaseType.BATTLE, "战斗阶段", 6, true, true],
[PhaseType.BATTLE_START, "战斗开始", 3, false, true],
[PhaseType.BATTLE_STEP, "战斗步骤", 3, false, true],
[PhaseType.DAMAGE, "伤害步骤", 3, false, true],
[PhaseType.DAMAGE_GAL, "伤害步骤(伤害计算)", 3, false, true],
[PhaseType.MAIN2, "主要阶段 2", 2, true, true],
[PhaseType.END, "结束阶段", 7, true, true],
[PhaseType.UNKNOWN, "未知阶段", -1, false, true],
];
export const Menu = () => { export const Menu = () => {
const { enableBp, enableM2, enableEp, currentPhase } = useSnapshot(store); const { enableBp, enableM2, enableEp, currentPhase } = useSnapshot(store);
const { currentPlayer, chainSetting } = useSnapshot(matStore); const { currentPlayer, chainSetting } = useSnapshot(matStore);
const [phaseBind, setPhaseBind] = useState(initialPhaseBind);
const clearAllIdleInteractivities = () => { useEffect(() => {
for (const card of cardStore.inner) { const endResponse = [
card.idleInteractivities = []; PhaseType.BATTLE_START,
} PhaseType.BATTLE_STEP,
}; PhaseType.DAMAGE,
PhaseType.DAMAGE_GAL,
PhaseType.BATTLE,
].includes(currentPhase)
? 3
: 7;
setPhaseBind((prev) => {
const newItems = [...prev];
const endResponse = [ for (const item of newItems) {
PhaseType.BATTLE_START, const [phase, , , ,] = item;
PhaseType.BATTLE_STEP, if (phase === PhaseType.BATTLE) {
PhaseType.DAMAGE, item[4] = !enableBp;
PhaseType.DAMAGE_GAL, } else if (phase === PhaseType.MAIN2) {
PhaseType.BATTLE, item[4] = !enableM2;
].includes(currentPhase) } else if (phase === PhaseType.END) {
? 3 item[4] = !enableEp;
: 7; item[2] = endResponse;
}
}
// PhaseType, 中文, response, 是否显示,是否禁用 return newItems;
const phaseBind: [ });
phase: PhaseType, }, [enableBp, enableM2, enableEp, currentPhase]);
label: string,
response: number,
show: boolean,
disabled: boolean,
][] = [
[PhaseType.DRAW, "抽卡阶段", -1, true, true],
[PhaseType.STANDBY, "准备阶段", -1, true, true],
[PhaseType.MAIN1, "主要阶段 1", -1, true, true],
[PhaseType.BATTLE, "战斗阶段", 6, true, !enableBp],
[PhaseType.BATTLE_START, "战斗开始", 3, false, true],
[PhaseType.BATTLE_STEP, "战斗步骤", 3, false, true],
[PhaseType.DAMAGE, "伤害步骤", 3, false, true],
[PhaseType.DAMAGE_GAL, "伤害步骤(伤害计算)", 3, false, true],
[PhaseType.MAIN2, "主要阶段 2", 2, true, !enableM2],
[PhaseType.END, "结束阶段", endResponse, true, !enableEp],
[PhaseType.UNKNOWN, "未知阶段", -1, false, true],
];
const phaseSwitchItems: MenuProps["items"] = phaseBind const phaseSwitchItems: MenuProps["items"] = phaseBind
.filter(([, , , show]) => show) .filter(([, , , show]) => show)
.map(([phase, label, response, _, disabled], key) => ({ .map(([phase, label, response, _, disabled], key) => ({
key, key,
label, label,
disabled: store.currentPhase >= phase || disabled, disabled: disabled,
onClick: () => { onClick: () => {
if (response === 2) sendSelectIdleCmdResponse(response); if (response === 2) sendSelectIdleCmdResponse(response);
else sendSelectBattleCmdResponse(response); else sendSelectBattleCmdResponse(response);
clearAllIdleInteractivities(); clearAllIdleInteractivities();
}, },
icon: icon: disabled ? <CheckOutlined /> : <ArrowRightOutlined />,
store.currentPhase >= phase || disabled ? (
<CheckOutlined />
) : (
<ArrowRightOutlined />
),
danger: phase === PhaseType.END, danger: phase === PhaseType.END,
})); }));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment