Commit a5b413eb authored by chechunchi's avatar chechunchi

add ctos selectPositionAdapter and helper

parent d3d1bc0e
...@@ -6,6 +6,7 @@ import adaptSelectPlaceResponse from "./selectPlace"; ...@@ -6,6 +6,7 @@ import adaptSelectPlaceResponse from "./selectPlace";
import adaptSelectCardResponse from "./selectCard"; import adaptSelectCardResponse from "./selectCard";
import adaptSelectChainResponse from "./selectChain"; import adaptSelectChainResponse from "./selectChain";
import adaptSelectEffectYnResponse from "./selectEffectYn"; import adaptSelectEffectYnResponse from "./selectEffectYn";
import adaptSelectPositionResponse from "./selectPosition";
/* /*
* CTOS CTOS_RESPONSE * CTOS CTOS_RESPONSE
...@@ -46,6 +47,11 @@ export default class CtosResponsePacket extends YgoProPacket { ...@@ -46,6 +47,11 @@ export default class CtosResponsePacket extends YgoProPacket {
break; break;
} }
case "select_position": {
extraData = adaptSelectPositionResponse(response.select_position);
break;
}
default: { default: {
break; break;
} }
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "../../bufferIO";
export default (
response: ygopro.CtosGameMsgResponse.SelectPositionResponse
) => {
const array = new Uint8Array(4);
const writer = new BufferWriter(array, true);
switch (response.position) {
case ygopro.CardPosition.FACEUP_ATTACK: {
writer.writeUint32(0x1);
break;
}
case ygopro.CardPosition.FACEDOWN_ATTACK: {
writer.writeUint32(0x2);
break;
}
case ygopro.CardPosition.FACEUP_DEFENSE: {
writer.writeUint32(0x4);
break;
}
case ygopro.CardPosition.FACEDOWN_DEFENSE: {
writer.writeUint32(0x8);
break;
}
default: {
console.warn(`Unsupported position type: ${response.position}`);
}
}
return array;
};
...@@ -189,3 +189,16 @@ export function sendSelectEffectYnResponse(value: boolean) { ...@@ -189,3 +189,16 @@ export function sendSelectEffectYnResponse(value: boolean) {
socketMiddleWare({ cmd: socketCmd.SEND, payload }); socketMiddleWare({ cmd: socketCmd.SEND, payload });
} }
export function sendSelectPositionResponse(value: ygopro.CardPosition) {
const response = new ygopro.YgoCtosMsg({
ctos_response: new ygopro.CtosGameMsgResponse({
select_position: new ygopro.CtosGameMsgResponse.SelectPositionResponse({
position: value,
}),
}),
});
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