Commit 736cdaf0 authored by Chunchi Che's avatar Chunchi Che

add MsgSelectPlaceAdapter

parent aecacf42
Pipeline #18834 passed with stages
in 2 minutes and 28 seconds
......@@ -32,3 +32,4 @@ export const MSG_NEW_TURN = 40;
export const MSG_NEW_PHASE = 41;
export const MSG_HINT = 2;
export const MSG_SELECT_IDLE_CMD = 11;
export const MSG_SELECT_PLACE = 18;
......@@ -12,6 +12,7 @@ import MsgNewTurnAdapter from "./newTurn";
import MsgNewPhaseAdapter from "./newPhase";
import MsgHintAdapter from "./hint";
import MsgSelectIdleCmdAdapter from "./selectIdleCmd";
import MsgSelectPlaceAdapter from "./selectPlace";
/*
* STOC GameMsg
......@@ -67,6 +68,11 @@ export default class GameMsgAdapter implements StocAdapter {
break;
}
case GAME_MSG.MSG_SELECT_PLACE: {
gameMsg.select_place = MsgSelectPlaceAdapter(gameData);
break;
}
default: {
console.log("Unhandled GameMessage function=", func);
......
......@@ -21,4 +21,79 @@ export default (data: Uint8Array) => {
if (count == 0) {
count = 1;
}
const msg = new MsgSelectPlace({
player,
count,
places: [],
});
for (let i = 0; i < 2; i++) {
const controler = i == 0 ? player : 1 - player;
const field = i == 0 ? _field & 0xffff : _field >> 16;
if ((field & 0x7f) != 0) {
// 怪兽区
const zone = ygopro.CardZone.MZONE;
const filter = field & 0x7f;
for (let sequence = 0; sequence < 7; sequence++) {
if ((filter & (1 << sequence)) != 0) {
msg.places.push(
new MsgSelectPlace.SelectAblePlace({
controler,
zone,
sequence: sequence,
})
);
}
}
}
if ((field & 0x1f00) != 0) {
// 魔法陷阱区
const zone = ygopro.CardZone.SZONE;
const filter = (field >> 8) & 0x1f;
for (let sequence = 0; sequence < 5; sequence++) {
if ((filter & (1 << sequence)) != 0) {
msg.places.push(
new MsgSelectPlace.SelectAblePlace({
controler,
zone,
sequence,
})
);
}
}
}
if ((field & 0xc000) != 0) {
// 灵摆区?
const zone = ygopro.CardZone.SZONE;
const filter = (field >> 14) & 0x3;
if ((filter & 0x1) != 0) {
msg.places.push(
new MsgSelectPlace.SelectAblePlace({
controler,
zone,
sequence: 6,
})
);
}
if ((filter & 0x2) != 0) {
msg.places.push(
new MsgSelectPlace.SelectAblePlace({
controler,
zone,
sequence: 7,
})
);
}
}
}
return msg;
};
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