Commit 79d58872 authored by Chunchi Che's avatar Chunchi Che

init extraDeck

parent 390c9585
Pipeline #19772 passed with stages
in 5 minutes and 47 seconds
......@@ -19,7 +19,7 @@ import { judgeSelf } from "./util";
export interface ExtraDeckState extends DuelFieldState {}
// 初始化额外卡组
export const initExtraDeckMeta = createAsyncRepeatedMetaThunk(
export const initMeExtraDeckMeta = createAsyncRepeatedMetaThunk(
"duel/initExtraDeckMeta"
);
......@@ -29,34 +29,26 @@ export const fetchExtraDeckMeta = createAsyncMetaThunk(
);
export const extraDeckCase = (builder: ActionReducerMapBuilder<DuelState>) => {
builder.addCase(initExtraDeckMeta.pending, (state, action) => {
const player = action.meta.arg.controler;
builder.addCase(initMeExtraDeckMeta.pending, (state, action) => {
const _ = action.meta.arg.controler;
const ids = action.meta.arg.codes;
const cards = ids.map((id) => {
return {
occupant: { id, data: {}, text: {} },
location: {
controler: player,
location: ygopro.CardZone.EXTRA,
},
idleInteractivities: [],
};
});
if (judgeSelf(player, state)) {
state.meExtraDeck = { inner: cards };
} else {
state.opExtraDeck = { inner: cards };
}
state.meExtraDeck = { inner: cards };
});
builder.addCase(initExtraDeckMeta.fulfilled, (state, action) => {
const player = action.payload.controler;
builder.addCase(initMeExtraDeckMeta.fulfilled, (state, action) => {
const _ = action.payload.controler;
const metas = action.payload.metas;
const extraDeck = judgeSelf(player, state)
? state.meExtraDeck
: state.opExtraDeck;
updateCardMeta(extraDeck, metas);
updateCardMeta(state.meExtraDeck, metas);
});
builder.addCase(fetchExtraDeckMeta.pending, (state, action) => {
......
......@@ -18,7 +18,7 @@ export interface DuelFieldState {
export interface CardState {
occupant?: CardMeta; // 占据此位置的卡牌元信息
location: {
controler: number;
controler?: number;
location?: number;
position?: ygopro.CardPosition;
overlay_sequence?: number;
......
......@@ -23,6 +23,8 @@ import {
import socketMiddleWare, { socketCmd } from "../middleware/socket";
import sqliteMiddleWare, { sqliteCmd } from "../middleware/sqlite";
import { Button } from "antd";
import { store } from "../store";
import { initMeExtraDeckMeta } from "../reducers/duel/extraDeckSlice";
const READY_STATE = "ready";
......@@ -56,6 +58,7 @@ export default function WaitRoom() {
});
}, []);
const dispatch = store.dispatch;
const joined = useAppSelector(selectJoined);
const chat = useAppSelector(selectChat);
const isHost = useAppSelector(selectIsHost);
......@@ -67,6 +70,7 @@ export default function WaitRoom() {
const deck = await fetchDeck("hero.ydk");
sendUpdateDeck(deck);
dispatch(initMeExtraDeckMeta({ controler: 0, codes: deck.extra || [] }));
setChoseDeck(true);
};
......
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