More minor issue fixes
* Move Joining state change sooner in the code to prevent an issue where failing to connect multiple times in a row doesn't change the state (as it goes from CouldNotConnect -> CouldNotConnect which doesn't trigger a state changed callback) * Prevent double clicking too fast on a room in the lobby from causing issues * Lobby no longer closes when joining a room
This commit is contained in:
parent
62257e0d79
commit
d35693bbbc
5 changed files with 35 additions and 57 deletions
|
@ -406,6 +406,8 @@ void RoomMember::Join(const std::string& nick, const char* server_addr, u16 serv
|
|||
ASSERT_MSG(room_member_impl->client != nullptr, "Could not create client");
|
||||
}
|
||||
|
||||
room_member_impl->SetState(State::Joining);
|
||||
|
||||
ENetAddress address{};
|
||||
enet_address_set_host(&address, server_addr);
|
||||
address.port = server_port;
|
||||
|
@ -421,7 +423,6 @@ void RoomMember::Join(const std::string& nick, const char* server_addr, u16 serv
|
|||
int net = enet_host_service(room_member_impl->client, &event, ConnectionTimeoutMs);
|
||||
if (net > 0 && event.type == ENET_EVENT_TYPE_CONNECT) {
|
||||
room_member_impl->nickname = nick;
|
||||
room_member_impl->SetState(State::Joining);
|
||||
room_member_impl->StartLoop();
|
||||
room_member_impl->SendJoinRequest(nick, preferred_mac, password);
|
||||
SendGameInfo(room_member_impl->current_game_info);
|
||||
|
|
|
@ -187,4 +187,30 @@ private:
|
|||
std::unique_ptr<RoomMemberImpl> room_member_impl;
|
||||
};
|
||||
|
||||
static const char* GetStateStr(const RoomMember::State& s) {
|
||||
switch (s) {
|
||||
case RoomMember::State::Idle:
|
||||
return "Idle";
|
||||
case RoomMember::State::Error:
|
||||
return "Error";
|
||||
case RoomMember::State::Joining:
|
||||
return "Joining";
|
||||
case RoomMember::State::Joined:
|
||||
return "Joined";
|
||||
case RoomMember::State::LostConnection:
|
||||
return "LostConnection";
|
||||
case RoomMember::State::NameCollision:
|
||||
return "NameCollision";
|
||||
case RoomMember::State::MacCollision:
|
||||
return "MacCollision";
|
||||
case RoomMember::State::WrongVersion:
|
||||
return "WrongVersion";
|
||||
case RoomMember::State::WrongPassword:
|
||||
return "WrongPassword";
|
||||
case RoomMember::State::CouldNotConnect:
|
||||
return "CouldNotConnect";
|
||||
}
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
} // namespace Network
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue