void ServerEvents::OnUserQuit(const std::string& nick) { slLogDebugFunc(""); try { User& user = m_serv.GetUser(nick); IBattle* userbattle = user.GetBattle(); if (userbattle) { int battleid = userbattle->GetID(); try { if (&userbattle->GetFounder() == &user) { for (int i = 0; i < int(userbattle->GetNumUsers()); i++) { User& battleuser = userbattle->GetUser(i); OnUserLeftBattle(battleid, battleuser.GetNick()); } OnBattleClosed(battleid); } else OnUserLeftBattle(battleid, user.GetNick()); } catch (...) { } } ui().OnUserOffline(user); m_serv._RemoveUser(nick); if (useractions().DoActionOnUser(UserActions::ActNotifLogin, TowxString(nick))) actNotifBox(SL_MAIN_ICON, TowxString(nick) + _(" just went offline")); } catch (std::runtime_error& except) { } }
void ServerEvents::OnForceJoinBattle(int battleid, const std::string& scriptPW) { IBattle* battle = m_serv.GetCurrentBattle(); if (battle != NULL) { m_serv.LeaveBattle(battle->GetID()); } m_serv.JoinBattle(battleid, scriptPW); UiEvents::GetStatusEventSender(UiEvents::addStatusMessage).SendEvent( UiEvents::StatusData(_("Automatically moved to new battle"), 1)); }
void BattleListTab::DoJoin(IBattle& battle) { wxString password = wxEmptyString; IBattle* curbattle = ui().mw().GetJoinTab().GetCurrentBattle(); if (curbattle != 0 && curbattle->GetID() == battle.GetID()) { ui().mw().ShowTab(MainWindow::PAGE_JOIN); return; } if (curbattle != 0) { if (ui().Ask(_("Already in another battle"), _("You are already in a battle.\n\nDo you want to leave your current battle and join this one?"))) { curbattle->Leave(); ui().mw().GetJoinTab().LeaveCurrentBattle(); } else { return; } } if (battle.IsPassworded()) { wxPasswordEntryDialog pw(this, _("Battle password"), _("Enter password (spaces will be stripped)")); pw.SetFocus(); if (pw.ShowModal() != wxID_OK) { return; } password = pw.GetValue(); password.Replace(_T(" "), wxEmptyString); } if (!ui().DownloadArchives(battle)) { return; } battle.Join(STD_STRING(password)); }