Move almost all state change tracking to MultiplayerState
Each window can still watch for state changes to update the ui or to close the window as appropriate, but for any error announcements, they all belong in Multiplayer state now.
This commit is contained in:
parent
a5c8e07f46
commit
1f6791431d
7 changed files with 55 additions and 88 deletions
|
@ -67,17 +67,59 @@ void MultiplayerState::Close() {
|
|||
|
||||
void MultiplayerState::OnNetworkStateChanged(const Network::RoomMember::State& state) {
|
||||
NGLOG_DEBUG(Frontend, "Network state change");
|
||||
if (state == Network::RoomMember::State::Joined) {
|
||||
bool is_connected = false;
|
||||
switch (state) {
|
||||
case Network::RoomMember::State::Idle:
|
||||
NGLOG_DEBUG(Network, "State: Idle");
|
||||
break;
|
||||
case Network::RoomMember::State::Joining:
|
||||
NGLOG_DEBUG(Network, "State: Joining");
|
||||
break;
|
||||
case Network::RoomMember::State::LostConnection:
|
||||
NetworkMessage::ShowError(NetworkMessage::LOST_CONNECTION);
|
||||
NGLOG_DEBUG(Network, "State: LostConnection");
|
||||
break;
|
||||
case Network::RoomMember::State::CouldNotConnect:
|
||||
NetworkMessage::ShowError(NetworkMessage::UNABLE_TO_CONNECT);
|
||||
NGLOG_DEBUG(Network, "State: CouldNotConnect");
|
||||
break;
|
||||
case Network::RoomMember::State::NameCollision:
|
||||
NetworkMessage::ShowError(NetworkMessage::USERNAME_IN_USE);
|
||||
NGLOG_DEBUG(Network, "State: NameCollision");
|
||||
break;
|
||||
case Network::RoomMember::State::MacCollision:
|
||||
NetworkMessage::ShowError(NetworkMessage::MAC_COLLISION);
|
||||
NGLOG_DEBUG(Network, "State: MacCollision");
|
||||
break;
|
||||
case Network::RoomMember::State::WrongPassword:
|
||||
NetworkMessage::ShowError(NetworkMessage::WRONG_PASSWORD);
|
||||
NGLOG_DEBUG(Network, "State: WrongPassword");
|
||||
break;
|
||||
case Network::RoomMember::State::WrongVersion:
|
||||
NetworkMessage::ShowError(NetworkMessage::WRONG_VERSION);
|
||||
NGLOG_DEBUG(Network, "State: WrongVersion");
|
||||
break;
|
||||
case Network::RoomMember::State::Error:
|
||||
NetworkMessage::ShowError(NetworkMessage::UNABLE_TO_CONNECT);
|
||||
NGLOG_DEBUG(Network, "State: GenericError");
|
||||
break;
|
||||
case Network::RoomMember::State::Joined:
|
||||
NGLOG_DEBUG(Network, "State: Joined");
|
||||
is_connected = true;
|
||||
OnOpenNetworkRoom();
|
||||
break;
|
||||
}
|
||||
if (is_connected) {
|
||||
status_icon->setPixmap(QIcon::fromTheme("connected").pixmap(16));
|
||||
status_text->setText(tr("Connected"));
|
||||
leave_room->setEnabled(true);
|
||||
show_room->setEnabled(true);
|
||||
return;
|
||||
} else {
|
||||
status_icon->setPixmap(QIcon::fromTheme("disconnected").pixmap(16));
|
||||
status_text->setText(tr("Not Connected"));
|
||||
leave_room->setEnabled(false);
|
||||
show_room->setEnabled(false);
|
||||
}
|
||||
status_icon->setPixmap(QIcon::fromTheme("disconnected").pixmap(16));
|
||||
status_text->setText(tr("Not Connected"));
|
||||
leave_room->setEnabled(false);
|
||||
show_room->setEnabled(false);
|
||||
}
|
||||
|
||||
void MultiplayerState::OnAnnounceFailed(const Common::WebResult& result) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue