NetworkSyncManager::NetworkSyncManager( LoadingWindow *ld ) { LANserver = NULL; //So we know if it has been created yet if( GetCommandlineArgument( "runserver" )) { ld->SetText("Initilizing server..."); LANserver = new StepManiaLanServer; isLanServer = true; GetCommandlineArgument( "runserver", &LANserver->servername ); } else isLanServer = false; ld->SetText("Initilizing Client Network..."); NetPlayerClient = new EzSockets; NetPlayerClient->blocking = false; m_ServerVersion = 0; useSMserver = false; m_startupStatus = 0; //By default, connection not tried. m_ActivePlayers = 0; StartUp(); }
static void ProcessArgsSecond() { CString Argument; if( GetCommandlineArgument( "test2" ) ) LOG->Info ("Test2"); if( GetCommandlineArgument( "netip" ) ) NSMAN->DisplayStartupStatus(); //If we're using networking show what happend }
void NetworkSyncManager::StartUp() { CString ServerIP; if( isLanServer ) if (!LANserver->ServerStart()) { //If the server happens to not start when told, //Print to log and release the memory where the //server was held. isLanServer = false; LOG->Warn("Server failed to start."); delete LANserver; } if( GetCommandlineArgument( "netip", &ServerIP ) ) PostStartUp(ServerIP); else if( GetCommandlineArgument( "listen" ) ) PostStartUp("LISTEN"); }
//Process args first, put command line options that //have to run before the SM window loads here static void ProcessArgsFirst() { CString Argument; if( GetCommandlineArgument( "test", &Argument ) ) LOG->Info ("Test: \"%s\"", Argument.c_str() ); }
void ThemeManager::LoadThemeMetrics( const RString &sThemeName_, const RString &sLanguage_ ) { if( g_pLoadedThemeData == NULL ) g_pLoadedThemeData = new LoadedThemeData; // Don't delete and recreate LoadedThemeData. There are references iniMetrics and iniStrings // on the stack, so Clear them instead. g_pLoadedThemeData->ClearAll(); g_vThemes.clear(); RString sThemeName(sThemeName_); RString sLanguage(sLanguage_); m_sCurThemeName = sThemeName; m_sCurLanguage = sLanguage; bool bLoadedBase = false; while(1) { ASSERT_M( g_vThemes.size() < 20, "Circular theme fallback references detected." ); g_vThemes.push_back( Theme() ); Theme &t = g_vThemes.back(); t.sThemeName = sThemeName; IniFile iniMetrics; IniFile iniStrings; iniMetrics.ReadFile( GetMetricsIniPath(sThemeName) ); // Load optional language inis (probably mounted by a package) first so that they can be overridden by the current theme. { vector<RString> vs; GetOptionalLanguageIniPaths(vs,sThemeName,sLanguage); FOREACH_CONST(RString,vs,s) iniStrings.ReadFile( *s ); } iniStrings.ReadFile( GetLanguageIniPath(sThemeName,SpecialFiles::BASE_LANGUAGE) ); if( sLanguage.CompareNoCase(SpecialFiles::BASE_LANGUAGE) ) iniStrings.ReadFile( GetLanguageIniPath(sThemeName,sLanguage) ); bool bIsBaseTheme = !sThemeName.CompareNoCase(SpecialFiles::BASE_THEME_NAME); iniMetrics.GetValue( "Global", "IsBaseTheme", bIsBaseTheme ); if( bIsBaseTheme ) bLoadedBase = true; /* Read the fallback theme. If no fallback theme is specified, and we haven't * already loaded it, fall back on SpecialFiles::BASE_THEME_NAME. * That way, default theme fallbacks can be disabled with * "FallbackTheme=". */ RString sFallback; if( !iniMetrics.GetValue("Global","FallbackTheme",sFallback) ) { if( sThemeName.CompareNoCase( SpecialFiles::BASE_THEME_NAME ) && !bLoadedBase ) sFallback = SpecialFiles::BASE_THEME_NAME; } /* We actually want to load themes bottom-to-top, loading fallback themes * first, so derived themes overwrite metrics in fallback themes. But, we * need to load the derived theme first, to find out the name of the fallback * theme. Avoid having to load IniFile twice, merging the fallback theme * into the derived theme that we've already loaded. */ XmlFileUtil::MergeIniUnder( &iniMetrics, &g_pLoadedThemeData->iniMetrics ); XmlFileUtil::MergeIniUnder( &iniStrings, &g_pLoadedThemeData->iniStrings ); if( sFallback.empty() ) break; sThemeName = sFallback; } // Overlay metrics from the command line. RString sMetric; for( int i = 0; GetCommandlineArgument( "metric", &sMetric, i ); ++i ) { /* sMetric must be "foo::bar=baz". "foo" and "bar" never contain "=", so * in "foo::bar=1+1=2", "baz" is always "1+1=2". Neither foo nor bar may * be empty, but baz may be. */ Regex re( "^([^=]+)::([^=]+)=(.*)$" ); vector<RString> sBits; if( !re.Compare( sMetric, sBits ) ) RageException::Throw( "Invalid argument \"--metric=%s\".", sMetric.c_str() ); g_pLoadedThemeData->iniMetrics.SetValue( sBits[0], sBits[1], sBits[2] ); } LOG->MapLog( "theme", "Theme: %s", m_sCurThemeName.c_str() ); LOG->MapLog( "language", "Language: %s", m_sCurLanguage.c_str() ); }