Commit 34f0aaa2 authored by chechunchi's avatar chechunchi

add optionModal slice

parent 9000063c
...@@ -37,6 +37,9 @@ import { ...@@ -37,6 +37,9 @@ import {
setPositionModalIsOpenImpl, setPositionModalIsOpenImpl,
setPositionModalPositionsImpl, setPositionModalPositionsImpl,
resetPositionModalImpl, resetPositionModalImpl,
setOptionModalIsOpenImpl,
resetOptionModalImpl,
optionModalCase,
} from "./modalSlice"; } from "./modalSlice";
import { import {
MonsterState, MonsterState,
...@@ -91,6 +94,7 @@ const initialState: DuelState = { ...@@ -91,6 +94,7 @@ const initialState: DuelState = {
checkCardModal: { isOpen: false, cancelAble: false, tags: [] }, checkCardModal: { isOpen: false, cancelAble: false, tags: [] },
yesNoModal: { isOpen: false }, yesNoModal: { isOpen: false },
positionModal: { isOpen: false, positions: [] }, positionModal: { isOpen: false, positions: [] },
optionModal: { isOpen: false, options: [] },
}, },
}; };
...@@ -141,6 +145,8 @@ const duelSlice = createSlice({ ...@@ -141,6 +145,8 @@ const duelSlice = createSlice({
setPositionModalIsOpen: setPositionModalIsOpenImpl, setPositionModalIsOpen: setPositionModalIsOpenImpl,
setPositionModalPositions: setPositionModalPositionsImpl, setPositionModalPositions: setPositionModalPositionsImpl,
resetPositionModal: resetPositionModalImpl, resetPositionModal: resetPositionModalImpl,
setOptionModalIsOpen: setOptionModalIsOpenImpl,
resetOptionModal: resetOptionModalImpl,
}, },
extraReducers(builder) { extraReducers(builder) {
handsCase(builder); handsCase(builder);
...@@ -150,6 +156,7 @@ const duelSlice = createSlice({ ...@@ -150,6 +156,7 @@ const duelSlice = createSlice({
cemeteryCase(builder); cemeteryCase(builder);
checkCardModalCase(builder); checkCardModalCase(builder);
YesNoModalCase(builder); YesNoModalCase(builder);
optionModalCase(builder);
}, },
}); });
...@@ -185,6 +192,8 @@ export const { ...@@ -185,6 +192,8 @@ export const {
setPositionModalIsOpen, setPositionModalIsOpen,
setPositionModalPositions, setPositionModalPositions,
resetPositionModal, resetPositionModal,
setOptionModalIsOpen,
resetOptionModal,
} = duelSlice.actions; } = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => { export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null; return state.duel.meInitInfo != null;
......
...@@ -58,6 +58,11 @@ export interface ModalState { ...@@ -58,6 +58,11 @@ export interface ModalState {
isOpen: boolean; isOpen: boolean;
positions: ygopro.CardPosition[]; positions: ygopro.CardPosition[];
}; };
// 选项选择弹窗
optionModal: {
isOpen: boolean;
options: { msg: string; response: number }[];
};
} }
// 更新卡牌弹窗打开状态 // 更新卡牌弹窗打开状态
...@@ -288,11 +293,43 @@ export const setPositionModalPositionsImpl: CaseReducer< ...@@ -288,11 +293,43 @@ export const setPositionModalPositionsImpl: CaseReducer<
state.modalState.positionModal.positions = action.payload; state.modalState.positionModal.positions = action.payload;
}; };
export const setOptionModalIsOpenImpl: CaseReducer<
DuelState,
PayloadAction<boolean>
> = (state, action) => {
state.modalState.optionModal.isOpen = action.payload;
};
export const resetOptionModalImpl: CaseReducer<DuelState> = (state) => {
state.modalState.optionModal.options = [];
};
export const resetPositionModalImpl: CaseReducer<DuelState> = (state) => { export const resetPositionModalImpl: CaseReducer<DuelState> = (state) => {
state.modalState.positionModal.isOpen = false; state.modalState.positionModal.isOpen = false;
state.modalState.positionModal.positions = []; state.modalState.positionModal.positions = [];
}; };
// 增加选项
export const fetchOptionMeta = createAsyncThunk(
"duel/fetchOptionMeta",
async (param: { code: number; response: number }) => {
const meta = await fetchCard(param.code >> 4);
const msg = getCardStr(meta, param.code & 0xf) || "[?]";
const response = { msg, response: param.response };
return response;
}
);
export const optionModalCase = (
builder: ActionReducerMapBuilder<DuelState>
) => {
builder.addCase(fetchOptionMeta.fulfilled, (state, action) => {
state.modalState.optionModal.options.push(action.payload);
});
};
export const selectCardModalIsOpen = (state: RootState) => export const selectCardModalIsOpen = (state: RootState) =>
state.duel.modalState.cardModal.isOpen; state.duel.modalState.cardModal.isOpen;
export const selectCardModalName = (state: RootState) => export const selectCardModalName = (state: RootState) =>
...@@ -331,3 +368,7 @@ export const selectPositionModalIsOpen = (state: RootState) => ...@@ -331,3 +368,7 @@ export const selectPositionModalIsOpen = (state: RootState) =>
state.duel.modalState.positionModal.isOpen; state.duel.modalState.positionModal.isOpen;
export const selectPositionModalPositions = (state: RootState) => export const selectPositionModalPositions = (state: RootState) =>
state.duel.modalState.positionModal.positions; state.duel.modalState.positionModal.positions;
export const selectOptionModalIsOpen = (state: RootState) =>
state.duel.modalState.optionModal.isOpen;
export const selectOptionModalOptions = (state: RootState) =>
state.duel.modalState.optionModal.options;
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