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

update monster slice

parent 7842d7f8
Pipeline #18847 passed with stages
in 3 minutes and 2 seconds
...@@ -23,7 +23,12 @@ import { ...@@ -23,7 +23,12 @@ import {
setCardModalImgUrlImpl, setCardModalImgUrlImpl,
setCardModalInteractiviesImpl, setCardModalInteractiviesImpl,
} from "./modalSlice"; } from "./modalSlice";
import { MonsterState, initMonstersImpl } from "./monstersSlice"; import {
MonsterState,
initMonstersImpl,
addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfoImpl,
} from "./monstersSlice";
export interface DuelState { export interface DuelState {
selfType?: number; selfType?: number;
...@@ -73,6 +78,8 @@ const duelSlice = createSlice({ ...@@ -73,6 +78,8 @@ const duelSlice = createSlice({
// 怪兽区相关`Reducer` // 怪兽区相关`Reducer`
initMonsters: initMonstersImpl, initMonsters: initMonstersImpl,
addMonsterPlaceSelectAble: addMonsterPlaceSelectAbleImpl,
clearMonsterSelectInfo: clearMonsterSelectInfoImpl,
// UI相关`Reducer` // UI相关`Reducer`
setCardModalIsOpen: setCardModalIsOpenImpl, setCardModalIsOpen: setCardModalIsOpenImpl,
...@@ -99,6 +106,8 @@ export const { ...@@ -99,6 +106,8 @@ export const {
setCardModalImgUrl, setCardModalImgUrl,
setCardModalInteractivies, setCardModalInteractivies,
initMonsters, initMonsters,
addMonsterPlaceSelectAble,
clearMonsterSelectInfo,
} = duelSlice.actions; } = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => { export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null; return state.duel.meInitInfo != null;
......
import { judgeSelf, Monster } from "./util"; import { judgeSelf, Monster, InteractType } from "./util";
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { PayloadAction, CaseReducer } from "@reduxjs/toolkit";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
export interface MonsterState { export interface MonsterState {
monsters: Monster[]; monsters: Monster[];
...@@ -36,3 +37,44 @@ export const initMonstersImpl: CaseReducer<DuelState, PayloadAction<number>> = ( ...@@ -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