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 { ...@@ -29,6 +29,7 @@ import {
addMonsterPlaceSelectAbleImpl, addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfoImpl, clearMonsterSelectInfoImpl,
} from "./monstersSlice"; } from "./monstersSlice";
import { MagicState, initMagicsImpl } from "./magicSlice";
export interface DuelState { export interface DuelState {
selfType?: number; selfType?: number;
...@@ -41,6 +42,9 @@ export interface DuelState { ...@@ -41,6 +42,9 @@ export interface DuelState {
meMonsters?: MonsterState; // 自己的怪兽区状态 meMonsters?: MonsterState; // 自己的怪兽区状态
opMonsters?: MonsterState; // 对手的怪兽区状态 opMonsters?: MonsterState; // 对手的怪兽区状态
meMagics?: MagicState; // 自己的魔法陷阱区状态
opMagics?: MagicState; // 对手的魔法陷阱区状态
meTimeLimit?: TimeLimit; // 自己的计时 meTimeLimit?: TimeLimit; // 自己的计时
opTimeLimit?: TimeLimit; // 对手的计时 opTimeLimit?: TimeLimit; // 对手的计时
...@@ -81,6 +85,9 @@ const duelSlice = createSlice({ ...@@ -81,6 +85,9 @@ const duelSlice = createSlice({
addMonsterPlaceSelectAble: addMonsterPlaceSelectAbleImpl, addMonsterPlaceSelectAble: addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfo: clearMonsterSelectInfoImpl, clearMonsterSelectInfo: clearMonsterSelectInfoImpl,
// 魔法陷阱区相关`Reducer`
initMagics: initMagicsImpl,
// UI相关`Reducer` // UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl, setCardModalIsOpen: setCardModalIsOpenImpl,
setCardModalText: setCardModalTextImpl, setCardModalText: setCardModalTextImpl,
...@@ -108,6 +115,7 @@ export const { ...@@ -108,6 +115,7 @@ export const {
initMonsters, initMonsters,
addMonsterPlaceSelectAble, addMonsterPlaceSelectAble,
clearMonsterSelectInfo, clearMonsterSelectInfo,
initMagics,
} = duelSlice.actions; } = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => { export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null; return state.duel.meInitInfo != null;
......
...@@ -72,7 +72,7 @@ export interface Interactivity<T> { ...@@ -72,7 +72,7 @@ export interface Interactivity<T> {
response: T; response: T;
} }
export interface Monster { export interface SlotState {
sequence: number; sequence: number;
occupant?: CardMeta; occupant?: CardMeta;
selectInfo?: Interactivity<{ selectInfo?: Interactivity<{
...@@ -81,3 +81,7 @@ export interface Monster { ...@@ -81,3 +81,7 @@ export interface Monster {
sequence: number; 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