Commit e200c465 authored by Chunchi Che's avatar Chunchi Che Committed by GitHub

Merge pull request #1 from DarkNeos/dev

Dev
parents 7baabff9 5b09d7aa
......@@ -3,8 +3,8 @@ import { ygopro } from "./api/ocgcore";
export default function JoinHome(props: { addr: string }) {
const ws = useRef<WebSocket | null>(null);
const [username, setUsername] = useState("");
const [passwd, setPasswd] = useState("");
const [userName, setUsername] = useState("");
const [passWd, setPasswd] = useState("");
const [isJoined, setJoined] = useState(false);
useEffect(() => {
......@@ -24,8 +24,12 @@ export default function JoinHome(props: { addr: string }) {
const wsCurrent = ws.current;
return () => wsCurrent.close();
}, []);
return () => {
if (wsCurrent.readyState == 1) {
wsCurrent.close();
}
};
}, [ws]);
let handleUsernameChange = (event: ChangeEvent<HTMLInputElement>) => {
setUsername(event.target.value);
......@@ -43,7 +47,36 @@ export default function JoinHome(props: { addr: string }) {
} else {
const wsCurrent = ws.current;
// todo
if (
userName != null &&
userName.length != 0 &&
passWd != null &&
passWd.length != 0
) {
console.log(
"ready to send playerInfo and joinGame packet, userName=" +
userName +
", passWd=" +
passWd
);
const playerInfo = new ygopro.YgoCtosMsg({
ctos_player_info: new ygopro.CtosPlayerInfo({
name: userName,
}),
});
wsCurrent.send(playerInfo.serialize());
const joinGame = new ygopro.YgoCtosMsg({
ctos_join_game: new ygopro.CtosJoinGame({
version: 4947,
gameid: 0,
passwd: passWd,
}),
});
wsCurrent.send(joinGame.serialize());
}
}
};
......@@ -53,7 +86,7 @@ export default function JoinHome(props: { addr: string }) {
<input
type="text"
title="username"
value={username}
value={userName}
onChange={handleUsernameChange}
></input>
</p>
......@@ -61,7 +94,7 @@ export default function JoinHome(props: { addr: string }) {
<input
type="text"
title="passwd"
value={passwd}
value={passWd}
onChange={handlePasswdChange}
></input>
</p>
......
......@@ -5,14 +5,18 @@ option go_package = "DarkNeos/ygopropb";
message YgoCtosMsg {
oneof msg {
CtosPlayerInfo ctos_player_info = 2;
CtosJoinGame ctos_join_game = 3;
CtosUpdateDeck ctos_update_deck = 4;
CtosPlayerInfo ctos_player_info = 1;
CtosJoinGame ctos_join_game = 2;
CtosUpdateDeck ctos_update_deck = 3;
}
}
StocJoinGame stoc_join_game = 101;
StocChat stoc_chat = 102;
StocHsPlayerEnter stoc_hs_player_enter = 103;
StocTypeChange stoc_type_change = 104;
message YgoStocMsg {
oneof msg {
StocJoinGame stoc_join_game = 1;
StocChat stoc_chat = 2;
StocHsPlayerEnter stoc_hs_player_enter = 3;
StocTypeChange stoc_type_change = 4;
}
}
......
......@@ -6,7 +6,7 @@
import * as pb_1 from "google-protobuf";
export namespace ygopro {
export class YgoCtosMsg extends pb_1.Message {
#one_of_decls: number[][] = [[2, 3, 4, 101, 102, 103, 104]];
#one_of_decls: number[][] = [[1, 2, 3]];
constructor(
data?:
| any[]
......@@ -15,64 +15,16 @@ export namespace ygopro {
ctos_player_info?: CtosPlayerInfo;
ctos_join_game?: never;
ctos_update_deck?: never;
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: CtosJoinGame;
ctos_update_deck?: never;
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: never;
ctos_update_deck?: CtosUpdateDeck;
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: never;
ctos_update_deck?: never;
stoc_join_game?: StocJoinGame;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: never;
ctos_update_deck?: never;
stoc_join_game?: never;
stoc_chat?: StocChat;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: never;
ctos_update_deck?: never;
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: StocHsPlayerEnter;
stoc_type_change?: never;
}
| {
ctos_player_info?: never;
ctos_join_game?: never;
ctos_update_deck?: never;
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: StocTypeChange;
}
))
) {
......@@ -95,180 +47,293 @@ export namespace ygopro {
if ("ctos_update_deck" in data && data.ctos_update_deck != undefined) {
this.ctos_update_deck = data.ctos_update_deck;
}
if ("stoc_join_game" in data && data.stoc_join_game != undefined) {
this.stoc_join_game = data.stoc_join_game;
}
if ("stoc_chat" in data && data.stoc_chat != undefined) {
this.stoc_chat = data.stoc_chat;
}
if (
"stoc_hs_player_enter" in data &&
data.stoc_hs_player_enter != undefined
) {
this.stoc_hs_player_enter = data.stoc_hs_player_enter;
}
if ("stoc_type_change" in data && data.stoc_type_change != undefined) {
this.stoc_type_change = data.stoc_type_change;
}
}
}
get ctos_player_info() {
return pb_1.Message.getWrapperField(
this,
CtosPlayerInfo,
2
1
) as CtosPlayerInfo;
}
set ctos_player_info(value: CtosPlayerInfo) {
pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
}
get has_ctos_player_info() {
return pb_1.Message.getField(this, 2) != null;
return pb_1.Message.getField(this, 1) != null;
}
get ctos_join_game() {
return pb_1.Message.getWrapperField(
this,
CtosJoinGame,
3
2
) as CtosJoinGame;
}
set ctos_join_game(value: CtosJoinGame) {
pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
}
get has_ctos_join_game() {
return pb_1.Message.getField(this, 3) != null;
return pb_1.Message.getField(this, 2) != null;
}
get ctos_update_deck() {
return pb_1.Message.getWrapperField(
this,
CtosUpdateDeck,
4
3
) as CtosUpdateDeck;
}
set ctos_update_deck(value: CtosUpdateDeck) {
pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
}
get has_ctos_update_deck() {
return pb_1.Message.getField(this, 4) != null;
return pb_1.Message.getField(this, 3) != null;
}
get msg() {
const cases: {
[index: number]:
| "none"
| "ctos_player_info"
| "ctos_join_game"
| "ctos_update_deck";
} = {
0: "none",
1: "ctos_player_info",
2: "ctos_join_game",
3: "ctos_update_deck",
};
return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3])];
}
static fromObject(data: {
ctos_player_info?: ReturnType<typeof CtosPlayerInfo.prototype.toObject>;
ctos_join_game?: ReturnType<typeof CtosJoinGame.prototype.toObject>;
ctos_update_deck?: ReturnType<typeof CtosUpdateDeck.prototype.toObject>;
}): YgoCtosMsg {
const message = new YgoCtosMsg({});
if (data.ctos_player_info != null) {
message.ctos_player_info = CtosPlayerInfo.fromObject(
data.ctos_player_info
);
}
if (data.ctos_join_game != null) {
message.ctos_join_game = CtosJoinGame.fromObject(data.ctos_join_game);
}
if (data.ctos_update_deck != null) {
message.ctos_update_deck = CtosUpdateDeck.fromObject(
data.ctos_update_deck
);
}
return message;
}
toObject() {
const data: {
ctos_player_info?: ReturnType<typeof CtosPlayerInfo.prototype.toObject>;
ctos_join_game?: ReturnType<typeof CtosJoinGame.prototype.toObject>;
ctos_update_deck?: ReturnType<typeof CtosUpdateDeck.prototype.toObject>;
} = {};
if (this.ctos_player_info != null) {
data.ctos_player_info = this.ctos_player_info.toObject();
}
if (this.ctos_join_game != null) {
data.ctos_join_game = this.ctos_join_game.toObject();
}
if (this.ctos_update_deck != null) {
data.ctos_update_deck = this.ctos_update_deck.toObject();
}
return data;
}
serialize(): Uint8Array;
serialize(w: pb_1.BinaryWriter): void;
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
const writer = w || new pb_1.BinaryWriter();
if (this.has_ctos_player_info)
writer.writeMessage(1, this.ctos_player_info, () =>
this.ctos_player_info.serialize(writer)
);
if (this.has_ctos_join_game)
writer.writeMessage(2, this.ctos_join_game, () =>
this.ctos_join_game.serialize(writer)
);
if (this.has_ctos_update_deck)
writer.writeMessage(3, this.ctos_update_deck, () =>
this.ctos_update_deck.serialize(writer)
);
if (!w) return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): YgoCtosMsg {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new YgoCtosMsg();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
reader.readMessage(
message.ctos_player_info,
() =>
(message.ctos_player_info = CtosPlayerInfo.deserialize(reader))
);
break;
case 2:
reader.readMessage(
message.ctos_join_game,
() => (message.ctos_join_game = CtosJoinGame.deserialize(reader))
);
break;
case 3:
reader.readMessage(
message.ctos_update_deck,
() =>
(message.ctos_update_deck = CtosUpdateDeck.deserialize(reader))
);
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): YgoCtosMsg {
return YgoCtosMsg.deserialize(bytes);
}
}
export class YgoStocMsg extends pb_1.Message {
#one_of_decls: number[][] = [[1, 2, 3, 4]];
constructor(
data?:
| any[]
| ({} & (
| {
stoc_join_game?: StocJoinGame;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
stoc_join_game?: never;
stoc_chat?: StocChat;
stoc_hs_player_enter?: never;
stoc_type_change?: never;
}
| {
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: StocHsPlayerEnter;
stoc_type_change?: never;
}
| {
stoc_join_game?: never;
stoc_chat?: never;
stoc_hs_player_enter?: never;
stoc_type_change?: StocTypeChange;
}
))
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("stoc_join_game" in data && data.stoc_join_game != undefined) {
this.stoc_join_game = data.stoc_join_game;
}
if ("stoc_chat" in data && data.stoc_chat != undefined) {
this.stoc_chat = data.stoc_chat;
}
if (
"stoc_hs_player_enter" in data &&
data.stoc_hs_player_enter != undefined
) {
this.stoc_hs_player_enter = data.stoc_hs_player_enter;
}
if ("stoc_type_change" in data && data.stoc_type_change != undefined) {
this.stoc_type_change = data.stoc_type_change;
}
}
}
get stoc_join_game() {
return pb_1.Message.getWrapperField(
this,
StocJoinGame,
101
1
) as StocJoinGame;
}
set stoc_join_game(value: StocJoinGame) {
pb_1.Message.setOneofWrapperField(
this,
101,
this.#one_of_decls[0],
value
);
pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
}
get has_stoc_join_game() {
return pb_1.Message.getField(this, 101) != null;
return pb_1.Message.getField(this, 1) != null;
}
get stoc_chat() {
return pb_1.Message.getWrapperField(this, StocChat, 102) as StocChat;
return pb_1.Message.getWrapperField(this, StocChat, 2) as StocChat;
}
set stoc_chat(value: StocChat) {
pb_1.Message.setOneofWrapperField(
this,
102,
this.#one_of_decls[0],
value
);
pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
}
get has_stoc_chat() {
return pb_1.Message.getField(this, 102) != null;
return pb_1.Message.getField(this, 2) != null;
}
get stoc_hs_player_enter() {
return pb_1.Message.getWrapperField(
this,
StocHsPlayerEnter,
103
3
) as StocHsPlayerEnter;
}
set stoc_hs_player_enter(value: StocHsPlayerEnter) {
pb_1.Message.setOneofWrapperField(
this,
103,
this.#one_of_decls[0],
value
);
pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
}
get has_stoc_hs_player_enter() {
return pb_1.Message.getField(this, 103) != null;
return pb_1.Message.getField(this, 3) != null;
}
get stoc_type_change() {
return pb_1.Message.getWrapperField(
this,
StocTypeChange,
104
4
) as StocTypeChange;
}
set stoc_type_change(value: StocTypeChange) {
pb_1.Message.setOneofWrapperField(
this,
104,
this.#one_of_decls[0],
value
);
pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
}
get has_stoc_type_change() {
return pb_1.Message.getField(this, 104) != null;
return pb_1.Message.getField(this, 4) != null;
}
get msg() {
const cases: {
[index: number]:
| "none"
| "ctos_player_info"
| "ctos_join_game"
| "ctos_update_deck"
| "stoc_join_game"
| "stoc_chat"
| "stoc_hs_player_enter"
| "stoc_type_change";
} = {
0: "none",
2: "ctos_player_info",
3: "ctos_join_game",
4: "ctos_update_deck",
101: "stoc_join_game",
102: "stoc_chat",
103: "stoc_hs_player_enter",
104: "stoc_type_change",
1: "stoc_join_game",
2: "stoc_chat",
3: "stoc_hs_player_enter",
4: "stoc_type_change",
};
return cases[
pb_1.Message.computeOneofCase(this, [2, 3, 4, 101, 102, 103, 104])
];
return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3, 4])];
}
static fromObject(data: {
ctos_player_info?: ReturnType<typeof CtosPlayerInfo.prototype.toObject>;
ctos_join_game?: ReturnType<typeof CtosJoinGame.prototype.toObject>;
ctos_update_deck?: ReturnType<typeof CtosUpdateDeck.prototype.toObject>;
stoc_join_game?: ReturnType<typeof StocJoinGame.prototype.toObject>;
stoc_chat?: ReturnType<typeof StocChat.prototype.toObject>;
stoc_hs_player_enter?: ReturnType<
typeof StocHsPlayerEnter.prototype.toObject
>;
stoc_type_change?: ReturnType<typeof StocTypeChange.prototype.toObject>;
}): YgoCtosMsg {
const message = new YgoCtosMsg({});
if (data.ctos_player_info != null) {
message.ctos_player_info = CtosPlayerInfo.fromObject(
data.ctos_player_info
);
}
if (data.ctos_join_game != null) {
message.ctos_join_game = CtosJoinGame.fromObject(data.ctos_join_game);
}
if (data.ctos_update_deck != null) {
message.ctos_update_deck = CtosUpdateDeck.fromObject(
data.ctos_update_deck
);
}
}): YgoStocMsg {
const message = new YgoStocMsg({});
if (data.stoc_join_game != null) {
message.stoc_join_game = StocJoinGame.fromObject(data.stoc_join_game);
}
......@@ -289,9 +354,6 @@ export namespace ygopro {
}
toObject() {
const data: {
ctos_player_info?: ReturnType<typeof CtosPlayerInfo.prototype.toObject>;
ctos_join_game?: ReturnType<typeof CtosJoinGame.prototype.toObject>;
ctos_update_deck?: ReturnType<typeof CtosUpdateDeck.prototype.toObject>;
stoc_join_game?: ReturnType<typeof StocJoinGame.prototype.toObject>;
stoc_chat?: ReturnType<typeof StocChat.prototype.toObject>;
stoc_hs_player_enter?: ReturnType<
......@@ -299,15 +361,6 @@ export namespace ygopro {
>;
stoc_type_change?: ReturnType<typeof StocTypeChange.prototype.toObject>;
} = {};
if (this.ctos_player_info != null) {
data.ctos_player_info = this.ctos_player_info.toObject();
}
if (this.ctos_join_game != null) {
data.ctos_join_game = this.ctos_join_game.toObject();
}
if (this.ctos_update_deck != null) {
data.ctos_update_deck = this.ctos_update_deck.toObject();
}
if (this.stoc_join_game != null) {
data.stoc_join_game = this.stoc_join_game.toObject();
}
......@@ -326,78 +379,46 @@ export namespace ygopro {
serialize(w: pb_1.BinaryWriter): void;
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
const writer = w || new pb_1.BinaryWriter();
if (this.has_ctos_player_info)
writer.writeMessage(2, this.ctos_player_info, () =>
this.ctos_player_info.serialize(writer)
);
if (this.has_ctos_join_game)
writer.writeMessage(3, this.ctos_join_game, () =>
this.ctos_join_game.serialize(writer)
);
if (this.has_ctos_update_deck)
writer.writeMessage(4, this.ctos_update_deck, () =>
this.ctos_update_deck.serialize(writer)
);
if (this.has_stoc_join_game)
writer.writeMessage(101, this.stoc_join_game, () =>
writer.writeMessage(1, this.stoc_join_game, () =>
this.stoc_join_game.serialize(writer)
);
if (this.has_stoc_chat)
writer.writeMessage(102, this.stoc_chat, () =>
writer.writeMessage(2, this.stoc_chat, () =>
this.stoc_chat.serialize(writer)
);
if (this.has_stoc_hs_player_enter)
writer.writeMessage(103, this.stoc_hs_player_enter, () =>
writer.writeMessage(3, this.stoc_hs_player_enter, () =>
this.stoc_hs_player_enter.serialize(writer)
);
if (this.has_stoc_type_change)
writer.writeMessage(104, this.stoc_type_change, () =>
writer.writeMessage(4, this.stoc_type_change, () =>
this.stoc_type_change.serialize(writer)
);
if (!w) return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): YgoCtosMsg {
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): YgoStocMsg {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new YgoCtosMsg();
message = new YgoStocMsg();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 2:
reader.readMessage(
message.ctos_player_info,
() =>
(message.ctos_player_info = CtosPlayerInfo.deserialize(reader))
);
break;
case 3:
reader.readMessage(
message.ctos_join_game,
() => (message.ctos_join_game = CtosJoinGame.deserialize(reader))
);
break;
case 4:
reader.readMessage(
message.ctos_update_deck,
() =>
(message.ctos_update_deck = CtosUpdateDeck.deserialize(reader))
);
break;
case 101:
case 1:
reader.readMessage(
message.stoc_join_game,
() => (message.stoc_join_game = StocJoinGame.deserialize(reader))
);
break;
case 102:
case 2:
reader.readMessage(
message.stoc_chat,
() => (message.stoc_chat = StocChat.deserialize(reader))
);
break;
case 103:
case 3:
reader.readMessage(
message.stoc_hs_player_enter,
() =>
......@@ -405,7 +426,7 @@ export namespace ygopro {
StocHsPlayerEnter.deserialize(reader))
);
break;
case 104:
case 4:
reader.readMessage(
message.stoc_type_change,
() =>
......@@ -421,8 +442,8 @@ export namespace ygopro {
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): YgoCtosMsg {
return YgoCtosMsg.deserialize(bytes);
static deserializeBinary(bytes: Uint8Array): YgoStocMsg {
return YgoStocMsg.deserialize(bytes);
}
}
export class CtosPlayerInfo extends pb_1.Message {
......
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