Commit 605950a6 authored by Chunchi Che's avatar Chunchi Che

add magic slice

parent e1e017de
import { judgeSelf, Magic, InteractType } from "./util";
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { RootState } from "../../store";
export interface MagicState {
magics: Magic[];
}
// 初始化自己的魔法陷阱区状态
export const initMagicsImpl: CaseReducer<DuelState, PayloadAction<number>> = (
state,
action
) => {
const player = action.payload;
const magics = {
magics: [
{
sequence: 0,
},
{
sequence: 1,
},
{
sequence: 2,
},
{
sequence: 3,
},
{
sequence: 4,
},
],
};
if (judgeSelf(player, state)) {
state.meMagics = magics;
} else {
state.opMagics = magics;
}
};
......@@ -29,6 +29,7 @@ import {
addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfoImpl,
} from "./monstersSlice";
import { MagicState, initMagicsImpl } from "./magicSlice";
export interface DuelState {
selfType?: number;
......@@ -41,6 +42,9 @@ export interface DuelState {
meMonsters?: MonsterState; // 自己的怪兽区状态
opMonsters?: MonsterState; // 对手的怪兽区状态
meMagics?: MagicState; // 自己的魔法陷阱区状态
opMagics?: MagicState; // 对手的魔法陷阱区状态
meTimeLimit?: TimeLimit; // 自己的计时
opTimeLimit?: TimeLimit; // 对手的计时
......@@ -81,6 +85,9 @@ const duelSlice = createSlice({
addMonsterPlaceSelectAble: addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfo: clearMonsterSelectInfoImpl,
// 魔法陷阱区相关`Reducer`
initMagics: initMagicsImpl,
// UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl,
setCardModalText: setCardModalTextImpl,
......@@ -108,6 +115,7 @@ export const {
initMonsters,
addMonsterPlaceSelectAble,
clearMonsterSelectInfo,
initMagics,
} = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null;
......
......@@ -72,7 +72,7 @@ export interface Interactivity<T> {
response: T;
}
export interface Monster {
export interface SlotState {
sequence: number;
occupant?: CardMeta;
selectInfo?: Interactivity<{
......@@ -81,3 +81,7 @@ export interface Monster {
sequence: number;
}>;
}
export type Monster = SlotState;
export type Magic = SlotState;
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