Commit 3be528f2 authored by Chunchi Che's avatar Chunchi Che Committed by WANG HE

add StocHsPlayerEnter adapt

parent 639c011d
......@@ -5,3 +5,4 @@ export const CTOS_HS_READY = 34;
export const STOC_JOIN_GAME = 18;
export const STOC_CHAT = 25;
export const STOC_HS_PLAYER_ENTER = 32;
import { ygopro } from "../../idl/ocgcore";
import { ygoProPacket, ygoProtobuf } from "../packet";
import { UTF16_BUFFER_MAX_LEN } from "../util";
const UINT8_PER_UINT16 = 2;
export default class StocHsPlayerEnter implements ygoProtobuf {
packet: ygoProPacket;
constructor(packet: ygoProPacket) {
this.packet = packet;
}
adapt(): ygopro.YgoStocMsg {
const exData = this.packet.exData;
const decoder = new TextDecoder("utf-16");
const name = decoder.decode(
exData.slice(0, UTF16_BUFFER_MAX_LEN * UINT8_PER_UINT16)
);
const dataView = new DataView(exData.buffer);
const pos = dataView.getInt8(UTF16_BUFFER_MAX_LEN * UINT8_PER_UINT16) & 0x3;
return new ygopro.YgoStocMsg({
stoc_hs_player_enter: new ygopro.StocHsPlayerEnter({
name,
pos,
}),
});
}
}
const UTF16_BUFFER_MAX_LEN = 20;
export const UTF16_BUFFER_MAX_LEN = 20;
const FILLING_TOKEN: number = 0xcccc;
export function strEncodeUTF16(str: string) {
......
......@@ -7,8 +7,13 @@ import handleChat from "./room/chat";
import handleHsWatchChange from "./room/hsWatchChange";
import { ygoArrayBuilder } from "../api/ocgcore/ocgAdapter/packet";
import StocJoinGame from "../api/ocgcore/ocgAdapter/stoc/stocJoinGame";
import { STOC_CHAT, STOC_JOIN_GAME } from "../api/ocgcore/ocgAdapter/protoDecl";
import {
STOC_CHAT,
STOC_HS_PLAYER_ENTER,
STOC_JOIN_GAME,
} from "../api/ocgcore/ocgAdapter/protoDecl";
import StocChat from "../api/ocgcore/ocgAdapter/stoc/stocChat";
import StocHsPlayerEnter from "../api/ocgcore/ocgAdapter/stoc/stocHsPlayerEnter";
export default function handleSocketMessage(e: MessageEvent) {
const packet = new ygoArrayBuilder(e.data);
......@@ -26,6 +31,11 @@ export default function handleSocketMessage(e: MessageEvent) {
break;
}
case STOC_HS_PLAYER_ENTER: {
pb = new StocHsPlayerEnter(packet).adapt();
break;
}
default: {
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