Commit 676864b0 authored by chechunchi's avatar chechunchi

update reducers

parent 20a0a738
...@@ -224,3 +224,26 @@ export function updateCardMeta<T extends DuelFieldState>( ...@@ -224,3 +224,26 @@ export function updateCardMeta<T extends DuelFieldState>(
}); });
} }
} }
export function extendIdleInteractivities<T extends DuelFieldState>(
state: T | undefined,
sequence: number,
interactivity: Interactivity<number>
) {
if (state) {
const target = state.inner.find((_, idx) => idx == sequence);
if (target) {
target.idleInteractivities.push(interactivity);
}
}
}
export function clearIdleInteractivities<T extends DuelFieldState>(
state: T | undefined
) {
if (state) {
state.inner.forEach((item) => {
item.idleInteractivities = [];
});
}
}
...@@ -14,6 +14,9 @@ import { ...@@ -14,6 +14,9 @@ import {
extendPlaceInteractivity, extendPlaceInteractivity,
clearPlaceInteractivities, clearPlaceInteractivities,
removeOccupant, removeOccupant,
Interactivity,
extendIdleInteractivities,
clearIdleInteractivities,
} from "./generic"; } from "./generic";
export interface MagicState extends DuelFieldState {} export interface MagicState extends DuelFieldState {}
...@@ -97,6 +100,35 @@ export const clearMagicPlaceInteractivitiesImpl: CaseReducer< ...@@ -97,6 +100,35 @@ export const clearMagicPlaceInteractivitiesImpl: CaseReducer<
clearPlaceInteractivities(magics); clearPlaceInteractivities(magics);
}; };
export const addMagicIdleInteractivitiesImpl: CaseReducer<
DuelState,
PayloadAction<{
controler: number;
sequence: number;
interactivity: Interactivity<number>;
}>
> = (state, action) => {
const magics = judgeSelf(action.payload.controler, state)
? state.meMagics
: state.opMagics;
extendIdleInteractivities(
magics,
action.payload.sequence,
action.payload.interactivity
);
};
export const clearMagicIdleInteractivitiesImpl: CaseReducer<
DuelState,
PayloadAction<number>
> = (state, action) => {
const magics = judgeSelf(action.payload, state)
? state.meMagics
: state.opMagics;
clearIdleInteractivities(magics);
};
// 增加魔法陷阱 // 增加魔法陷阱
export const fetchMagicMeta = createAsyncMetaThunk("duel/fetchMagicMeta"); export const fetchMagicMeta = createAsyncMetaThunk("duel/fetchMagicMeta");
......
...@@ -46,6 +46,8 @@ import { ...@@ -46,6 +46,8 @@ import {
initMonstersImpl, initMonstersImpl,
addMonsterPlaceInteractivitiesImpl, addMonsterPlaceInteractivitiesImpl,
clearMonsterPlaceInteractivitiesImpl, clearMonsterPlaceInteractivitiesImpl,
addMonsterIdleInteractivitiesImpl,
clearMonsterIdleInteractivitiesImpl,
removeMonsterImpl, removeMonsterImpl,
monsterCase, monsterCase,
} from "./monstersSlice"; } from "./monstersSlice";
...@@ -54,6 +56,8 @@ import { ...@@ -54,6 +56,8 @@ import {
initMagicsImpl, initMagicsImpl,
addMagicPlaceInteractivitiesImpl, addMagicPlaceInteractivitiesImpl,
clearMagicPlaceInteractivitiesImpl, clearMagicPlaceInteractivitiesImpl,
addMagicIdleInteractivitiesImpl,
clearMagicIdleInteractivitiesImpl,
removeMagicImpl, removeMagicImpl,
magicCase, magicCase,
} from "./magicSlice"; } from "./magicSlice";
...@@ -142,12 +146,16 @@ const duelSlice = createSlice({ ...@@ -142,12 +146,16 @@ const duelSlice = createSlice({
initMonsters: initMonstersImpl, initMonsters: initMonstersImpl,
addMonsterPlaceInteractivities: addMonsterPlaceInteractivitiesImpl, addMonsterPlaceInteractivities: addMonsterPlaceInteractivitiesImpl,
clearMonsterPlaceInteractivities: clearMonsterPlaceInteractivitiesImpl, clearMonsterPlaceInteractivities: clearMonsterPlaceInteractivitiesImpl,
addMonsterIdleInteractivities: addMonsterIdleInteractivitiesImpl,
clearMonsterIdleInteractivities: clearMonsterIdleInteractivitiesImpl,
removeMonster: removeMonsterImpl, removeMonster: removeMonsterImpl,
// 魔法陷阱区相关`Reducer` // 魔法陷阱区相关`Reducer`
initMagics: initMagicsImpl, initMagics: initMagicsImpl,
addMagicPlaceInteractivities: addMagicPlaceInteractivitiesImpl, addMagicPlaceInteractivities: addMagicPlaceInteractivitiesImpl,
clearMagicPlaceInteractivities: clearMagicPlaceInteractivitiesImpl, clearMagicPlaceInteractivities: clearMagicPlaceInteractivitiesImpl,
addMagicIdleInteractivities: addMagicIdleInteractivitiesImpl,
clearMagicIdleInteractivities: clearMagicIdleInteractivitiesImpl,
removeMagic: removeMagicImpl, removeMagic: removeMagicImpl,
// 墓地相关`Reducer` // 墓地相关`Reducer`
...@@ -212,6 +220,8 @@ export const { ...@@ -212,6 +220,8 @@ export const {
initMonsters, initMonsters,
addMonsterPlaceInteractivities, addMonsterPlaceInteractivities,
clearMonsterPlaceInteractivities, clearMonsterPlaceInteractivities,
addMonsterIdleInteractivities,
clearMonsterIdleInteractivities,
removeMonster, removeMonster,
initMagics, initMagics,
addMagicPlaceInteractivities, addMagicPlaceInteractivities,
......
...@@ -9,11 +9,14 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore"; ...@@ -9,11 +9,14 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { RootState } from "../../store"; import { RootState } from "../../store";
import { import {
DuelFieldState, DuelFieldState,
Interactivity,
createAsyncMetaThunk, createAsyncMetaThunk,
extendOccupant, extendOccupant,
extendPlaceInteractivity, extendPlaceInteractivity,
clearPlaceInteractivities, clearPlaceInteractivities,
removeOccupant, removeOccupant,
extendIdleInteractivities,
clearIdleInteractivities,
} from "./generic"; } from "./generic";
export interface MonsterState extends DuelFieldState {} export interface MonsterState extends DuelFieldState {}
...@@ -107,6 +110,35 @@ export const clearMonsterPlaceInteractivitiesImpl: CaseReducer< ...@@ -107,6 +110,35 @@ export const clearMonsterPlaceInteractivitiesImpl: CaseReducer<
clearPlaceInteractivities(monsters); clearPlaceInteractivities(monsters);
}; };
export const addMonsterIdleInteractivitiesImpl: CaseReducer<
DuelState,
PayloadAction<{
controler: number;
sequence: number;
interactivity: Interactivity<number>;
}>
> = (state, action) => {
const monsters = judgeSelf(action.payload.controler, state)
? state.meMonsters
: state.opMonsters;
extendIdleInteractivities(
monsters,
action.payload.sequence,
action.payload.interactivity
);
};
export const clearMonsterIdleInteractivitiesImpl: CaseReducer<
DuelState,
PayloadAction<number>
> = (state, action) => {
const monsters = judgeSelf(action.payload, state)
? state.meMonsters
: state.opMonsters;
clearIdleInteractivities(monsters);
};
// 增加怪兽 // 增加怪兽
export const fetchMonsterMeta = createAsyncMetaThunk("duel/fetchMonsterMeta"); export const fetchMonsterMeta = createAsyncMetaThunk("duel/fetchMonsterMeta");
......
...@@ -65,7 +65,9 @@ export default (selectIdleCmd: MsgSelectIdleCmd, dispatch: AppDispatch) => { ...@@ -65,7 +65,9 @@ export default (selectIdleCmd: MsgSelectIdleCmd, dispatch: AppDispatch) => {
break; break;
} }
case ygopro.CardZone.MZONE: {
break;
}
default: { default: {
} }
} }
......
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