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 { ...@@ -38,6 +38,7 @@ import {
clearMagicSelectInfoImpl, clearMagicSelectInfoImpl,
magicCase, magicCase,
} from "./magicSlice"; } from "./magicSlice";
import { CemeteryState, initCemeteryImpl } from "./cemeretySlice";
export interface DuelState { export interface DuelState {
selfType?: number; selfType?: number;
...@@ -53,6 +54,9 @@ export interface DuelState { ...@@ -53,6 +54,9 @@ export interface DuelState {
meMagics?: MagicState; // 自己的魔法陷阱区状态 meMagics?: MagicState; // 自己的魔法陷阱区状态
opMagics?: MagicState; // 对手的魔法陷阱区状态 opMagics?: MagicState; // 对手的魔法陷阱区状态
meCemetery?: CemeteryState; // 自己的墓地状态
opCemetery?: CemeteryState; // 对手的墓地状态
meTimeLimit?: TimeLimit; // 自己的计时 meTimeLimit?: TimeLimit; // 自己的计时
opTimeLimit?: TimeLimit; // 对手的计时 opTimeLimit?: TimeLimit; // 对手的计时
...@@ -99,6 +103,9 @@ const duelSlice = createSlice({ ...@@ -99,6 +103,9 @@ const duelSlice = createSlice({
addMagicPlaceSelectAble: addMagicPlaceSelectAbleImpl, addMagicPlaceSelectAble: addMagicPlaceSelectAbleImpl,
clearMagicSelectInfo: clearMagicSelectInfoImpl, clearMagicSelectInfo: clearMagicSelectInfoImpl,
// 墓地相关`Reducer`
initCemetery: initCemeteryImpl,
// UI相关`Reducer` // UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl, setCardModalIsOpen: setCardModalIsOpenImpl,
setCardModalText: setCardModalTextImpl, setCardModalText: setCardModalTextImpl,
...@@ -132,6 +139,7 @@ export const { ...@@ -132,6 +139,7 @@ export const {
addMagicPlaceSelectAble, addMagicPlaceSelectAble,
clearMagicSelectInfo, clearMagicSelectInfo,
removeHand, removeHand,
initCemetery,
} = duelSlice.actions; } = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => { export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null; return state.duel.meInitInfo != null;
......
...@@ -69,3 +69,8 @@ export interface SlotState { ...@@ -69,3 +69,8 @@ export interface SlotState {
export type Monster = SlotState; export type Monster = SlotState;
export type Magic = SlotState; export type Magic = SlotState;
export interface Cemetery {
sequence: number;
meta: CardMeta;
}
...@@ -5,6 +5,7 @@ import { ...@@ -5,6 +5,7 @@ import {
setSelfType, setSelfType,
initMonsters, initMonsters,
initMagics, initMagics,
initCemetery,
} from "../../reducers/duel/mod"; } from "../../reducers/duel/mod";
export default ( export default (
...@@ -36,4 +37,6 @@ export default ( ...@@ -36,4 +37,6 @@ export default (
dispatch(initMonsters(1)); dispatch(initMonsters(1));
dispatch(initMagics(0)); dispatch(initMagics(0));
dispatch(initMagics(1)); 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