Commit f060973f authored by Chunchi Che's avatar Chunchi Che

Merge branch 'feat/service/select_unselect_card' into 'main'

Feat/service/select unselect card

See merge request !85
parents 7f2fe284 215e36a2
Pipeline #19669 passed with stages
in 3 minutes and 16 seconds
neos-protobuf @ c3da8f45
Subproject commit 9df2b696eb24e89fd760945ef1b218b9d29a6df3
Subproject commit c3da8f45d34fcb6fa6d393f9fa02c2cd5e36e6cc
This diff is collapsed.
......@@ -117,4 +117,9 @@ export class BufferWriter {
this.dataView.setUint32(this.offset, value, this.littleEndian);
this.offset += OFFSET_UINT32;
}
writeInt32(value: number) {
this.dataView.setInt32(this.offset, value, this.littleEndian);
this.offset += OFFSET_INT32;
}
}
......@@ -9,6 +9,7 @@ import adaptSelectEffectYnResponse from "./selectEffectYn";
import adaptSelectPositionResponse from "./selectPosition";
import adaptSelectOptionResponse from "./selectOption";
import adaptSelectBattleCmdResponse from "./selectBattleCmd";
import adaptSelectUnselectCardResponse from "./selectUnselectCard";
/*
* CTOS CTOS_RESPONSE
......@@ -64,6 +65,13 @@ export default class CtosResponsePacket extends YgoProPacket {
break;
}
case "select_unselect_card": {
extraData = adaptSelectUnselectCardResponse(
response.select_unselect_card
);
break;
}
default: {
break;
}
......
......@@ -5,7 +5,7 @@ export default (response: ygopro.CtosGameMsgResponse.SelectChainResponse) => {
const array = new Uint8Array(4);
const writer = new BufferWriter(array, true);
writer.writeUint32(response.selected_ptr);
writer.writeInt32(response.selected_ptr);
return array;
};
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "../../bufferIO";
export default (
response: ygopro.CtosGameMsgResponse.SelectUnselectCardResponse
) => {
if (response.cancel_or_finish) {
const array = new Uint8Array(4);
const writer = new BufferWriter(array, true);
writer.writeInt32(-1);
return array;
} else {
const array = new Uint8Array(2);
const writer = new BufferWriter(array, true);
writer.writeUint8(1);
writer.writeUint8(response.selected_ptr);
return array;
}
};
......@@ -40,3 +40,4 @@ export const MSG_SELECT_EFFECTYN = 12;
export const MSG_SELECT_POSITION = 19;
export const MSG_SELECT_OPTION = 14;
export const MSG_SELECT_BATTLE_CMD = 10;
export const MSG_SELECT_UNSELECT_CARD = 26;
......@@ -19,6 +19,7 @@ import MsgSelectEffectYnAdapter from "./selectEffectYn";
import MsgSelectPositionAdapter from "./selectPosition";
import MsgSelectOptionAdapter from "./selectOption";
import MsgSelectBattleCmdAdapter from "./selectBattleCmd";
import MsgSelectUnselectCardAdapter from "./selectUnselectCard";
import PENETRATE from "./penetrate";
/*
......@@ -111,6 +112,11 @@ export default class GameMsgAdapter implements StocAdapter {
break;
}
case GAME_MSG.MSG_SELECT_UNSELECT_CARD: {
gameMsg.select_unselect_card = MsgSelectUnselectCardAdapter(gameData);
break;
}
default: {
console.log("Unhandled GameMessage function=", func);
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "../../bufferIO";
import MsgSelectUnselectCard = ygopro.StocGameMessage.MsgSelectUnselectCard;
/*
* Msg Select Unselect Card
*
* @param -
*
* @usage - 玩家选择未选择的卡牌
* */
export default (data: Uint8Array) => {
const reader = new BufferReader(data, true);
const player = reader.readUint8();
const finishable = reader.readUint8() != 0;
const cancelable = reader.readUint8() != 0;
const min = reader.readUint8();
const max = reader.readUint8();
const msg = new MsgSelectUnselectCard({
player,
finishable,
cancelable,
min,
max,
});
const count1 = reader.readUint8();
for (let i = 0; i < count1; i++) {
const code = reader.readUint32();
const location = reader.readCardLocation();
msg.selectable_cards.push(
new MsgSelectUnselectCard.Info({ code, location, response: i })
);
}
const count2 = reader.readUint8();
for (let i = count1; i < count1 + count2; i++) {
const code = reader.readUint32();
const location = reader.readCardLocation();
msg.selected_cards.push(
new MsgSelectUnselectCard.Info({ code, location, response: i })
);
}
return msg;
};
......@@ -230,3 +230,21 @@ export function sendSelectBattleCmdResponse(value: number) {
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
export function sendSelectUnselectCardResponse(value: {
cancel_or_finish?: boolean;
selected_ptr?: number;
}) {
const response = new ygopro.YgoCtosMsg({
ctos_response: new ygopro.CtosGameMsgResponse({
select_unselect_card:
new ygopro.CtosGameMsgResponse.SelectUnselectCardResponse({
selected_ptr: value.selected_ptr,
cancel_or_finish: value.cancel_or_finish,
}),
}),
});
const payload = new GameMsgResponse(response).serialize();
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { AppDispatch } from "../../store";
import MsgSelectUnselectCard = ygopro.StocGameMessage.MsgSelectUnselectCard;
export default (
selectUnselectCard: MsgSelectUnselectCard,
dispatch: AppDispatch
) => {
console.log(selectUnselectCard);
};
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