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