Commit 00ec60e9 authored by Chunchi Che's avatar Chunchi Che

add selectPlaceResponse ctos adapter

parent 553039ec
......@@ -2,6 +2,7 @@ import { ygopro } from "../../../idl/ocgcore";
import { YgoProPacket } from "../../packet";
import { CTOS_RESPONSE } from "../../protoDecl";
import adaptSelectIdleCmdResponse from "./selectIdleCmd";
import adaptSelectPlaceResponse from "./selectPlace";
/*
* CTOS CTOS_RESPONSE
......@@ -22,6 +23,11 @@ export default class CtosResponsePacket extends YgoProPacket {
break;
}
case "select_place": {
extraData = adaptSelectPlaceResponse(response.select_place);
break;
}
default: {
break;
}
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "../../bufferIO";
import { cardZoneToNumber } from "../../util";
export default (response: ygopro.CtosGameMsgResponse.SelectPlaceResponse) => {
const array = new Uint8Array(3);
const writer = new BufferWriter(array, true);
writer.writeUint8(response.player);
writer.writeUint8(cardZoneToNumber(response.zone));
writer.writeUint8(response.sequence);
return array;
};
......@@ -2,6 +2,9 @@
* 一些基础函数。
*
* */
import { ygopro } from "../idl/ocgcore";
export const UTF16_BUFFER_MAX_LEN = 20;
const FILLING_TOKEN: number = 0xcccc;
......@@ -72,3 +75,41 @@ export function utf8ArrayToStr(array: Uint8Array) {
return out;
}
export function cardZoneToNumber(zone: ygopro.CardZone): number {
switch (zone) {
case ygopro.CardZone.DECK: {
return 0x01;
}
case ygopro.CardZone.HAND: {
return 0x02;
}
case ygopro.CardZone.MZONE: {
return 0x04;
}
case ygopro.CardZone.SZONE: {
return 0x08;
}
case ygopro.CardZone.GRAVE: {
return 0x10;
}
case ygopro.CardZone.REMOVED: {
return 0x20;
}
case ygopro.CardZone.EXTRA: {
return 0x40;
}
case ygopro.CardZone.OVERLAY: {
return 0x80;
}
case ygopro.CardZone.ONFIELD: {
return 0x0c;
}
case ygopro.CardZone.FZONE: {
return 0x100;
}
case ygopro.CardZone.PZONE: {
return 0x200;
}
}
}
......@@ -131,3 +131,22 @@ export function sendSelectIdleCmdResponse(value: number) {
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
export function sendSelectPlaceResponse(value: {
controler: number;
zone: ygopro.CardZone;
sequence: number;
}) {
const response = new ygopro.YgoCtosMsg({
ctos_response: new ygopro.CtosGameMsgResponse({
select_place: new ygopro.CtosGameMsgResponse.SelectPlaceResponse({
player: value.controler,
zone: value.zone,
sequence: value.sequence,
}),
}),
});
const payload = new GameMsgResponse(response).serialize();
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
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