From 16e5e7bb685e0892e2cb2be51a0254251b9281c6 Mon Sep 17 00:00:00 2001 From: Charles Lohr Date: Thu, 15 Apr 2004 15:31:59 +0000 Subject: [PATCH] I have added some command-line processing. Look at the bottom of StepMania.cpp for it. I have also moved the connect stuff out of the NetworkSyncManager constructor, so it doens't do ANYTHING unless it's in the command-line args. Also, now NSMAN works by the '--NETIP=' flag. --- stepmania/src/NetworkSyncManager.cpp | 73 ++++++++++++---------------- stepmania/src/NetworkSyncManager.h | 4 +- stepmania/src/StepMania.cpp | 72 ++++++++++++++++++++++++++- stepmania/src/StepMania.h | 5 ++ 4 files changed, 110 insertions(+), 44 deletions(-) diff --git a/stepmania/src/NetworkSyncManager.cpp b/stepmania/src/NetworkSyncManager.cpp index 044ce2c1e5..91eb110183 100644 --- a/stepmania/src/NetworkSyncManager.cpp +++ b/stepmania/src/NetworkSyncManager.cpp @@ -21,46 +21,42 @@ #include "RageUtil.h" //String compare functions for command line args -NetworkSyncManager::NetworkSyncManager(int argc, char **argv) +NetworkSyncManager::NetworkSyncManager() { NetPlayerClient = new EzSockets; m_ServerVersion = 0; + + useSMserver = false; - if (argc > 1) { - LOG->Trace("Multiple arguements were entered."); - int argCtr = 1; - while (argCtrTrace ("NetIP Found:%s",IPAddy.c_str()); + +} + +NetworkSyncManager::~NetworkSyncManager () +{ + //Close Connection to server nicely. + if (useSMserver) + NetPlayerClient->close(); + delete NetPlayerClient; +} + +void NetworkSyncManager::StartUp (CString ServerIP) +{ + LOG->Trace ("Network Sync IP:%s",ServerIP.c_str()); - if (!IPAddy.CompareNoCase("LISTEN")) - if (Listen(8765)) { - useSMserver = true; - } else - useSMserver = false; - else - if (Connect(IPAddy.c_str(),8765) == true) - { - useSMserver = true; - } else - useSMserver = false; - - break;//Once connected, break outta loop. - } - argCtr++; - } - } - else - useSMserver = false; - - + if (!ServerIP.CompareNoCase("LISTEN")) + if (Listen(8765)) { + useSMserver = true; + } else + useSMserver = false; + else + if (Connect(ServerIP.c_str(),8765) == true) + { + useSMserver = true; + } else + useSMserver = false; + if (useSMserver) { int ClientCommand=3; @@ -90,17 +86,10 @@ NetworkSyncManager::NetworkSyncManager(int argc, char **argv) NetPlayerClient->send((char*) &PlayerName,20); } LOG->Info("Server Version: %d",m_ServerVersion); - } - + } else + LOG->Info("Network Sync Manager failed to connect"); } -NetworkSyncManager::~NetworkSyncManager () -{ - //Close Connection to server nicely. - if (useSMserver) - NetPlayerClient->close(); - delete NetPlayerClient; -} bool NetworkSyncManager::Connect(const CString& addy, unsigned short port) { diff --git a/stepmania/src/NetworkSyncManager.h b/stepmania/src/NetworkSyncManager.h index 173dd65859..2cf73c4fa1 100644 --- a/stepmania/src/NetworkSyncManager.h +++ b/stepmania/src/NetworkSyncManager.h @@ -20,9 +20,11 @@ class EzSockets; class NetworkSyncManager { public: - NetworkSyncManager(int argc, char **argv); + NetworkSyncManager(); ~NetworkSyncManager(); + void StartUp (CString ServerIP); + //If "useSMserver" then send score to server void ReportScore(int playerID, int step, int score, int combo); void ReportSongOver(); //Report to server that song is over diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index ec60a29ee0..ed8b9545c7 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -989,7 +989,12 @@ int main(int argc, char* argv[]) MODELMAN = new ModelManager; delete loading_window; // destroy this before init'ing Display - NSMAN = new NetworkSyncManager(argc, argv); + NSMAN = new NetworkSyncManager; + //Load Network Sync manager, but do not connect + + ProcessArgsFirst(argc,argv); + + DISPLAY = CreateDisplay(); @@ -1036,6 +1041,9 @@ int main(int argc, char* argv[]) /* Initialize which courses are ranking courses here. */ SONGMAN->UpdateRankingCourses(); + /* Run the second argcheck, you can do your other options here */ + ProcessArgsSecond(argc, argv); + /* Run the main loop. */ GameLoop(); @@ -1474,3 +1482,65 @@ static void GameLoop() #endif } } + +//Process args first, put command line options that +//have to run before the SM window loads here +void ProcessArgsFirst(int argc, char ** argv) +{ + int argCtr = 1,i; //argv[0] is exe + while (argCtri) + ArgParameter = Arguement.substr(i+1,Arguement.GetLength()-i-1); + + //For now using an IF/ELSEIF clause + + if (ArgBase.CompareNoCase("--TESTARGS") == 0) + LOG->Info ("Test of arguements requested. Now in Second argcheck"); + + + argCtr++; + } +} \ No newline at end of file diff --git a/stepmania/src/StepMania.h b/stepmania/src/StepMania.h index 1f5028ab19..beecf49789 100644 --- a/stepmania/src/StepMania.h +++ b/stepmania/src/StepMania.h @@ -21,6 +21,11 @@ void ReadGamePrefsFromDisk( bool bSwitchToLastPlayedGame=true ); void SaveGamePrefsToDisk(); void ChangeCurrentGame( Game g ); +void ProcessArgsFirst(int argc, char ** argv); + //First wave of arguements, before display actually loads +void ProcessArgsSecond(int argc, char ** argv); + //Second wave of arguements, after display loads + // If successful, return filename of screenshot in sDir, else return "" CString SaveScreenshot( CString sDir, bool bSaveCompressed, bool bMakeSignature, int iIndex = -1 );