Commit 674d1518 authored by Chunchi Che's avatar Chunchi Che

add cemetery slice

parent 04463686
import { judgeSelf, Cemetery } from "./util";
import {
PayloadAction,
CaseReducer,
createAsyncThunk,
ActionReducerMapBuilder,
} from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { RootState } from "../../store";
import { fetchCard } from "../../api/cards";
export interface CemeteryState {
cemetery: Cemetery[];
}
// 初始化墓地状态
export const initCemeteryImpl: CaseReducer<DuelState, PayloadAction<number>> = (
state,
action
) => {
const player = action.payload;
if (judgeSelf(player, state)) {
state.meCemetery = { cemetery: [] };
} else {
state.opCemetery = { cemetery: [] };
}
};
export const selectMeCemetery = (state: RootState) =>
state.duel.meCemetery || { cemetery: [] };
export const selectOpCemetery = (state: RootState) =>
state.duel.opCemetery || { cemetery: [] };
......@@ -38,6 +38,7 @@ import {
clearMagicSelectInfoImpl,
magicCase,
} from "./magicSlice";
import { CemeteryState, initCemeteryImpl } from "./cemeretySlice";
export interface DuelState {
selfType?: number;
......@@ -53,6 +54,9 @@ export interface DuelState {
meMagics?: MagicState; // 自己的魔法陷阱区状态
opMagics?: MagicState; // 对手的魔法陷阱区状态
meCemetery?: CemeteryState; // 自己的墓地状态
opCemetery?: CemeteryState; // 对手的墓地状态
meTimeLimit?: TimeLimit; // 自己的计时
opTimeLimit?: TimeLimit; // 对手的计时
......@@ -99,6 +103,9 @@ const duelSlice = createSlice({
addMagicPlaceSelectAble: addMagicPlaceSelectAbleImpl,
clearMagicSelectInfo: clearMagicSelectInfoImpl,
// 墓地相关`Reducer`
initCemetery: initCemeteryImpl,
// UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl,
setCardModalText: setCardModalTextImpl,
......@@ -132,6 +139,7 @@ export const {
addMagicPlaceSelectAble,
clearMagicSelectInfo,
removeHand,
initCemetery,
} = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null;
......
......@@ -69,3 +69,8 @@ export interface SlotState {
export type Monster = SlotState;
export type Magic = SlotState;
export interface Cemetery {
sequence: number;
meta: CardMeta;
}
......@@ -5,6 +5,7 @@ import {
setSelfType,
initMonsters,
initMagics,
initCemetery,
} from "../../reducers/duel/mod";
export default (
......@@ -36,4 +37,6 @@ export default (
dispatch(initMonsters(1));
dispatch(initMagics(0));
dispatch(initMagics(1));
dispatch(initCemetery(0));
dispatch(initCemetery(1));
};
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