Commit 88febb6f authored by nanahira's avatar nanahira

change to include every message but filter for observe

parent eb43a5c8
Pipeline #43205 failed with stages
in 66 minutes and 33 seconds
......@@ -525,7 +525,7 @@ export class Reconnect {
this.isReconnectingPlayerOperating(newClient, room); // 重连玩家在操作
if (needResendRequest) {
// 重发 lastHintMsg(从 watchMessages 找)
// 重发 lastHintMsg(从 messages 找)
const lastHint = this.findLastHintForClient(newClient, room);
if (lastHint) {
await newClient.send(
......@@ -714,8 +714,8 @@ export class Reconnect {
client: Client,
room: Room,
): YGOProMsgHint | undefined {
const watchMessages = room.lastDuelRecord?.watchMessages;
if (!watchMessages) {
const messages = room.lastDuelRecord?.messages;
if (!messages) {
return undefined;
}
......@@ -723,8 +723,8 @@ export class Reconnect {
const clientIngamePos = room.getIngameDuelPosByDuelPos(client.pos);
// 从后往前找
for (let i = watchMessages.length - 1; i >= 0; i--) {
const msg = watchMessages[i];
for (let i = messages.length - 1; i >= 0; i--) {
const msg = messages[i];
// 只找 Hint 消息
if (!(msg instanceof YGOProMsgHint)) {
......
......@@ -19,7 +19,7 @@ export class DuelRecord {
date = new Date();
winPosition?: number;
responses: Buffer[] = [];
watchMessages: YGOProMsgBase[] = [];
messages: YGOProMsgBase[] = [];
private toReplayDeck(deck: YGOProDeck | null | undefined) {
if (!deck) {
......
......@@ -311,11 +311,19 @@ export class Room {
client.send(new YGOProStocWaitingSide());
} else if (this.duelStage === DuelStage.Dueling) {
// Dueling 阶段不发 DeckCount,直接发送观战消息
this.lastDuelRecord?.watchMessages.forEach((message) => {
client.send(
new YGOProStocGameMsg().fromPartial({ msg: message.observerView() }),
);
});
this.lastDuelRecord?.messages
.filter(
(msg) =>
!(msg instanceof YGOProMsgResponseBase) &&
msg.getSendTargets().includes(NetPlayerType.OBSERVER),
)
.forEach((message) => {
client.send(
new YGOProStocGameMsg().fromPartial({
msg: message.observerView(),
}),
);
});
}
}
......@@ -1549,9 +1557,7 @@ export class Room {
})
.middleware(YGOProMsgBase, async (message, next) => {
// record messages for replay
if (!(message instanceof YGOProMsgResponseBase)) {
this.lastDuelRecord.watchMessages.push(message);
}
this.lastDuelRecord.messages.push(message);
return next();
})
.middleware(YGOProMsgRetry, async (message, next) => {
......
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