Commit 7f2fe284 authored by Chunchi Che's avatar Chunchi Che

Merge branch 'fix/move/exclusion' into 'main'

Fix/move/exclusion

See merge request mycard/Neos!84
parents 0896be2d 6359fec3
Pipeline #19653 passed with stages
in 5 minutes and 19 seconds
......@@ -12,6 +12,7 @@ import {
DuelFieldState,
extendState,
extendMeta,
removeCard,
} from "./generic";
export interface CemeteryState extends DuelFieldState {}
......@@ -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) =>
state.duel.meCemetery || { inner: [] };
export const selectOpCemetery = (state: RootState) =>
......
......@@ -12,6 +12,7 @@ import {
DuelFieldState,
extendState,
extendMeta,
removeCard,
} from "./generic";
export interface ExclusionState extends DuelFieldState {}
......@@ -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) =>
state.duel.meExclusion || { inner: [] };
export const selectopExclusion = (state: RootState) =>
......
......@@ -69,10 +69,16 @@ import {
setMagicPositionImpl,
magicCase,
} from "./magicSlice";
import { CemeteryState, initCemeteryImpl, cemeteryCase } from "./cemeretySlice";
import {
CemeteryState,
initCemeteryImpl,
removeCemeteryImpl,
cemeteryCase,
} from "./cemeretySlice";
import {
ExclusionState,
initExclusionImpl,
removeExclusionImpl,
exclusionCase,
} from "./exclusionSlice";
import { DeckState, initDeckImpl } from "./deckSlice";
......@@ -172,9 +178,11 @@ const duelSlice = createSlice({
// 墓地相关`Reducer`
initCemetery: initCemeteryImpl,
removeCemetery: removeCemeteryImpl,
// 除外区相关`Reducer`
initExclusion: initExclusionImpl,
removeExclusion: removeExclusionImpl,
// 卡组相关`Reducer`
initDeck: initDeckImpl,
......@@ -256,6 +264,7 @@ export const {
removeMagic,
removeHand,
initCemetery,
removeCemetery,
setCardListModalIsOpen,
setCardListModalInfo,
setCheckCardModalIsOpen,
......@@ -272,6 +281,7 @@ export const {
resetOptionModal,
initDeck,
initExclusion,
removeExclusion,
initField,
clearFieldPlaceInteractivities,
addFieldPlaceInteractivities,
......
......@@ -3,6 +3,8 @@ import MsgMove = ygopro.StocGameMessage.MsgMove;
import { AppDispatch } from "../../store";
import { fetchMonsterMeta } from "../../reducers/duel/monstersSlice";
import {
removeCemetery,
removeExclusion,
removeHand,
removeMagic,
removeMonster,
......@@ -10,6 +12,7 @@ import {
import { fetchMagicMeta } from "../../reducers/duel/magicSlice";
import { fetchCemeteryMeta } from "../../reducers/duel/cemeretySlice";
import { insertHandMeta } from "../../reducers/duel/handsSlice";
import { fetchExclusionMeta } from "../../reducers/duel/exclusionSlice";
export default (move: MsgMove, dispatch: AppDispatch) => {
const code = move.code;
......@@ -37,6 +40,20 @@ export default (move: MsgMove, dispatch: AppDispatch) => {
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: {
console.log(`Unhandled zone type ${from.location}`);
break;
......@@ -86,6 +103,17 @@ export default (move: MsgMove, dispatch: AppDispatch) => {
break;
}
case ygopro.CardZone.REMOVED: {
dispatch(
fetchExclusionMeta({
controler: to.controler,
sequence: to.sequence,
code,
})
);
break;
}
default: {
console.log(`Unhandled zone type ${to.location}`);
......
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