Commit 676e637d authored by Chunchi Che's avatar Chunchi Che

update monster slice

parent 451e94e1
...@@ -93,13 +93,20 @@ export const clearMonsterSelectInfoImpl: CaseReducer< ...@@ -93,13 +93,20 @@ export const clearMonsterSelectInfoImpl: CaseReducer<
// 增加怪兽 // 增加怪兽
export const fetchMonsterMeta = createAsyncThunk( export const fetchMonsterMeta = createAsyncThunk(
"duel/fetchMonsterMeta", "duel/fetchMonsterMeta",
async (param: [number, number, number]) => { async (param: {
const controler = param[0]; controler: number;
const sequence = param[1]; sequence: number;
const code = param[2]; position: ygopro.CardPosition;
code: number;
}) => {
const code = param.code;
const meta = await fetchCard(code); const meta = await fetchCard(code);
const response: [number, number, CardMeta] = [controler, sequence, meta]; const response = {
controler: param.controler,
sequence: param.sequence,
meta,
};
return response; return response;
} }
...@@ -108,16 +115,18 @@ export const fetchMonsterMeta = createAsyncThunk( ...@@ -108,16 +115,18 @@ export const fetchMonsterMeta = createAsyncThunk(
export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => { export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
builder.addCase(fetchMonsterMeta.pending, (state, action) => { builder.addCase(fetchMonsterMeta.pending, (state, action) => {
// Meta结果没返回之前先更新`ID` // Meta结果没返回之前先更新`ID`
const controler = action.meta.arg[0]; const controler = action.meta.arg.controler;
const sequence = action.meta.arg[1]; const sequence = action.meta.arg.sequence;
const code = action.meta.arg[2]; const position = action.meta.arg.position;
const code = action.meta.arg.code;
const cardMeta = { id: code, data: {}, text: {} }; const meta = { id: code, data: {}, text: {} };
if (judgeSelf(controler, state)) { if (judgeSelf(controler, state)) {
if (state.meMonsters) { if (state.meMonsters) {
for (const monster of state.meMonsters.monsters) { for (const monster of state.meMonsters.monsters) {
if (monster.sequence == sequence) { if (monster.sequence == sequence) {
monster.occupant = cardMeta; monster.occupant = meta;
monster.position = position;
} }
} }
} }
...@@ -125,16 +134,17 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => { ...@@ -125,16 +134,17 @@ export const monsterCase = (builder: ActionReducerMapBuilder<DuelState>) => {
if (state.opMonsters) { if (state.opMonsters) {
for (const monster of state.opMonsters.monsters) { for (const monster of state.opMonsters.monsters) {
if (monster.sequence == sequence) { if (monster.sequence == sequence) {
monster.occupant = cardMeta; monster.occupant = meta;
monster.position = position;
} }
} }
} }
} }
}); });
builder.addCase(fetchMonsterMeta.fulfilled, (state, action) => { builder.addCase(fetchMonsterMeta.fulfilled, (state, action) => {
const controler = action.payload[0]; const controler = action.payload.controler;
const sequence = action.payload[1]; const sequence = action.payload.sequence;
const meta = action.payload[2]; const meta = action.payload.meta;
if (judgeSelf(controler, state)) { if (judgeSelf(controler, state)) {
if (state.meMonsters) { if (state.meMonsters) {
......
...@@ -72,6 +72,7 @@ export interface Interactivity<T> { ...@@ -72,6 +72,7 @@ export interface Interactivity<T> {
export interface SlotState { export interface SlotState {
sequence: number; sequence: number;
occupant?: CardMeta; occupant?: CardMeta;
position?: ygopro.CardPosition;
selectInfo?: Interactivity<{ selectInfo?: Interactivity<{
controler: number; controler: number;
zone: ygopro.CardZone; zone: ygopro.CardZone;
......
...@@ -25,7 +25,14 @@ export default (move: MsgMove, dispatch: AppDispatch) => { ...@@ -25,7 +25,14 @@ export default (move: MsgMove, dispatch: AppDispatch) => {
switch (to.location) { switch (to.location) {
case ygopro.CardZone.MZONE: { case ygopro.CardZone.MZONE: {
dispatch(fetchMonsterMeta([to.controler, to.sequence, code])); dispatch(
fetchMonsterMeta({
controler: to.controler,
sequence: to.sequence,
position: to.position,
code,
})
);
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