Placed command lines in. And put in support to make a in-game connect

or disconnect for connect to SM Server.  (If it ever comes up)
This commit is contained in:
Charles Lohr
2004-04-30 04:34:39 +00:00
parent 7a44c365bc
commit fc5c3ad589
3 changed files with 120 additions and 16 deletions
+107 -14
View File
@@ -32,7 +32,7 @@
#include "GameState.h"
#define NEXT_SCREEN( play_mode ) THEME->GetMetric ("ScreenSelectMusic","NextScreen"+Capitalize(PlayModeToString(play_mode)))
#define NEXT_SCREEN THEME->GetMetric ("ScreenSelectMusic","NextScreen")
//Used for advancing to gameplay screen
NetworkSyncManager::NetworkSyncManager()
@@ -54,11 +54,20 @@ NetworkSyncManager::~NetworkSyncManager ()
delete NetPlayerClient;
}
void NetworkSyncManager::StartUp()
void NetworkSyncManager::CloseConnection()
{
CString ServerIP;
if (!useSMserver)
return ;
m_ServerVersion = 0;
useSMserver = false;
m_startupStatus = 0;
NetPlayerClient->close();
}
if( GetCommandlineArgument( "netip", &ServerIP ) )
void NetworkSyncManager::PostStartUp(CString ServerIP)
{
CloseConnection();
if( ServerIP!="LISTEN" )
{
if( !Connect(ServerIP.c_str(),8765) )
{
@@ -67,9 +76,7 @@ void NetworkSyncManager::StartUp()
return;
}
}
else if( GetCommandlineArgument( "listen" ) )
{
} else {
if( !Listen(8765) )
{
m_startupStatus = 2;
@@ -78,8 +85,6 @@ void NetworkSyncManager::StartUp()
}
}
else
return;
useSMserver = true;
@@ -118,6 +123,21 @@ void NetworkSyncManager::StartUp()
}
void NetworkSyncManager::StartUp()
{
CString ServerIP;
if( GetCommandlineArgument( "netip", &ServerIP ) )
{
PostStartUp(ServerIP);
}
else if( GetCommandlineArgument( "listen" ) )
{
PostStartUp("LISTEN");
}
}
bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
{
LOG->Info("Beginning to connect");
@@ -295,6 +315,65 @@ void NetworkSyncManager::SendSongs()
}
void ArgSetMode (CString cmdLineMode)
{
CString PlayerModeStr;
int loc=0;
int loc2=1;
while (loc2>=0) {
loc2=cmdLineMode.Find(",",loc);
if (loc2<0)
PlayerModeStr = cmdLineMode.substr(loc,loc2-loc);
else
PlayerModeStr = cmdLineMode.substr(loc,loc2-loc);
if (PlayerModeStr.CompareNoCase("1")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true;
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
} else if (PlayerModeStr.CompareNoCase("2")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
GAMESTATE->m_MasterPlayerNumber = PLAYER_2;
} else if (PlayerModeStr.CompareNoCase("VERSUS")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true;
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
} else if (PlayerModeStr.CompareNoCase("VERSUS")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true;
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
} else if (PlayerModeStr.CompareNoCase("DOUBLE")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_DOUBLE;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true;
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
} else if (PlayerModeStr.CompareNoCase("COUPLE")==0) {
GAMESTATE->m_CurStyle = STYLE_DANCE_COUPLE;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true;
GAMESTATE->m_bSideIsJoined[PLAYER_2] = true;
} else if (PlayerModeStr.CompareNoCase("FAILOFF")==0) {
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_OFF;
} else if (PlayerModeStr.CompareNoCase("FAILENDOFSONG")==0) {
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_END_OF_SONG;
} else if (PlayerModeStr.CompareNoCase("FAILARCADE")==0) {
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_ARCADE;
} else if (PlayerModeStr.CompareNoCase("ARCADE")==0) {
GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE;
} else if (PlayerModeStr.CompareNoCase("NONSTOP")==0) {
GAMESTATE->m_PlayMode = PLAY_MODE_NONSTOP;
} else if (PlayerModeStr.CompareNoCase("ONI")==0) {
GAMESTATE->m_PlayMode = PLAY_MODE_ONI;
} else if (PlayerModeStr.CompareNoCase("BATTLE")==0) {
GAMESTATE->m_PlayMode = PLAY_MODE_BATTLE;
} else if (PlayerModeStr.CompareNoCase("RAVE")==0) {
GAMESTATE->m_PlayMode = PLAY_MODE_RAVE;
}
loc = loc2+1;
}
}
//I am adding this for Network support
//Feel free to change the way --course is used
//I am not building any part of SMOnline specific to this yet.
@@ -306,13 +385,28 @@ void ArgStartCourse(CString CourseName)
if (desCourse == 0)
{
LOG->Info ("Desired Course not found!");
SCREENMAN->SystemMessage("Failed to find course");
return ;
}
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
//Need to add more functionality eventually
/*
--PLAYERS=
1 -> STYLE_DANCE_SINGLE, (Default)
2 -> STYLE_DANCE_SINGLE,
VERSUS -> STYLE_DANCE_VERSUS,
DOUBLE -> STYLE_DANCE_DOUBLE,
COUPLE -> STYLE_DANCE_COUPLE,
*/
if ((!GAMESTATE->m_bSideIsJoined[PLAYER_1]) && (!GAMESTATE->m_bSideIsJoined[PLAYER_2]))
{
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
GAMESTATE->m_bSideIsJoined[PLAYER_1] = true; //Default
//Also take Default Fail Type
}
GAMESTATE->m_pCurCourse = desCourse;
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
GAMESTATE->m_PlayMode = desCourse->GetPlayMode();
if (desCourse->IsOni())
@@ -325,7 +419,7 @@ void ArgStartCourse(CString CourseName)
GAMESTATE->PlayersFinalized();
//Go to Gameplay Screen
SCREENMAN->SetNewScreen( THEME->GetMetric ("ScreenSelectMusic","NextScreen") );
SCREENMAN->SetNewScreen(NEXT_SCREEN);
//Not sure if this is correct, it may make more sense
//to have a metric to allow/disallow user options at this point.
@@ -352,7 +446,6 @@ void NetworkSyncManager::DisplayStartupStatus()
sMessage = "Connection failed.";
break;
}
// SCREENMAN->RefreshCreditsMessages();
SCREENMAN->SystemMessage(sMessage);
}
+5
View File
@@ -17,6 +17,7 @@
void NSSendSongs();
void ArgStartCourse(CString CourseName);
void ArgSetMode (CString cmdLineMode);
class EzSockets;
@@ -33,11 +34,15 @@ public:
bool Connect(const CString& addy, unsigned short port); // Connect to SM Server
void SendSongs(); //Send song list to server (And exit)
void PostStartUp(CString ServerIP);
void CloseConnection();
void DisplayStartupStatus(); //Used to note user if connect attempt was sucessful or not.
int m_playerLife[NUM_PLAYERS]; //Life
private:
void StartUp();
int m_playerID; //these are currently unused, but need to stay
+8 -2
View File
@@ -919,11 +919,17 @@ static void ProcessArgsSecond()
//"ArgStartCourse", is in the NSManager
//bacause Networked StepMania will
//use it a lot.
if( GetCommandlineArgument( "course", & Argument ) )
ArgStartCourse(Argument);
if( GetCommandlineArgument( "mode",& Argument ) )
ArgSetMode(Argument);
if( GetCommandlineArgument( "netip" ) )
NSMAN->DisplayStartupStatus(); //If we're using networking show what happend
if( GetCommandlineArgument( "course", & Argument ) )
ArgStartCourse(Argument);
if( GetCommandlineArgument( "jumpscreen", & Argument ) )
SCREENMAN->SetNewScreen(Argument);
}
int main(int argc, char* argv[])