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.
This commit is contained in:
Charles Lohr
2004-04-15 15:31:59 +00:00
parent 97e040279e
commit 16e5e7bb68
4 changed files with 110 additions and 44 deletions
+31 -42
View File
@@ -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 (argCtr<argc) {
CString tempargv(argv[argCtr]);
CString Checking(tempargv.substr(0,8));
Checking.MakeUpper();
if (strcmp(Checking.c_str(),"--NETIP:")==0)
{
CString IPAddy (tempargv.substr(8,tempargv.GetLength()-8));
LOG->Trace ("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)
{
+3 -1
View File
@@ -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
+71 -1
View File
@@ -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 (argCtr<argc)
{
CString Arguement(argv[argCtr]);
// StepMaina.exe argbase=argparameter
//Where argparameter can contain = signs
CString ArgBase;
CString ArgParameter;
for (i=0;i<Arguement.GetLength();i++)
if (Arguement.at(i) == '=')
break;
ArgBase = Arguement.substr(0,i);
if (Arguement.GetLength()>i)
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 First argcheck");
else if (ArgBase.CompareNoCase("--NETIP") == 0)
NSMAN->StartUp(ArgParameter.c_str());
argCtr++;
}
}
void ProcessArgsSecond(int argc, char ** argv)
{
int argCtr = 1,i; //argv[0] is exe
while (argCtr<argc)
{
CString Arguement(argv[argCtr]);
// StepMaina.exe argbase=argparameter
//Where argparameter can contain = signs
CString ArgBase;
CString ArgParameter;
for (i=0;i<Arguement.GetLength();i++)
if (Arguement.at(i) == '=')
break;
ArgBase = Arguement.substr(0,i);
if (Arguement.GetLength()>i)
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++;
}
}
+5
View File
@@ -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 );