Commit b86e3fcf authored by Chunchi Che's avatar Chunchi Che

Merge branch 'feat/confirm_deck_top' into 'main'

Feat/confirm deck top

See merge request !210
parents bf60d17a 6d5c9dc7
Pipeline #21852 passed with stages
in 14 minutes and 43 seconds
neos-protobuf @ e7729f2c
Subproject commit 0993b418f4ae7be10af05ca5360315656bfe2690
Subproject commit e7729f2ca07b8d4704806e37d05f896d5cefafdd
/**
* Generated by the protoc-gen-ts. DO NOT EDIT!
* compiler version: 3.21.5
* compiler version: 3.19.4
* source: idl/ocgcore.proto
* git: https://github.com/thesayyn/protoc-gen-ts */
import * as pb_1 from "google-protobuf";
......@@ -5567,7 +5567,7 @@ export namespace ygopro {
[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44,
39, 40, 41, 42, 43, 44, 45,
],
];
constructor(
......@@ -5619,6 +5619,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5665,6 +5666,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5711,6 +5713,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5757,6 +5760,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5803,6 +5807,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5849,6 +5854,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5895,6 +5901,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5941,6 +5948,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -5987,6 +5995,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6033,6 +6042,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6079,6 +6089,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6125,6 +6136,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6171,6 +6183,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6217,6 +6230,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6263,6 +6277,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6309,6 +6324,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6355,6 +6371,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6401,6 +6418,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6447,6 +6465,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6493,6 +6512,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6539,6 +6559,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6585,6 +6606,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6631,6 +6653,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6677,6 +6700,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6723,6 +6747,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6769,6 +6794,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6815,6 +6841,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6861,6 +6888,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6907,6 +6935,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6953,6 +6982,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -6999,6 +7029,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7045,6 +7076,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7091,6 +7123,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7137,6 +7170,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7183,6 +7217,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7229,6 +7264,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7275,6 +7311,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7321,6 +7358,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7367,6 +7405,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7413,6 +7452,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7459,6 +7499,7 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7505,6 +7546,7 @@ export namespace ygopro {
chain_end?: StocGameMessage.MsgChainEnd;
announce?: never;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7551,6 +7593,7 @@ export namespace ygopro {
chain_end?: never;
announce?: StocGameMessage.MsgAnnounce;
lp_update?: never;
confirm_desktop?: never;
}
| {
start?: never;
......@@ -7597,6 +7640,54 @@ export namespace ygopro {
chain_end?: never;
announce?: never;
lp_update?: StocGameMessage.MsgLpUpdate;
confirm_desktop?: never;
}
| {
start?: never;
draw?: never;
new_turn?: never;
new_phase?: never;
hint?: never;
select_idle_cmd?: never;
select_place?: never;
move?: never;
select_card?: never;
select_chain?: never;
select_effect_yn?: never;
select_position?: never;
select_option?: never;
shuffle_hand?: never;
select_battle_cmd?: never;
pos_change?: never;
select_unselect_card?: never;
select_yes_no?: never;
update_hp?: never;
win?: never;
wait?: never;
unimplemented?: never;
update_data?: never;
reload_field?: never;
select_sum?: never;
select_tribute?: never;
update_counter?: never;
select_counter?: never;
sort_card?: never;
set?: never;
swap?: never;
summoning?: never;
summoned?: never;
flip_summoning?: never;
flip_summoned?: never;
sp_summoning?: never;
sp_summoned?: never;
chaining?: never;
attack?: never;
attack_disable?: never;
chain_solved?: never;
chain_end?: never;
announce?: never;
lp_update?: never;
confirm_desktop?: StocGameMessage.MsgConfirmDeskTop;
}
))
) {
......@@ -7748,6 +7839,9 @@ export namespace ygopro {
if ("lp_update" in data && data.lp_update != undefined) {
this.lp_update = data.lp_update;
}
if ("confirm_desktop" in data && data.confirm_desktop != undefined) {
this.confirm_desktop = data.confirm_desktop;
}
}
}
get start() {
......@@ -8322,6 +8416,19 @@ export namespace ygopro {
get has_lp_update() {
return pb_1.Message.getField(this, 44) != null;
}
get confirm_desktop() {
return pb_1.Message.getWrapperField(
this,
StocGameMessage.MsgConfirmDeskTop,
45
) as StocGameMessage.MsgConfirmDeskTop;
}
set confirm_desktop(value: StocGameMessage.MsgConfirmDeskTop) {
pb_1.Message.setOneofWrapperField(this, 45, this.#one_of_decls[0], value);
}
get has_confirm_desktop() {
return pb_1.Message.getField(this, 45) != null;
}
get gameMsg() {
const cases: {
[index: number]:
......@@ -8369,7 +8476,8 @@ export namespace ygopro {
| "chain_solved"
| "chain_end"
| "announce"
| "lp_update";
| "lp_update"
| "confirm_desktop";
} = {
0: "none",
1: "start",
......@@ -8416,6 +8524,7 @@ export namespace ygopro {
42: "chain_end",
43: "announce",
44: "lp_update",
45: "confirm_desktop",
};
return cases[
pb_1.Message.computeOneofCase(
......@@ -8423,7 +8532,7 @@ export namespace ygopro {
[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44,
37, 38, 39, 40, 41, 42, 43, 44, 45,
]
)
];
......@@ -8543,6 +8652,9 @@ export namespace ygopro {
lp_update?: ReturnType<
typeof StocGameMessage.MsgLpUpdate.prototype.toObject
>;
confirm_desktop?: ReturnType<
typeof StocGameMessage.MsgConfirmDeskTop.prototype.toObject
>;
}): StocGameMessage {
const message = new StocGameMessage({});
if (data.start != null) {
......@@ -8745,6 +8857,11 @@ export namespace ygopro {
data.lp_update
);
}
if (data.confirm_desktop != null) {
message.confirm_desktop = StocGameMessage.MsgConfirmDeskTop.fromObject(
data.confirm_desktop
);
}
return message;
}
toObject() {
......@@ -8865,6 +8982,9 @@ export namespace ygopro {
lp_update?: ReturnType<
typeof StocGameMessage.MsgLpUpdate.prototype.toObject
>;
confirm_desktop?: ReturnType<
typeof StocGameMessage.MsgConfirmDeskTop.prototype.toObject
>;
} = {};
if (this.start != null) {
data.start = this.start.toObject();
......@@ -8998,6 +9118,9 @@ export namespace ygopro {
if (this.lp_update != null) {
data.lp_update = this.lp_update.toObject();
}
if (this.confirm_desktop != null) {
data.confirm_desktop = this.confirm_desktop.toObject();
}
return data;
}
serialize(): Uint8Array;
......@@ -9164,6 +9287,10 @@ export namespace ygopro {
writer.writeMessage(44, this.lp_update, () =>
this.lp_update.serialize(writer)
);
if (this.has_confirm_desktop)
writer.writeMessage(45, this.confirm_desktop, () =>
this.confirm_desktop.serialize(writer)
);
if (!w) return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StocGameMessage {
......@@ -9511,6 +9638,14 @@ export namespace ygopro {
StocGameMessage.MsgLpUpdate.deserialize(reader))
);
break;
case 45:
reader.readMessage(
message.confirm_desktop,
() =>
(message.confirm_desktop =
StocGameMessage.MsgConfirmDeskTop.deserialize(reader))
);
break;
default:
reader.skipField();
}
......@@ -18004,6 +18139,124 @@ export namespace ygopro {
return MsgLpUpdate.deserialize(bytes);
}
}
export class MsgConfirmDeskTop extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
data?:
| any[]
| {
player?: number;
cards?: CardInfo[];
}
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[2],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("player" in data && data.player != undefined) {
this.player = data.player;
}
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 cards() {
return pb_1.Message.getRepeatedWrapperField(
this,
CardInfo,
2
) as CardInfo[];
}
set cards(value: CardInfo[]) {
pb_1.Message.setRepeatedWrapperField(this, 2, value);
}
static fromObject(data: {
player?: number;
cards?: ReturnType<typeof CardInfo.prototype.toObject>[];
}): MsgConfirmDeskTop {
const message = new MsgConfirmDeskTop({});
if (data.player != null) {
message.player = data.player;
}
if (data.cards != null) {
message.cards = data.cards.map((item) => CardInfo.fromObject(item));
}
return message;
}
toObject() {
const data: {
player?: number;
cards?: ReturnType<typeof CardInfo.prototype.toObject>[];
} = {};
if (this.player != null) {
data.player = this.player;
}
if (this.cards != null) {
data.cards = this.cards.map((item: CardInfo) => 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.cards.length)
writer.writeRepeatedMessage(2, this.cards, (item: CardInfo) =>
item.serialize(writer)
);
if (!w) return writer.getResultBuffer();
}
static deserialize(
bytes: Uint8Array | pb_1.BinaryReader
): MsgConfirmDeskTop {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new MsgConfirmDeskTop();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
message.player = reader.readInt32();
break;
case 2:
reader.readMessage(message.cards, () =>
pb_1.Message.addToRepeatedWrapperField(
message,
2,
CardInfo.deserialize(reader),
CardInfo
)
);
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgConfirmDeskTop {
return MsgConfirmDeskTop.deserialize(bytes);
}
}
export class MsgReloadField extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
......
......@@ -132,5 +132,19 @@
{ "fieldName": "player", "fieldType": "uint8" },
{ "fieldName": "new_lp", "fieldType": "uint32" }
]
},
"30": {
"protoType": "confirm_desktop",
"fields": [
{
"fieldName": "player",
"fieldType": "uint8"
},
{
"fieldName": "cards",
"fieldType": "repeated",
"repeatedType": "CardInfo"
}
]
}
}
......@@ -33,6 +33,7 @@ const MsgConstructorMap: Map<string, Constructor> = new Map([
["chain_solved", ygopro.StocGameMessage.MsgChainSolved],
["chain_end", ygopro.StocGameMessage.MsgChainEnd],
["lp_update", ygopro.StocGameMessage.MsgLpUpdate],
["confirm_desktop", ygopro.StocGameMessage.MsgConfirmDeskTop],
]);
export interface penetrateType {
......
import { fetchCard, ygopro } from "@/api";
import { sleep } from "@/infra";
import { matStore } from "@/stores";
export default async (
confirmDeskTop: ygopro.StocGameMessage.MsgConfirmDeskTop
) => {
const cards = confirmDeskTop.cards;
for (const card of cards) {
const target = matStore
.in(card.location)
.of(card.controler)
.at(card.sequence);
if (target) {
// 设置`occupant`
const meta = await fetchCard(card.code);
target.occupant = meta;
// 设置`position`,否则会横放
target.location.position = ygopro.CardPosition.ATTACK;
// 聚焦1s
target.focus = true;
await sleep(1000);
target.focus = false;
await sleep(200);
} else {
console.warn(`card of ${card} is null`);
}
}
};
......@@ -7,6 +7,7 @@ import onMsgAttackDisable from "./attackDisable";
import onMsgChainEnd from "./chainEnd";
import onMsgChaining from "./chaining";
import onMsgChainSolved from "./chainSolved";
import onConfirmDeskTop from "./confirmDeskTop";
import onMsgDraw from "./draw";
import onMsgFilpSummoned from "./flipSummoned";
import onMsgFlipSummoning from "./flipSummoning";
......@@ -282,6 +283,11 @@ export default async function handleGameMsg(pb: ygopro.YgoStocMsg) {
break;
}
case "confirm_desktop": {
await onConfirmDeskTop(msg.confirm_desktop);
break;
}
case "unimplemented": {
onUnimplemented(msg.unimplemented);
......
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