Commit 4d55997f authored by Chunchi Che's avatar Chunchi Che Committed by WANG HE

add CtosUpdateDeck adapt

parent 775d5ee9
import { ygopro } from "../../idl/ocgcore";
import { ygoProPacket } from "../packet";
import { CTOS_UPDATE_DECK } from "../protoDecl";
const BYTES_PER_U32 = 4;
export default class CtosUpdateDeck extends ygoProPacket {
constructor(pb: ygopro.YgoCtosMsg) {
const updateDeck = pb.ctos_update_deck;
const main = updateDeck.main;
const extra = updateDeck.extra;
const side = updateDeck.side;
const mainLen = main.length + extra.length;
const sideLen = side.length;
const exDataLen = (2 + mainLen + sideLen) * BYTES_PER_U32;
const exData = new Uint8Array(exDataLen);
const dataView = new DataView(exData.buffer);
dataView.setInt32(0, mainLen, true);
dataView.setInt32(1 * BYTES_PER_U32, sideLen, true);
let offset = 2;
for (let card of main) {
dataView.setInt32(offset * BYTES_PER_U32, card, true);
offset += 1;
}
for (let card of extra) {
dataView.setInt32(offset * BYTES_PER_U32, card, true);
offset += 1;
}
for (let card of side) {
dataView.setInt32(offset * BYTES_PER_U32, card, true);
offset += 1;
}
super(exDataLen + 3, CTOS_UPDATE_DECK, exData);
}
}
export const CTOS_PLAYER_INFO = 16;
export const CTOS_JOIN_GAME = 18;
export const CTOS_UPDATE_DECK = 2;
export const STOC_JOIN_GAME = 18;
export const STOC_CHAT = 25;
......@@ -3,6 +3,7 @@ import socketMiddleWare, { socketCmd } from "../../middleware/socket";
import { IDeck } from "../Card";
import playerInfoPacket from "./ocgAdapter/ctos/ctosPlayerInfo";
import joinGamePacket from "./ocgAdapter/ctos/ctosJoinGame";
import CtosUpdateDeck from "./ocgAdapter/ctos/ctosUpdateDeck";
export function sendUpdateDeck(deck: IDeck) {
const updateDeck = new ygopro.YgoCtosMsg({
......@@ -12,8 +13,10 @@ export function sendUpdateDeck(deck: IDeck) {
side: deck.side,
}),
});
const payload = new CtosUpdateDeck(updateDeck).serialize();
console.log(payload);
socketMiddleWare({ cmd: socketCmd.SEND, payload: updateDeck });
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
export function sendHsReady() {
......@@ -21,7 +24,7 @@ export function sendHsReady() {
ctos_hs_ready: new ygopro.CtosHsReady({}),
});
socketMiddleWare({ cmd: socketCmd.SEND, payload: hasReady });
socketMiddleWare({ cmd: socketCmd.SEND, payload: hasReady.serialize() });
}
export function sendHsStart() {
......@@ -29,7 +32,7 @@ export function sendHsStart() {
ctos_hs_start: new ygopro.CtosHsStart({}),
});
socketMiddleWare({ cmd: socketCmd.SEND, payload: hasStart });
socketMiddleWare({ cmd: socketCmd.SEND, payload: hasStart.serialize() });
}
export function sendPlayerInfo(ws: WebSocket, player: string) {
......@@ -38,7 +41,7 @@ export function sendPlayerInfo(ws: WebSocket, player: string) {
name: player,
}),
});
const packet = new playerInfoPacket(playerInfo);
const packet = new playerInfoPacket(playerInfo); // todo: 需要收敛在一个层次里
ws.send(packet.serialize());
}
......
import { ygopro } from "../api/ocgcore/idl/ocgcore";
import handleSocketOpen from "../service/onSocketOpen";
import handleSocketMessage from "../service/onSocketMessage";
......@@ -15,7 +14,7 @@ export interface socketAction {
player: string;
passWd: string;
};
payload?: ygopro.YgoCtosMsg;
payload?: Uint8Array;
}
let ws: WebSocket | null = null;
......@@ -47,9 +46,9 @@ export default function (action: socketAction) {
break;
}
case socketCmd.SEND: {
const pb = action.payload;
if (ws && pb) {
ws.send(pb.serialize());
const payload = action.payload;
if (ws && payload) {
ws.send(payload);
}
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