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