Commit 33ae53a7 authored by chechunchi's avatar chechunchi

add removeMagic reducer

parent 75a1a49e
Pipeline #19513 passed with stages
in 4 minutes and 42 seconds
......@@ -13,6 +13,7 @@ import {
extendOccupant,
extendPlaceInteractivity,
clearPlaceInteractivities,
removeOccupant,
} from "./generic";
export interface MagicState extends DuelFieldState {}
......@@ -127,6 +128,18 @@ export const magicCase = (builder: ActionReducerMapBuilder<DuelState>) => {
});
};
// 删除魔法陷阱
export const removeMagicImpl: CaseReducer<
DuelState,
PayloadAction<{ controler: number; sequence: number }>
> = (state, action) => {
const controler = action.payload.controler;
const magics = judgeSelf(controler, state) ? state.meMagics : state.opMagics;
removeOccupant(magics, action.payload.sequence);
};
export const selectMeMagics = (state: RootState) =>
state.duel.meMagics || { inner: [] };
export const selectOpMagics = (state: RootState) =>
......
......@@ -54,6 +54,7 @@ import {
initMagicsImpl,
addMagicPlaceInteractivitiesImpl,
clearMagicPlaceInteractivitiesImpl,
removeMagicImpl,
magicCase,
} from "./magicSlice";
import { CemeteryState, initCemeteryImpl, cemeteryCase } from "./cemeretySlice";
......@@ -142,6 +143,7 @@ const duelSlice = createSlice({
initMagics: initMagicsImpl,
addMagicPlaceInteractivities: addMagicPlaceInteractivitiesImpl,
clearMagicPlaceInteractivities: clearMagicPlaceInteractivitiesImpl,
removeMagic: removeMagicImpl,
// 墓地相关`Reducer`
initCemetery: initCemeteryImpl,
......@@ -207,6 +209,7 @@ export const {
initMagics,
addMagicPlaceInteractivities,
clearMagicPlaceInteractivities,
removeMagic,
removeHand,
initCemetery,
setCardListModalIsOpen,
......
......@@ -138,6 +138,7 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
});
};
// 删除怪兽
export const removeMonsterImpl: CaseReducer<
DuelState,
PayloadAction<{ controler: number; sequence: number }>
......
......@@ -2,7 +2,11 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import MsgMove = ygopro.StocGameMessage.MsgMove;
import { AppDispatch } from "../../store";
import { fetchMonsterMeta } from "../../reducers/duel/monstersSlice";
import { removeHand, removeMonster } from "../../reducers/duel/mod";
import {
removeHand,
removeMagic,
removeMonster,
} from "../../reducers/duel/mod";
import { fetchMagicMeta } from "../../reducers/duel/magicSlice";
import { fetchCemeteryMeta } from "../../reducers/duel/cemeretySlice";
......@@ -25,6 +29,13 @@ export default (move: MsgMove, dispatch: AppDispatch) => {
break;
}
case ygopro.CardZone.SZONE: {
dispatch(
removeMagic({ controler: from.controler, sequence: from.sequence })
);
break;
}
default: {
console.log(`Unhandled zone type ${from.location}`);
break;
......
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