Files
itgmania212121/stepmania/src/NetworkSyncManager.cpp
T

116 lines
2.9 KiB
C++
Raw Normal View History

/*
-----------------------------------------------------------------------------
Class: Network Sync Manager
Desc: See Header.
Copyright (c) 2003-2004 by the person(s) listed below. All rights reserved.
Charles Lohr
Joshua Allen
-----------------------------------------------------------------------------
*/
#include "global.h"
#include "NetworkSyncManager.h"
#include "ezsockets.h"
#include "RageLog.h"
2004-03-17 06:05:52 +00:00
NetworkSyncManager::NetworkSyncManager(int argc, char **argv)
{
2004-03-17 06:05:52 +00:00
NetPlayerClient = new EzSockets;
if (argc > 1)
Connect(argv[1],8765);
else
useSMserver = false;
}
NetworkSyncManager::~NetworkSyncManager ()
{
//Close Connection to server nicely.
2004-03-17 06:05:52 +00:00
if (useSMserver)
NetPlayerClient->close();
delete NetPlayerClient;
}
2004-03-17 13:31:42 +00:00
bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
{
if (port!=8765)
2004-03-17 13:31:42 +00:00
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
//Since under non-lan conditions, the client
//will be connecting to localhost, this port does not matter.
2004-03-17 13:31:42 +00:00
/* What do you mean it doesn't matter if you are connecting to localhost?
* Also, when does it ever connect to localhost?
* -- Steve
*/
NetPlayerClient->create(); // Initilize Socket
2004-03-17 13:31:42 +00:00
useSMserver = NetPlayerClient->connect(addy, port);
return useSMserver;
}
2004-03-17 06:05:52 +00:00
void NetworkSyncManager::ReportScore(int playerID, int step, int score, int combo)
{
2004-03-17 13:31:42 +00:00
if (!useSMserver) //Make sure that we are using the network
2004-03-17 06:05:52 +00:00
return;
netHolder SendNetPack; //Create packet to send to server
SendNetPack.m_playerID = playerID;
SendNetPack.m_combo=combo;
SendNetPack.m_score=score; //Load packet with aproperate info
SendNetPack.m_step=step-1;
2004-03-17 06:05:52 +00:00
//Send packet to server
NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
}
2004-03-17 06:05:52 +00:00
void NetworkSyncManager::ReportSongOver()
{
2004-03-17 13:31:42 +00:00
if (!useSMserver) //Make sure that we are using the network
return ;
netHolder SendNetPack; //Create packet to send to server
SendNetPack.m_playerID = 21;
SendNetPack.m_combo=0;
SendNetPack.m_score=0; //Use PID 21 (Song over Packet)
SendNetPack.m_step=0;
2004-03-17 06:05:52 +00:00
NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
return;
}
2004-03-17 06:05:52 +00:00
void NetworkSyncManager::StartRequest()
{
2004-03-17 13:31:42 +00:00
if (!useSMserver)
return ;
2004-03-17 06:05:52 +00:00
vector <char> tmp; //Temporary vector used by receive function when waiting
LOG->Trace("Requesting Start from Server.");
netHolder SendNetPack;
SendNetPack.m_playerID = 20;
SendNetPack.m_combo=0;
SendNetPack.m_score=0; //PID 20 (Song Start Request Packet)
SendNetPack.m_step=0;
2004-03-17 06:05:52 +00:00
NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
LOG->Trace("Waiting for RECV");
//Block until go is recieved.
2004-03-17 06:05:52 +00:00
NetPlayerClient->receive(tmp);
LOG->Trace("Starting Game.");
2004-03-17 04:15:36 +00:00
}
2004-03-17 06:05:52 +00:00
//Global and accessable from anywhere
NetworkSyncManager *NSMAN;