修复当玩家在房间WaitForReady状态下触发断线重连后点击准备按钮时客户端panic#33
Open
lRENyaaa wants to merge 1 commit intoTeamFlos:mainfrom
Open
修复当玩家在房间WaitForReady状态下触发断线重连后点击准备按钮时客户端panic#33lRENyaaa wants to merge 1 commit intoTeamFlos:mainfrom
lRENyaaa wants to merge 1 commit intoTeamFlos:mainfrom
Conversation
…anic when clicking the Ready button If a client reconnects while not in the SelectChart state, the server sends only the current state without chart info (which is only sent in SelectChart). As a result, the client lacks the necessary chart info, causing a panic when the Ready button is clicked during the WaitingForReady phase. To maintain protocol compatibility, a hacky workaround is applied: upon reconnection, the server first sends room info with the state temporarily set to SelectChart, followed by a state switch to the correct state. This ensures the client receives the required chart info and avoids crashes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
当客户端在房间状态SelectChart之外触发重连时,由于谱面信息只会跟随SelectChart发送,导致服务器返回的房间信息里没有谱面信息,致使玩家在WaitForReady阶段重连后点击准备按钮时客户端会panic
为确保兼容性,做了一个非常hacky的修改:在重连时发送的房间信息将永远为SelectChart状态,随即发送ChangeState Command以切换到其他状态,这在客户端理应是几乎无感的,且只影响重连