I added some support to make the client act as a pseudo-server.
I'm doing this so it might be possible to have SMOnline written entirelly in Flash.
This commit is contained in:
@@ -20,25 +20,50 @@ NetworkSyncManager::NetworkSyncManager(int argc, char **argv)
|
|||||||
NetPlayerClient = new EzSockets;
|
NetPlayerClient = new EzSockets;
|
||||||
m_ServerVersion = 0;
|
m_ServerVersion = 0;
|
||||||
|
|
||||||
if (argc > 2)
|
CString tempargv(argv[1]);
|
||||||
if (Connect(argv[1],8765) == true)
|
|
||||||
{
|
|
||||||
useSMserver = true;
|
|
||||||
int ClientCommand=3;
|
|
||||||
NetPlayerClient->send((char*) &ClientCommand, 4);
|
|
||||||
NetPlayerClient->send(0);//Send 0 for flash client
|
|
||||||
|
|
||||||
NetPlayerClient->receive(m_ServerVersion);
|
if (argc > 2) {
|
||||||
//If network play is desired
|
LOG->Info("Multiple arguements were entered.");
|
||||||
//AND the connection works
|
|
||||||
//Halt until we know what server
|
if (!tempargv.CompareNoCase("LISTEN"))
|
||||||
//version we're dealing with
|
if (Listen(8765)) {
|
||||||
if (((m_ServerVersion / 512) % 2) == 1)
|
useSMserver = true;
|
||||||
appendWithZero = true;
|
int ClientCommand=3;
|
||||||
else
|
NetPlayerClient->send((char*) &ClientCommand, 4);
|
||||||
appendWithZero = false;
|
NetPlayerClient->send(0);//Send 0 for flash client
|
||||||
} else
|
|
||||||
useSMserver = false;
|
NetPlayerClient->receive(m_ServerVersion);
|
||||||
|
//If network play is desired
|
||||||
|
//AND the connection works
|
||||||
|
//Halt until we know what server
|
||||||
|
//version we're dealing with
|
||||||
|
if (((m_ServerVersion / 512) % 2) == 1)
|
||||||
|
appendWithZero = true;
|
||||||
|
else
|
||||||
|
appendWithZero = false;
|
||||||
|
} else
|
||||||
|
useSMserver = false;
|
||||||
|
else
|
||||||
|
if (Connect(argv[1],8765) == true)
|
||||||
|
{
|
||||||
|
useSMserver = true;
|
||||||
|
int ClientCommand=3;
|
||||||
|
NetPlayerClient->send((char*) &ClientCommand, 4);
|
||||||
|
NetPlayerClient->send(0);//Send 0 for flash client
|
||||||
|
|
||||||
|
NetPlayerClient->receive(m_ServerVersion);
|
||||||
|
//If network play is desired
|
||||||
|
//AND the connection works
|
||||||
|
//Halt until we know what server
|
||||||
|
//version we're dealing with
|
||||||
|
if (((m_ServerVersion / 512) % 2) == 1)
|
||||||
|
appendWithZero = true;
|
||||||
|
else
|
||||||
|
appendWithZero = false;
|
||||||
|
} else
|
||||||
|
useSMserver = false;
|
||||||
|
|
||||||
|
}
|
||||||
else
|
else
|
||||||
useSMserver = false;
|
useSMserver = false;
|
||||||
}
|
}
|
||||||
@@ -53,6 +78,7 @@ NetworkSyncManager::~NetworkSyncManager ()
|
|||||||
|
|
||||||
bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
|
bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
|
||||||
{
|
{
|
||||||
|
LOG->Info("Beginning to connect");
|
||||||
if (port!=8765)
|
if (port!=8765)
|
||||||
return false;
|
return false;
|
||||||
//Make sure using port 8765
|
//Make sure using port 8765
|
||||||
@@ -72,6 +98,41 @@ bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
|
|||||||
return useSMserver;
|
return useSMserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Listen (Wait for connection in-bound)
|
||||||
|
//NOTE: Right now, StepMania cannot connect back to StepMania!
|
||||||
|
|
||||||
|
bool NetworkSyncManager::Listen(unsigned short port)
|
||||||
|
{
|
||||||
|
LOG->Info("Beginning to Listen");
|
||||||
|
if (port!=8765)
|
||||||
|
return false;
|
||||||
|
//Make sure using port 8765
|
||||||
|
//This may change in future versions
|
||||||
|
//It is this way now for protocol's purpose.
|
||||||
|
//If there is a new protocol developed down the road
|
||||||
|
|
||||||
|
|
||||||
|
EzSockets * EZListener = new EzSockets;
|
||||||
|
|
||||||
|
EZListener->create();
|
||||||
|
NetPlayerClient->create(); // Initilize Socket
|
||||||
|
|
||||||
|
EZListener->bind(8765);
|
||||||
|
|
||||||
|
useSMserver = EZListener->listen();
|
||||||
|
useSMserver = EZListener->accept( *NetPlayerClient); //Wait for someone to connect
|
||||||
|
|
||||||
|
EZListener->close(); //Kill Listener
|
||||||
|
delete EZListener;
|
||||||
|
|
||||||
|
LOG->Info("Accept Responce:",useSMserver);
|
||||||
|
useSMserver=true;
|
||||||
|
return useSMserver;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void NetworkSyncManager::ReportScore(int playerID, int step, int score, int combo)
|
void NetworkSyncManager::ReportScore(int playerID, int step, int score, int combo)
|
||||||
{
|
{
|
||||||
if (!useSMserver) //Make sure that we are using the network
|
if (!useSMserver) //Make sure that we are using the network
|
||||||
@@ -120,7 +181,7 @@ void NetworkSyncManager::StartRequest()
|
|||||||
|
|
||||||
vector <char> tmp; //Temporary vector used by receive function when waiting
|
vector <char> tmp; //Temporary vector used by receive function when waiting
|
||||||
|
|
||||||
LOG->Trace("Requesting Start from Server.");
|
LOG->Info("Requesting Start from Server.");
|
||||||
|
|
||||||
netHolder SendNetPack;
|
netHolder SendNetPack;
|
||||||
|
|
||||||
@@ -132,12 +193,12 @@ void NetworkSyncManager::StartRequest()
|
|||||||
|
|
||||||
NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
|
NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
|
||||||
|
|
||||||
LOG->Trace("Waiting for RECV");
|
LOG->Info("Waiting for RECV");
|
||||||
|
|
||||||
//Block until go is recieved.
|
//Block until go is recieved.
|
||||||
NetPlayerClient->receive(tmp);
|
NetPlayerClient->receive(tmp);
|
||||||
|
|
||||||
LOG->Trace("Starting Game.");
|
LOG->Info("Starting Game.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Global and accessable from anywhere
|
//Global and accessable from anywhere
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ private:
|
|||||||
EzSockets *NetPlayerClient;
|
EzSockets *NetPlayerClient;
|
||||||
|
|
||||||
int m_ServerVersion; //ServerVersion
|
int m_ServerVersion; //ServerVersion
|
||||||
|
|
||||||
|
bool Listen(unsigned short port);
|
||||||
|
|
||||||
|
|
||||||
struct netHolder //Data structure used for sending data to server
|
struct netHolder //Data structure used for sending data to server
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user