Commit 20689467 authored by Chunchi Che's avatar Chunchi Che

fix

parent 86e4e7f3
Pipeline #20807 failed with stages
in 7 minutes and 2 seconds
...@@ -6,6 +6,9 @@ import { ...@@ -6,6 +6,9 @@ import {
updateCardData, updateCardData,
} from "./generic"; } from "./generic";
import { judgeSelf } from "./util"; import { judgeSelf } from "./util";
type MsgUpdateData = ReturnType<
typeof ygopro.StocGameMessage.MsgUpdateData.prototype.toObject
>;
export const clearAllIdleInteractivitiesImpl: DuelReducer<number> = ( export const clearAllIdleInteractivitiesImpl: DuelReducer<number> = (
state, state,
...@@ -59,60 +62,65 @@ export const clearAllPlaceInteractivitiesImpl: DuelReducer<number> = ( ...@@ -59,60 +62,65 @@ export const clearAllPlaceInteractivitiesImpl: DuelReducer<number> = (
states.forEach((item) => clearPlaceInteractivities(item)); states.forEach((item) => clearPlaceInteractivities(item));
}; };
export const updateFieldDataImpl: DuelReducer< export const updateFieldDataImpl: DuelReducer<MsgUpdateData> = (
ygopro.StocGameMessage.MsgUpdateData state,
> = (state, action) => { action
) => {
const player = action.payload.player; const player = action.payload.player;
const zone = action.payload.zone; const zone = action.payload.zone;
const actions = action.payload.actions; const actions = action.payload.actions;
switch (zone) { if (player && zone && actions) {
case ygopro.CardZone.HAND: { switch (zone) {
const hand = judgeSelf(player, state) ? state.meHands : state.opHands; case ygopro.CardZone.HAND: {
updateCardData(hand, actions); const hand = judgeSelf(player, state) ? state.meHands : state.opHands;
updateCardData(hand, actions);
break; break;
} }
case ygopro.CardZone.EXTRA: { case ygopro.CardZone.EXTRA: {
const extra = judgeSelf(player, state) const extra = judgeSelf(player, state)
? state.meExtraDeck ? state.meExtraDeck
: state.opExtraDeck; : state.opExtraDeck;
updateCardData(extra, actions); updateCardData(extra, actions);
break; break;
} }
case ygopro.CardZone.MZONE: { case ygopro.CardZone.MZONE: {
const monster = judgeSelf(player, state) const monster = judgeSelf(player, state)
? state.meMonsters ? state.meMonsters
: state.opMonsters; : state.opMonsters;
updateCardData(monster, actions); updateCardData(monster, actions);
break; break;
} }
case ygopro.CardZone.SZONE: { case ygopro.CardZone.SZONE: {
const magics = judgeSelf(player, state) ? state.meMagics : state.opMagics; const magics = judgeSelf(player, state)
updateCardData(magics, actions); ? state.meMagics
: state.opMagics;
updateCardData(magics, actions);
break; break;
} }
case ygopro.CardZone.GRAVE: { case ygopro.CardZone.GRAVE: {
const cemetery = judgeSelf(player, state) const cemetery = judgeSelf(player, state)
? state.meCemetery ? state.meCemetery
: state.opCemetery; : state.opCemetery;
updateCardData(cemetery, actions); updateCardData(cemetery, actions);
break; break;
} }
case ygopro.CardZone.REMOVED: { case ygopro.CardZone.REMOVED: {
const exclusion = judgeSelf(player, state) const exclusion = judgeSelf(player, state)
? state.meExclusion ? state.meExclusion
: state.opExclusion; : state.opExclusion;
updateCardData(exclusion, actions); updateCardData(exclusion, actions);
break; break;
} }
default: { default: {
break; break;
}
} }
} }
}; };
...@@ -8,7 +8,9 @@ import { CardMeta } from "../../api/cards"; ...@@ -8,7 +8,9 @@ import { CardMeta } from "../../api/cards";
import { ygopro } from "../../api/ocgcore/idl/ocgcore"; import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { fetchCard } from "../../api/cards"; import { fetchCard } from "../../api/cards";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import UpdateDataAction = ygopro.StocGameMessage.MsgUpdateData.Action; type UpdateDataAction = ReturnType<
typeof ygopro.StocGameMessage.MsgUpdateData.Action.prototype.toObject
>;
export type DuelReducer<T> = CaseReducer<DuelState, PayloadAction<T>>; export type DuelReducer<T> = CaseReducer<DuelState, PayloadAction<T>>;
...@@ -289,8 +291,7 @@ export function updateCardData<T extends DuelFieldState>( ...@@ -289,8 +291,7 @@ export function updateCardData<T extends DuelFieldState>(
state: T | undefined, state: T | undefined,
actions: UpdateDataAction[] actions: UpdateDataAction[]
) { ) {
for (const action of actions) { for (const payload of actions) {
const payload = action.toObject();
const sequence = payload.location?.sequence; const sequence = payload.location?.sequence;
if (typeof sequence !== "undefined") { if (typeof sequence !== "undefined") {
const target = state?.inner.find((_, idx) => idx == sequence); const target = state?.inner.find((_, idx) => idx == sequence);
......
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