void ServerEvents::OnUserQuit( const wxString& nick ) { wxLogDebugFunc( _T("") ); try { User &user=m_serv.GetUser( nick ); Battle* 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, nick ) ) actNotifBox( SL_MAIN_ICON, nick + _(" just went offline") ); } catch (std::runtime_error &except) { } }
void SimpleServerEvents::OnUserQuit( const wxString& nick ) { wxLogDebugFunc( _T("") ); try { User &user=m_serv.GetUser( nick ); Battle* 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 ); } catch (std::runtime_error &except) { } }
bool Spring::Run( Battle& battle ) { wxString path = sett().GetCurrentUsedDataDir() + wxFileName::GetPathSeparator() + _T("script.txt"); try { if ( !wxFile::Access( path , wxFile::write ) ) { wxLogError( _T("Access denied to script.txt.") ); } wxFile f( path, wxFile::write ); battle.DisableHostStatusInProxyMode( true ); f.Write( WriteScriptTxt(battle) ); battle.DisableHostStatusInProxyMode( false ); f.Close(); } catch ( std::exception& e ) { wxLogError( wxString::Format( _T("Couldn't write script.txt, exception caught:\n %s"), TowxString( e.what() ).c_str() ) ); return false; } catch (...) { wxLogError( _T("Couldn't write script.txt") ); return false; } #if 0 //TODO: BD, isn't this SUPER obsolete wxString CommandForAutomaticTeamSpeak = _T("SCRIPT|") + battle.GetFounder().GetNick() + _T("|"); for ( UserList::user_map_t::size_type i = 0; i < battle.GetNumUsers(); i++ ) { CommandForAutomaticTeamSpeak << TowxString<unsigned int>( battle.GetUser(i).BattleStatus().ally) << _T("|") << battle.GetUser(i).GetNick() << _T("|"); } // torrent().SendMessageToCoordinator(CommandForAutomaticTeamSpeak); //this is gone too now, right? #endif wxString cmd; if ( battle.GetAutoHost().GetEnabled() ) { // -m, --minimise Start minimised // -q [T], --quit=[T] Quit immediately on game over or after T seconds cmd = _T("--minimise"); } cmd += _T(" \"") + path + _T("\""); return LaunchSpring( cmd ); }