Commit 9c6059bb authored by Chunchi Che's avatar Chunchi Che

update monster slice

parent 7842d7f8
......@@ -23,7 +23,12 @@ import {
setCardModalImgUrlImpl,
setCardModalInteractiviesImpl,
} from "./modalSlice";
import { MonsterState, initMonstersImpl } from "./monstersSlice";
import {
MonsterState,
initMonstersImpl,
addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfoImpl,
} from "./monstersSlice";
export interface DuelState {
selfType?: number;
......@@ -73,6 +78,8 @@ const duelSlice = createSlice({
// 怪兽区相关`Reducer`
initMonsters: initMonstersImpl,
addMonsterPlaceSelectAble: addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfo: clearMonsterSelectInfoImpl,
// UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl,
......@@ -99,6 +106,8 @@ export const {
setCardModalImgUrl,
setCardModalInteractivies,
initMonsters,
addMonsterPlaceSelectAble,
clearMonsterSelectInfo,
} = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null;
......
import { judgeSelf, Monster } from "./util";
import { judgeSelf, Monster, InteractType } from "./util";
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit";
import { DuelState } from "./mod";
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
export interface MonsterState {
monsters: Monster[];
......@@ -36,3 +37,44 @@ export const initMonstersImpl: CaseReducer<DuelState, PayloadAction<number>> = (
};
}
};
export const addMonsterPlaceSelectAbleImpl: CaseReducer<
DuelState,
PayloadAction<[number, number]>
> = (state, action) => {
const controler = action.payload[0];
const sequence = action.payload[1];
const monsters = judgeSelf(controler, state)
? state.meMonsters
: state.opMonsters;
if (monsters) {
for (const monster of monsters.monsters) {
if (monster.sequence == sequence) {
monster.selectInfo = {
interactType: InteractType.PLACE_SELECTABLE,
response: {
controler,
zone: ygopro.CardZone.MZONE,
sequence,
},
};
}
}
}
};
export const clearMonsterSelectInfoImpl: CaseReducer<
DuelState,
PayloadAction<number>
> = (state, action) => {
const player = action.payload;
const monsters = judgeSelf(player, state)
? state.meMonsters
: state.opMonsters;
if (monsters) {
monsters.monsters = [];
}
};
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