Commit 3bfe5d4e authored by Chunchi Che's avatar Chunchi Che

Merge branch 'feat/tribute' into 'main'

Feat/tribute

See merge request !144
parents fb466b56 9e794fb0
Pipeline #20772 passed with stages
in 14 minutes and 15 seconds
Subproject commit 3383e74b3f523574a91d4d41fa3a7a3602728cda
Subproject commit 9711eef553da455be0d01238dae7f026d8d5650e
......@@ -8618,6 +8618,7 @@ export namespace ygopro {
code?: number;
location?: CardLocation;
response?: number;
release_param?: number;
}
) {
super();
......@@ -8639,6 +8640,9 @@ export namespace ygopro {
if ("response" in data && data.response != undefined) {
this.response = data.response;
}
if ("release_param" in data && data.release_param != undefined) {
this.release_param = data.release_param;
}
}
}
get code() {
......@@ -8666,10 +8670,17 @@ export namespace ygopro {
set response(value: number) {
pb_1.Message.setField(this, 3, value);
}
get release_param() {
return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
}
set release_param(value: number) {
pb_1.Message.setField(this, 4, value);
}
static fromObject(data: {
code?: number;
location?: ReturnType<typeof CardLocation.prototype.toObject>;
response?: number;
release_param?: number;
}): SelectAbleCard {
const message = new SelectAbleCard({});
if (data.code != null) {
......@@ -8681,6 +8692,9 @@ export namespace ygopro {
if (data.response != null) {
message.response = data.response;
}
if (data.release_param != null) {
message.release_param = data.release_param;
}
return message;
}
toObject() {
......@@ -8688,6 +8702,7 @@ export namespace ygopro {
code?: number;
location?: ReturnType<typeof CardLocation.prototype.toObject>;
response?: number;
release_param?: number;
} = {};
if (this.code != null) {
data.code = this.code;
......@@ -8698,6 +8713,9 @@ export namespace ygopro {
if (this.response != null) {
data.response = this.response;
}
if (this.release_param != null) {
data.release_param = this.release_param;
}
return data;
}
serialize(): Uint8Array;
......@@ -8710,6 +8728,7 @@ export namespace ygopro {
this.location.serialize(writer)
);
if (this.response != 0) writer.writeInt32(3, this.response);
if (this.release_param != 0) writer.writeInt32(4, this.release_param);
if (!w) return writer.getResultBuffer();
}
static deserialize(
......@@ -8735,6 +8754,9 @@ export namespace ygopro {
case 3:
message.response = reader.readInt32();
break;
case 4:
message.release_param = reader.readInt32();
break;
default:
reader.skipField();
}
......
......@@ -37,6 +37,7 @@ export const MSG_SELECT_IDLE_CMD = 11;
export const MSG_SELECT_PLACE = 18;
export const MSG_MOVE = 50;
export const MSG_SELECT_CARD = 15;
export const MSG_SELECT_TRIBUTE = 20;
export const MSG_SELECT_CHAIN = 16;
export const MSG_SELECT_EFFECTYN = 12;
export const MSG_SELECT_POSITION = 19;
......
......@@ -14,6 +14,7 @@ import MsgHintAdapter from "./hint";
import MsgSelectIdleCmdAdapter from "./selectIdleCmd";
import MsgSelectPlaceAdapter from "./selectPlace";
import MsgSelectCardAdapter from "./selectCard";
import MsgSelectTributeAdapter from "./selectTribute";
import MsgSelectChainAdapter from "./selectChain";
import MsgSelectEffectYnAdapter from "./selectEffectYn";
import MsgSelectPositionAdapter from "./selectPosition";
......@@ -90,6 +91,11 @@ export default class GameMsgAdapter implements StocAdapter {
break;
}
case GAME_MSG.MSG_SELECT_TRIBUTE: {
gameMsg.select_card = MsgSelectTributeAdapter(gameData);
break;
}
case GAME_MSG.MSG_SELECT_CHAIN: {
gameMsg.select_chain = MsgSelectChainAdapter(gameData);
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReaderExt } from "../../bufferIO";
import MsgSelectCard = ygopro.StocGameMessage.MsgSelectCard;
/*
* Msg Select Tribute
*
* @param - see: https://code.mycard.moe/mycard/neos-protobuf/-/blob/main/idl/ocgcore.neos-protobuf
* @usage - 玩家可选择的祭品
* */
export default (data: Uint8Array) => {
const reader = new BufferReaderExt(data);
const player = reader.inner.readUint8();
const cancelable = reader.inner.readUint8() != 0;
const min = reader.inner.readUint8();
const max = reader.inner.readUint8();
const count = reader.inner.readUint8();
const msg = new MsgSelectCard({ player, cancelable, min, max });
for (let i = 0; i < count; i++) {
const code = reader.inner.readUint32();
const controler = reader.inner.readUint8();
const location = reader.inner.readUint8();
const sequence = reader.inner.readUint8();
const release_param = reader.inner.readUint8();
msg.cards.push(
new MsgSelectCard.SelectAbleCard({
code,
location: new ygopro.CardLocation({
controler,
location,
sequence,
}),
response: i,
release_param,
})
);
}
return msg;
};
......@@ -16,6 +16,8 @@ export default (selectCard: MsgSelectCard, dispatch: AppDispatch) => {
const max = selectCard.max;
const cards = selectCard.cards;
// TODO: handle release_param
dispatch(setCheckCardModalMinMax({ min, max }));
dispatch(setCheckCardModalOnSubmit("sendSelectCardResponse"));
......
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