Commit 6811be94 authored by Chunchi Che's avatar Chunchi Che

Merge branch 'feat/service/select_card' into 'main'

Feat/service/select card

See merge request mycard/Neos!60
parents ae0cafb9 8ddec62c
neos-protobuf @ 07651117
Subproject commit 621489ace4b9d2ecb653fe0da25279b68154d206 Subproject commit 07651117cd5f99d81740c2419383a88904ba6557
...@@ -2412,7 +2412,7 @@ export namespace ygopro { ...@@ -2412,7 +2412,7 @@ export namespace ygopro {
} }
} }
export class CtosGameMsgResponse extends pb_1.Message { export class CtosGameMsgResponse extends pb_1.Message {
#one_of_decls: number[][] = [[1, 2]]; #one_of_decls: number[][] = [[1, 2, 3]];
constructor( constructor(
data?: data?:
| any[] | any[]
...@@ -2420,10 +2420,17 @@ export namespace ygopro { ...@@ -2420,10 +2420,17 @@ export namespace ygopro {
| { | {
select_idle_cmd?: CtosGameMsgResponse.SelectIdleCmdResponse; select_idle_cmd?: CtosGameMsgResponse.SelectIdleCmdResponse;
select_place?: never; select_place?: never;
select_card?: never;
} }
| { | {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: CtosGameMsgResponse.SelectPlaceResponse; select_place?: CtosGameMsgResponse.SelectPlaceResponse;
select_card?: never;
}
| {
select_idle_cmd?: never;
select_place?: never;
select_card?: CtosGameMsgResponse.SelectCardResponse;
} }
)) ))
) { ) {
...@@ -2443,6 +2450,9 @@ export namespace ygopro { ...@@ -2443,6 +2450,9 @@ export namespace ygopro {
if ("select_place" in data && data.select_place != undefined) { if ("select_place" in data && data.select_place != undefined) {
this.select_place = data.select_place; this.select_place = data.select_place;
} }
if ("select_card" in data && data.select_card != undefined) {
this.select_card = data.select_card;
}
} }
} }
get select_idle_cmd() { get select_idle_cmd() {
...@@ -2471,15 +2481,33 @@ export namespace ygopro { ...@@ -2471,15 +2481,33 @@ export namespace ygopro {
get has_select_place() { get has_select_place() {
return pb_1.Message.getField(this, 2) != null; return pb_1.Message.getField(this, 2) != null;
} }
get select_card() {
return pb_1.Message.getWrapperField(
this,
CtosGameMsgResponse.SelectCardResponse,
3
) as CtosGameMsgResponse.SelectCardResponse;
}
set select_card(value: CtosGameMsgResponse.SelectCardResponse) {
pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
}
get has_select_card() {
return pb_1.Message.getField(this, 3) != null;
}
get gameMsgResponse() { get gameMsgResponse() {
const cases: { const cases: {
[index: number]: "none" | "select_idle_cmd" | "select_place"; [index: number]:
| "none"
| "select_idle_cmd"
| "select_place"
| "select_card";
} = { } = {
0: "none", 0: "none",
1: "select_idle_cmd", 1: "select_idle_cmd",
2: "select_place", 2: "select_place",
3: "select_card",
}; };
return cases[pb_1.Message.computeOneofCase(this, [1, 2])]; return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3])];
} }
static fromObject(data: { static fromObject(data: {
select_idle_cmd?: ReturnType< select_idle_cmd?: ReturnType<
...@@ -2488,6 +2516,9 @@ export namespace ygopro { ...@@ -2488,6 +2516,9 @@ export namespace ygopro {
select_place?: ReturnType< select_place?: ReturnType<
typeof CtosGameMsgResponse.SelectPlaceResponse.prototype.toObject typeof CtosGameMsgResponse.SelectPlaceResponse.prototype.toObject
>; >;
select_card?: ReturnType<
typeof CtosGameMsgResponse.SelectCardResponse.prototype.toObject
>;
}): CtosGameMsgResponse { }): CtosGameMsgResponse {
const message = new CtosGameMsgResponse({}); const message = new CtosGameMsgResponse({});
if (data.select_idle_cmd != null) { if (data.select_idle_cmd != null) {
...@@ -2500,6 +2531,11 @@ export namespace ygopro { ...@@ -2500,6 +2531,11 @@ export namespace ygopro {
message.select_place = message.select_place =
CtosGameMsgResponse.SelectPlaceResponse.fromObject(data.select_place); CtosGameMsgResponse.SelectPlaceResponse.fromObject(data.select_place);
} }
if (data.select_card != null) {
message.select_card = CtosGameMsgResponse.SelectCardResponse.fromObject(
data.select_card
);
}
return message; return message;
} }
toObject() { toObject() {
...@@ -2510,6 +2546,9 @@ export namespace ygopro { ...@@ -2510,6 +2546,9 @@ export namespace ygopro {
select_place?: ReturnType< select_place?: ReturnType<
typeof CtosGameMsgResponse.SelectPlaceResponse.prototype.toObject typeof CtosGameMsgResponse.SelectPlaceResponse.prototype.toObject
>; >;
select_card?: ReturnType<
typeof CtosGameMsgResponse.SelectCardResponse.prototype.toObject
>;
} = {}; } = {};
if (this.select_idle_cmd != null) { if (this.select_idle_cmd != null) {
data.select_idle_cmd = this.select_idle_cmd.toObject(); data.select_idle_cmd = this.select_idle_cmd.toObject();
...@@ -2517,6 +2556,9 @@ export namespace ygopro { ...@@ -2517,6 +2556,9 @@ export namespace ygopro {
if (this.select_place != null) { if (this.select_place != null) {
data.select_place = this.select_place.toObject(); data.select_place = this.select_place.toObject();
} }
if (this.select_card != null) {
data.select_card = this.select_card.toObject();
}
return data; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
...@@ -2531,6 +2573,10 @@ export namespace ygopro { ...@@ -2531,6 +2573,10 @@ export namespace ygopro {
writer.writeMessage(2, this.select_place, () => writer.writeMessage(2, this.select_place, () =>
this.select_place.serialize(writer) this.select_place.serialize(writer)
); );
if (this.has_select_card)
writer.writeMessage(3, this.select_card, () =>
this.select_card.serialize(writer)
);
if (!w) return writer.getResultBuffer(); if (!w) return writer.getResultBuffer();
} }
static deserialize( static deserialize(
...@@ -2560,6 +2606,14 @@ export namespace ygopro { ...@@ -2560,6 +2606,14 @@ export namespace ygopro {
CtosGameMsgResponse.SelectPlaceResponse.deserialize(reader)) CtosGameMsgResponse.SelectPlaceResponse.deserialize(reader))
); );
break; break;
case 3:
reader.readMessage(
message.select_card,
() =>
(message.select_card =
CtosGameMsgResponse.SelectCardResponse.deserialize(reader))
);
break;
default: default:
reader.skipField(); reader.skipField();
} }
...@@ -2784,6 +2838,89 @@ export namespace ygopro { ...@@ -2784,6 +2838,89 @@ export namespace ygopro {
return SelectPlaceResponse.deserialize(bytes); return SelectPlaceResponse.deserialize(bytes);
} }
} }
export class SelectCardResponse extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
data?:
| any[]
| {
selected_ptrs?: number[];
}
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[1],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("selected_ptrs" in data && data.selected_ptrs != undefined) {
this.selected_ptrs = data.selected_ptrs;
}
}
}
get selected_ptrs() {
return pb_1.Message.getFieldWithDefault(this, 1, []) as number[];
}
set selected_ptrs(value: number[]) {
pb_1.Message.setField(this, 1, value);
}
static fromObject(data: {
selected_ptrs?: number[];
}): SelectCardResponse {
const message = new SelectCardResponse({});
if (data.selected_ptrs != null) {
message.selected_ptrs = data.selected_ptrs;
}
return message;
}
toObject() {
const data: {
selected_ptrs?: number[];
} = {};
if (this.selected_ptrs != null) {
data.selected_ptrs = this.selected_ptrs;
}
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.selected_ptrs.length)
writer.writePackedInt32(1, this.selected_ptrs);
if (!w) return writer.getResultBuffer();
}
static deserialize(
bytes: Uint8Array | pb_1.BinaryReader
): SelectCardResponse {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new SelectCardResponse();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
message.selected_ptrs = reader.readPackedInt32();
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): SelectCardResponse {
return SelectCardResponse.deserialize(bytes);
}
}
} }
export class StocJoinGame extends pb_1.Message { export class StocJoinGame extends pb_1.Message {
#one_of_decls: number[][] = []; #one_of_decls: number[][] = [];
...@@ -4163,7 +4300,7 @@ export namespace ygopro { ...@@ -4163,7 +4300,7 @@ export namespace ygopro {
} }
} }
export class StocGameMessage extends pb_1.Message { export class StocGameMessage extends pb_1.Message {
#one_of_decls: number[][] = [[1, 2, 3, 4, 5, 6, 7, 8]]; #one_of_decls: number[][] = [[1, 2, 3, 4, 5, 6, 7, 8, 9]];
constructor( constructor(
data?: data?:
| any[] | any[]
...@@ -4177,6 +4314,7 @@ export namespace ygopro { ...@@ -4177,6 +4314,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4187,6 +4325,7 @@ export namespace ygopro { ...@@ -4187,6 +4325,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4197,6 +4336,7 @@ export namespace ygopro { ...@@ -4197,6 +4336,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4207,6 +4347,7 @@ export namespace ygopro { ...@@ -4207,6 +4347,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4217,6 +4358,7 @@ export namespace ygopro { ...@@ -4217,6 +4358,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4227,6 +4369,7 @@ export namespace ygopro { ...@@ -4227,6 +4369,7 @@ export namespace ygopro {
select_idle_cmd?: StocGameMessage.MsgSelectIdleCmd; select_idle_cmd?: StocGameMessage.MsgSelectIdleCmd;
select_place?: never; select_place?: never;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4237,6 +4380,7 @@ export namespace ygopro { ...@@ -4237,6 +4380,7 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: StocGameMessage.MsgSelectPlace; select_place?: StocGameMessage.MsgSelectPlace;
move?: never; move?: never;
select_card?: never;
} }
| { | {
start?: never; start?: never;
...@@ -4247,6 +4391,18 @@ export namespace ygopro { ...@@ -4247,6 +4391,18 @@ export namespace ygopro {
select_idle_cmd?: never; select_idle_cmd?: never;
select_place?: never; select_place?: never;
move?: StocGameMessage.MsgMove; move?: StocGameMessage.MsgMove;
select_card?: never;
}
| {
start?: never;
draw?: never;
new_turn?: never;
new_phase?: never;
hint?: never;
select_idle_cmd?: never;
select_place?: never;
move?: never;
select_card?: StocGameMessage.MsgSelectCard;
} }
)) ))
) { ) {
...@@ -4284,6 +4440,9 @@ export namespace ygopro { ...@@ -4284,6 +4440,9 @@ export namespace ygopro {
if ("move" in data && data.move != undefined) { if ("move" in data && data.move != undefined) {
this.move = data.move; this.move = data.move;
} }
if ("select_card" in data && data.select_card != undefined) {
this.select_card = data.select_card;
}
} }
} }
get start() { get start() {
...@@ -4390,6 +4549,19 @@ export namespace ygopro { ...@@ -4390,6 +4549,19 @@ export namespace ygopro {
get has_move() { get has_move() {
return pb_1.Message.getField(this, 8) != null; return pb_1.Message.getField(this, 8) != null;
} }
get select_card() {
return pb_1.Message.getWrapperField(
this,
StocGameMessage.MsgSelectCard,
9
) as StocGameMessage.MsgSelectCard;
}
set select_card(value: StocGameMessage.MsgSelectCard) {
pb_1.Message.setOneofWrapperField(this, 9, this.#one_of_decls[0], value);
}
get has_select_card() {
return pb_1.Message.getField(this, 9) != null;
}
get gameMsg() { get gameMsg() {
const cases: { const cases: {
[index: number]: [index: number]:
...@@ -4401,7 +4573,8 @@ export namespace ygopro { ...@@ -4401,7 +4573,8 @@ export namespace ygopro {
| "hint" | "hint"
| "select_idle_cmd" | "select_idle_cmd"
| "select_place" | "select_place"
| "move"; | "move"
| "select_card";
} = { } = {
0: "none", 0: "none",
1: "start", 1: "start",
...@@ -4412,9 +4585,10 @@ export namespace ygopro { ...@@ -4412,9 +4585,10 @@ export namespace ygopro {
6: "select_idle_cmd", 6: "select_idle_cmd",
7: "select_place", 7: "select_place",
8: "move", 8: "move",
9: "select_card",
}; };
return cases[ return cases[
pb_1.Message.computeOneofCase(this, [1, 2, 3, 4, 5, 6, 7, 8]) pb_1.Message.computeOneofCase(this, [1, 2, 3, 4, 5, 6, 7, 8, 9])
]; ];
} }
static fromObject(data: { static fromObject(data: {
...@@ -4434,6 +4608,9 @@ export namespace ygopro { ...@@ -4434,6 +4608,9 @@ export namespace ygopro {
typeof StocGameMessage.MsgSelectPlace.prototype.toObject typeof StocGameMessage.MsgSelectPlace.prototype.toObject
>; >;
move?: ReturnType<typeof StocGameMessage.MsgMove.prototype.toObject>; move?: ReturnType<typeof StocGameMessage.MsgMove.prototype.toObject>;
select_card?: ReturnType<
typeof StocGameMessage.MsgSelectCard.prototype.toObject
>;
}): StocGameMessage { }): StocGameMessage {
const message = new StocGameMessage({}); const message = new StocGameMessage({});
if (data.start != null) { if (data.start != null) {
...@@ -4466,6 +4643,11 @@ export namespace ygopro { ...@@ -4466,6 +4643,11 @@ export namespace ygopro {
if (data.move != null) { if (data.move != null) {
message.move = StocGameMessage.MsgMove.fromObject(data.move); message.move = StocGameMessage.MsgMove.fromObject(data.move);
} }
if (data.select_card != null) {
message.select_card = StocGameMessage.MsgSelectCard.fromObject(
data.select_card
);
}
return message; return message;
} }
toObject() { toObject() {
...@@ -4486,6 +4668,9 @@ export namespace ygopro { ...@@ -4486,6 +4668,9 @@ export namespace ygopro {
typeof StocGameMessage.MsgSelectPlace.prototype.toObject typeof StocGameMessage.MsgSelectPlace.prototype.toObject
>; >;
move?: ReturnType<typeof StocGameMessage.MsgMove.prototype.toObject>; move?: ReturnType<typeof StocGameMessage.MsgMove.prototype.toObject>;
select_card?: ReturnType<
typeof StocGameMessage.MsgSelectCard.prototype.toObject
>;
} = {}; } = {};
if (this.start != null) { if (this.start != null) {
data.start = this.start.toObject(); data.start = this.start.toObject();
...@@ -4511,6 +4696,9 @@ export namespace ygopro { ...@@ -4511,6 +4696,9 @@ export namespace ygopro {
if (this.move != null) { if (this.move != null) {
data.move = this.move.toObject(); data.move = this.move.toObject();
} }
if (this.select_card != null) {
data.select_card = this.select_card.toObject();
}
return data; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
...@@ -4541,6 +4729,10 @@ export namespace ygopro { ...@@ -4541,6 +4729,10 @@ export namespace ygopro {
); );
if (this.has_move) if (this.has_move)
writer.writeMessage(8, this.move, () => this.move.serialize(writer)); writer.writeMessage(8, this.move, () => this.move.serialize(writer));
if (this.has_select_card)
writer.writeMessage(9, this.select_card, () =>
this.select_card.serialize(writer)
);
if (!w) return writer.getResultBuffer(); if (!w) return writer.getResultBuffer();
} }
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StocGameMessage { static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StocGameMessage {
...@@ -4609,6 +4801,14 @@ export namespace ygopro { ...@@ -4609,6 +4801,14 @@ export namespace ygopro {
() => (message.move = StocGameMessage.MsgMove.deserialize(reader)) () => (message.move = StocGameMessage.MsgMove.deserialize(reader))
); );
break; break;
case 9:
reader.readMessage(
message.select_card,
() =>
(message.select_card =
StocGameMessage.MsgSelectCard.deserialize(reader))
);
break;
default: default:
reader.skipField(); reader.skipField();
} }
...@@ -6240,5 +6440,342 @@ export namespace ygopro { ...@@ -6240,5 +6440,342 @@ export namespace ygopro {
return MsgMove.deserialize(bytes); return MsgMove.deserialize(bytes);
} }
} }
export class MsgSelectCard extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
data?:
| any[]
| {
player?: number;
cancelable?: boolean;
min?: number;
max?: number;
cards?: StocGameMessage.MsgSelectCard.SelectAbleCard[];
}
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[5],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("player" in data && data.player != undefined) {
this.player = data.player;
}
if ("cancelable" in data && data.cancelable != undefined) {
this.cancelable = data.cancelable;
}
if ("min" in data && data.min != undefined) {
this.min = data.min;
}
if ("max" in data && data.max != undefined) {
this.max = data.max;
}
if ("cards" in data && data.cards != undefined) {
this.cards = data.cards;
}
}
}
get player() {
return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
}
set player(value: number) {
pb_1.Message.setField(this, 1, value);
}
get cancelable() {
return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean;
}
set cancelable(value: boolean) {
pb_1.Message.setField(this, 2, value);
}
get min() {
return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
}
set min(value: number) {
pb_1.Message.setField(this, 3, value);
}
get max() {
return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
}
set max(value: number) {
pb_1.Message.setField(this, 4, value);
}
get cards() {
return pb_1.Message.getRepeatedWrapperField(
this,
StocGameMessage.MsgSelectCard.SelectAbleCard,
5
) as StocGameMessage.MsgSelectCard.SelectAbleCard[];
}
set cards(value: StocGameMessage.MsgSelectCard.SelectAbleCard[]) {
pb_1.Message.setRepeatedWrapperField(this, 5, value);
}
static fromObject(data: {
player?: number;
cancelable?: boolean;
min?: number;
max?: number;
cards?: ReturnType<
typeof StocGameMessage.MsgSelectCard.SelectAbleCard.prototype.toObject
>[];
}): MsgSelectCard {
const message = new MsgSelectCard({});
if (data.player != null) {
message.player = data.player;
}
if (data.cancelable != null) {
message.cancelable = data.cancelable;
}
if (data.min != null) {
message.min = data.min;
}
if (data.max != null) {
message.max = data.max;
}
if (data.cards != null) {
message.cards = data.cards.map((item) =>
StocGameMessage.MsgSelectCard.SelectAbleCard.fromObject(item)
);
}
return message;
}
toObject() {
const data: {
player?: number;
cancelable?: boolean;
min?: number;
max?: number;
cards?: ReturnType<
typeof StocGameMessage.MsgSelectCard.SelectAbleCard.prototype.toObject
>[];
} = {};
if (this.player != null) {
data.player = this.player;
}
if (this.cancelable != null) {
data.cancelable = this.cancelable;
}
if (this.min != null) {
data.min = this.min;
}
if (this.max != null) {
data.max = this.max;
}
if (this.cards != null) {
data.cards = this.cards.map(
(item: StocGameMessage.MsgSelectCard.SelectAbleCard) =>
item.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.player != 0) writer.writeInt32(1, this.player);
if (this.cancelable != false) writer.writeBool(2, this.cancelable);
if (this.min != 0) writer.writeInt32(3, this.min);
if (this.max != 0) writer.writeInt32(4, this.max);
if (this.cards.length)
writer.writeRepeatedMessage(
5,
this.cards,
(item: StocGameMessage.MsgSelectCard.SelectAbleCard) =>
item.serialize(writer)
);
if (!w) return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MsgSelectCard {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new MsgSelectCard();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
message.player = reader.readInt32();
break;
case 2:
message.cancelable = reader.readBool();
break;
case 3:
message.min = reader.readInt32();
break;
case 4:
message.max = reader.readInt32();
break;
case 5:
reader.readMessage(message.cards, () =>
pb_1.Message.addToRepeatedWrapperField(
message,
5,
StocGameMessage.MsgSelectCard.SelectAbleCard.deserialize(
reader
),
StocGameMessage.MsgSelectCard.SelectAbleCard
)
);
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgSelectCard {
return MsgSelectCard.deserialize(bytes);
}
}
export namespace MsgSelectCard {
export class SelectAbleCard extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
data?:
| any[]
| {
code?: number;
location?: CardLocation;
response?: number;
}
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("code" in data && data.code != undefined) {
this.code = data.code;
}
if ("location" in data && data.location != undefined) {
this.location = data.location;
}
if ("response" in data && data.response != undefined) {
this.response = data.response;
}
}
}
get code() {
return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
}
set code(value: number) {
pb_1.Message.setField(this, 1, value);
}
get location() {
return pb_1.Message.getWrapperField(
this,
CardLocation,
2
) as CardLocation;
}
set location(value: CardLocation) {
pb_1.Message.setWrapperField(this, 2, value);
}
get has_location() {
return pb_1.Message.getField(this, 2) != null;
}
get response() {
return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
}
set response(value: number) {
pb_1.Message.setField(this, 3, value);
}
static fromObject(data: {
code?: number;
location?: ReturnType<typeof CardLocation.prototype.toObject>;
response?: number;
}): SelectAbleCard {
const message = new SelectAbleCard({});
if (data.code != null) {
message.code = data.code;
}
if (data.location != null) {
message.location = CardLocation.fromObject(data.location);
}
if (data.response != null) {
message.response = data.response;
}
return message;
}
toObject() {
const data: {
code?: number;
location?: ReturnType<typeof CardLocation.prototype.toObject>;
response?: number;
} = {};
if (this.code != null) {
data.code = this.code;
}
if (this.location != null) {
data.location = this.location.toObject();
}
if (this.response != null) {
data.response = this.response;
}
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.code != 0) writer.writeInt32(1, this.code);
if (this.has_location)
writer.writeMessage(2, this.location, () =>
this.location.serialize(writer)
);
if (this.response != 0) writer.writeInt32(3, this.response);
if (!w) return writer.getResultBuffer();
}
static deserialize(
bytes: Uint8Array | pb_1.BinaryReader
): SelectAbleCard {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new SelectAbleCard();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
message.code = reader.readInt32();
break;
case 2:
reader.readMessage(
message.location,
() => (message.location = CardLocation.deserialize(reader))
);
break;
case 3:
message.response = reader.readInt32();
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): SelectAbleCard {
return SelectAbleCard.deserialize(bytes);
}
}
}
} }
} }
import { ygopro } from "../idl/ocgcore"; import { ygopro } from "../idl/ocgcore";
import { numberToCardPosition, numberToCardZone } from "./util";
const OFFSET_UINT8 = 1; const OFFSET_UINT8 = 1;
const OFFSET_INT8 = 1; const OFFSET_INT8 = 1;
...@@ -62,6 +63,30 @@ export class BufferReader { ...@@ -62,6 +63,30 @@ export class BufferReader {
return cardInfo; return cardInfo;
} }
readCardLocation(overlay?: boolean): ygopro.CardLocation {
const controler = this.readUint8();
const location = this.readUint8();
const sequence = this.readUint8();
const ss = this.readUint8();
const cardLocation = new ygopro.CardLocation({
controler,
location: numberToCardZone(location),
sequence,
});
if (overlay && overlay) {
cardLocation.overlay_sequence = ss;
} else {
const position = numberToCardPosition(ss);
if (position) {
cardLocation.position = position;
}
}
return cardLocation;
}
} }
export class BufferWriter { export class BufferWriter {
......
...@@ -3,6 +3,7 @@ import { YgoProPacket } from "../../packet"; ...@@ -3,6 +3,7 @@ import { YgoProPacket } from "../../packet";
import { CTOS_RESPONSE } from "../../protoDecl"; import { CTOS_RESPONSE } from "../../protoDecl";
import adaptSelectIdleCmdResponse from "./selectIdleCmd"; import adaptSelectIdleCmdResponse from "./selectIdleCmd";
import adaptSelectPlaceResponse from "./selectPlace"; import adaptSelectPlaceResponse from "./selectPlace";
import adaptSelectCardResponse from "./selectCard";
/* /*
* CTOS CTOS_RESPONSE * CTOS CTOS_RESPONSE
...@@ -28,6 +29,11 @@ export default class CtosResponsePacket extends YgoProPacket { ...@@ -28,6 +29,11 @@ export default class CtosResponsePacket extends YgoProPacket {
break; break;
} }
case "select_card": {
extraData = adaptSelectCardResponse(response.select_card);
break;
}
default: { default: {
break; break;
} }
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferWriter } from "../../bufferIO";
export default (response: ygopro.CtosGameMsgResponse.SelectCardResponse) => {
const array = new Uint8Array(1 + response.selected_ptrs.length);
const writer = new BufferWriter(array, true);
writer.writeUint8(response.selected_ptrs.length);
for (const ptr of response.selected_ptrs) {
writer.writeUint8(ptr);
}
return array;
};
...@@ -34,3 +34,4 @@ export const MSG_HINT = 2; ...@@ -34,3 +34,4 @@ export const MSG_HINT = 2;
export const MSG_SELECT_IDLE_CMD = 11; export const MSG_SELECT_IDLE_CMD = 11;
export const MSG_SELECT_PLACE = 18; export const MSG_SELECT_PLACE = 18;
export const MSG_MOVE = 50; export const MSG_MOVE = 50;
export const MSG_SELECT_CARD = 15;
...@@ -14,6 +14,7 @@ import MsgHintAdapter from "./hint"; ...@@ -14,6 +14,7 @@ import MsgHintAdapter from "./hint";
import MsgSelectIdleCmdAdapter from "./selectIdleCmd"; import MsgSelectIdleCmdAdapter from "./selectIdleCmd";
import MsgSelectPlaceAdapter from "./selectPlace"; import MsgSelectPlaceAdapter from "./selectPlace";
import MsgMoveAdapter from "./move"; import MsgMoveAdapter from "./move";
import MsgSelectCardAdapter from "./selectCard";
/* /*
* STOC GameMsg * STOC GameMsg
...@@ -79,6 +80,11 @@ export default class GameMsgAdapter implements StocAdapter { ...@@ -79,6 +80,11 @@ export default class GameMsgAdapter implements StocAdapter {
break; break;
} }
case GAME_MSG.MSG_SELECT_CARD: {
gameMsg.select_card = MsgSelectCardAdapter(gameData);
break;
}
default: { default: {
console.log("Unhandled GameMessage function=", func); console.log("Unhandled GameMessage function=", func);
......
import { ygopro } from "../../../idl/ocgcore"; import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "../../bufferIO"; import { BufferReader } from "../../bufferIO";
import {
cardZoneToNumber,
numberToCardPosition,
numberToCardZone,
} from "../../util";
import MsgMove = ygopro.StocGameMessage.MsgMove; import MsgMove = ygopro.StocGameMessage.MsgMove;
/* /*
...@@ -19,32 +14,8 @@ export default (data: Uint8Array) => { ...@@ -19,32 +14,8 @@ export default (data: Uint8Array) => {
const code = reader.readUint32(); const code = reader.readUint32();
const readCardLocation = () => { const fromLocation = reader.readCardLocation();
const controler = reader.readUint8(); const toLocation = reader.readCardLocation();
const location = reader.readUint8();
const sequence = reader.readUint8();
const ss = reader.readUint8();
const cardLocation = new ygopro.CardLocation({
controler,
location: numberToCardZone(location),
sequence,
});
if (location != cardZoneToNumber(ygopro.CardZone.OVERLAY)) {
const position = numberToCardPosition(ss);
if (position) {
cardLocation.position = position;
}
} else {
cardLocation.overlay_sequence = ss;
}
return cardLocation;
};
const fromLocation = readCardLocation();
const toLocation = readCardLocation();
return new MsgMove({ return new MsgMove({
code, code,
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "../../bufferIO";
import MsgSelectCard = ygopro.StocGameMessage.MsgSelectCard;
/*
* Msg Select Card
*
* @param - see: https://code.mycard.moe/mycard/neos-protobuf/-/blob/main/idl/ocgcore.neos-protobuf
* @usage - 玩家可选择的卡牌
* */
export default (data: Uint8Array) => {
const reader = new BufferReader(data, true);
const player = reader.readUint8();
const cancelable = reader.readUint8() != 0;
const min = reader.readUint8();
const max = reader.readUint8();
const count = reader.readUint8();
const msg = new MsgSelectCard({ player, cancelable, min, max });
for (let i = 0; i < count; i++) {
const code = reader.readUint32();
const location = reader.readCardLocation();
msg.cards.push(
new MsgSelectCard.SelectAbleCard({ code, location, response: i })
);
}
return msg;
};
...@@ -157,6 +157,7 @@ export function numberToCardZone( ...@@ -157,6 +157,7 @@ export function numberToCardZone(
} }
} }
// TODO: 需要考虑超量叠加情况下的位运算
export function numberToCardPosition( export function numberToCardPosition(
position: number position: number
): ygopro.CardPosition | undefined { ): ygopro.CardPosition | undefined {
......
...@@ -150,3 +150,16 @@ export function sendSelectPlaceResponse(value: { ...@@ -150,3 +150,16 @@ export function sendSelectPlaceResponse(value: {
socketMiddleWare({ cmd: socketCmd.SEND, payload }); socketMiddleWare({ cmd: socketCmd.SEND, payload });
} }
export function sendSelectCardResponse(value: number[]) {
const response = new ygopro.YgoCtosMsg({
ctos_response: new ygopro.CtosGameMsgResponse({
select_card: new ygopro.CtosGameMsgResponse.SelectCardResponse({
selected_ptrs: value,
}),
}),
});
const payload = new GameMsgResponse(response).serialize();
socketMiddleWare({ cmd: socketCmd.SEND, payload });
}
...@@ -8,6 +8,7 @@ import onMsgHint from "./hint"; ...@@ -8,6 +8,7 @@ import onMsgHint from "./hint";
import onMsgSelectIdleCmd from "./selectIdleCmd"; import onMsgSelectIdleCmd from "./selectIdleCmd";
import onMsgSelectPlace from "./selectPlace"; import onMsgSelectPlace from "./selectPlace";
import onMsgMove from "./move"; import onMsgMove from "./move";
import onMsgSelectCard from "./selectCard";
export default function handleGameMsg(pb: ygopro.YgoStocMsg) { export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
...@@ -70,6 +71,13 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) { ...@@ -70,6 +71,13 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
break; break;
} }
case "select_card": {
const selectCard = msg.select_card;
onMsgSelectCard(selectCard, dispatch);
break;
}
default: { default: {
break; break;
} }
......
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { AppDispatch } from "../../store";
import MsgSelectCard = ygopro.StocGameMessage.MsgSelectCard;
export default (selectCard: MsgSelectCard, dispatch: AppDispatch) => {
console.log(selectCard);
// TODO
};
...@@ -34,7 +34,6 @@ const CardListModal = () => { ...@@ -34,7 +34,6 @@ const CardListModal = () => {
cover={<img alt={item.name} src={item.imgUrl} />} cover={<img alt={item.name} src={item.imgUrl} />}
> >
<Meta title={item.name} /> <Meta title={item.name} />
<p>{item.desc}</p>
</Card> </Card>
} }
> >
......
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