Commit 6359fec3 authored by chechunchi's avatar chechunchi

update move service

parent e615ed1f
Pipeline #19652 passed with stages
in 7 minutes and 8 seconds
...@@ -12,6 +12,7 @@ import { ...@@ -12,6 +12,7 @@ import {
DuelFieldState, DuelFieldState,
extendState, extendState,
extendMeta, extendMeta,
removeCard,
} from "./generic"; } from "./generic";
export interface CemeteryState extends DuelFieldState {} export interface CemeteryState extends DuelFieldState {}
...@@ -67,6 +68,17 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => { ...@@ -67,6 +68,17 @@ export const cemeteryCase = (builder: ActionReducerMapBuilder<DuelState>) => {
}); });
}; };
// 删除墓地
export const removeCemeteryImpl: CaseReducer<
DuelState,
PayloadAction<{ controler: number; sequence: number }>
> = (state, action) => {
const cemetery = judgeSelf(action.payload.controler, state)
? state.meCemetery
: state.opCemetery;
removeCard(cemetery, action.payload.sequence);
};
export const selectMeCemetery = (state: RootState) => export const selectMeCemetery = (state: RootState) =>
state.duel.meCemetery || { inner: [] }; state.duel.meCemetery || { inner: [] };
export const selectOpCemetery = (state: RootState) => export const selectOpCemetery = (state: RootState) =>
......
...@@ -12,6 +12,7 @@ import { ...@@ -12,6 +12,7 @@ import {
DuelFieldState, DuelFieldState,
extendState, extendState,
extendMeta, extendMeta,
removeCard,
} from "./generic"; } from "./generic";
export interface ExclusionState extends DuelFieldState {} export interface ExclusionState extends DuelFieldState {}
...@@ -69,6 +70,17 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => { ...@@ -69,6 +70,17 @@ export const exclusionCase = (builder: ActionReducerMapBuilder<DuelState>) => {
}); });
}; };
// 删除除外区
export const removeExclusionImpl: CaseReducer<
DuelState,
PayloadAction<{ controler: number; sequence: number }>
> = (state, action) => {
const exclusion = judgeSelf(action.payload.controler, state)
? state.meExclusion
: state.opExclusion;
removeCard(exclusion, action.payload.sequence);
};
export const selectMeExclusion = (state: RootState) => export const selectMeExclusion = (state: RootState) =>
state.duel.meExclusion || { inner: [] }; state.duel.meExclusion || { inner: [] };
export const selectopExclusion = (state: RootState) => export const selectopExclusion = (state: RootState) =>
......
...@@ -69,10 +69,16 @@ import { ...@@ -69,10 +69,16 @@ import {
setMagicPositionImpl, setMagicPositionImpl,
magicCase, magicCase,
} from "./magicSlice"; } from "./magicSlice";
import { CemeteryState, initCemeteryImpl, cemeteryCase } from "./cemeretySlice"; import {
CemeteryState,
initCemeteryImpl,
removeCemeteryImpl,
cemeteryCase,
} from "./cemeretySlice";
import { import {
ExclusionState, ExclusionState,
initExclusionImpl, initExclusionImpl,
removeExclusionImpl,
exclusionCase, exclusionCase,
} from "./exclusionSlice"; } from "./exclusionSlice";
import { DeckState, initDeckImpl } from "./deckSlice"; import { DeckState, initDeckImpl } from "./deckSlice";
...@@ -172,9 +178,11 @@ const duelSlice = createSlice({ ...@@ -172,9 +178,11 @@ const duelSlice = createSlice({
// 墓地相关`Reducer` // 墓地相关`Reducer`
initCemetery: initCemeteryImpl, initCemetery: initCemeteryImpl,
removeCemetery: removeCemeteryImpl,
// 除外区相关`Reducer` // 除外区相关`Reducer`
initExclusion: initExclusionImpl, initExclusion: initExclusionImpl,
removeExclusion: removeExclusionImpl,
// 卡组相关`Reducer` // 卡组相关`Reducer`
initDeck: initDeckImpl, initDeck: initDeckImpl,
...@@ -256,6 +264,7 @@ export const { ...@@ -256,6 +264,7 @@ export const {
removeMagic, removeMagic,
removeHand, removeHand,
initCemetery, initCemetery,
removeCemetery,
setCardListModalIsOpen, setCardListModalIsOpen,
setCardListModalInfo, setCardListModalInfo,
setCheckCardModalIsOpen, setCheckCardModalIsOpen,
...@@ -272,6 +281,7 @@ export const { ...@@ -272,6 +281,7 @@ export const {
resetOptionModal, resetOptionModal,
initDeck, initDeck,
initExclusion, initExclusion,
removeExclusion,
initField, initField,
clearFieldPlaceInteractivities, clearFieldPlaceInteractivities,
addFieldPlaceInteractivities, addFieldPlaceInteractivities,
......
...@@ -3,6 +3,8 @@ import MsgMove = ygopro.StocGameMessage.MsgMove; ...@@ -3,6 +3,8 @@ 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 { import {
removeCemetery,
removeExclusion,
removeHand, removeHand,
removeMagic, removeMagic,
removeMonster, removeMonster,
...@@ -38,6 +40,20 @@ export default (move: MsgMove, dispatch: AppDispatch) => { ...@@ -38,6 +40,20 @@ export default (move: MsgMove, dispatch: AppDispatch) => {
break; break;
} }
case ygopro.CardZone.GRAVE: {
dispatch(
removeCemetery({ controler: from.controler, sequence: from.sequence })
);
break;
}
case ygopro.CardZone.REMOVED: {
dispatch(
removeExclusion({ 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