Added necessiary code for sending user info, and addition for SMOnline support (But no SMOnline yet). Do not put in 3.9 branch.
This commit is contained in:
@@ -22,6 +22,11 @@ void NetworkSyncManager::Update( float fDeltaTime ) { }
|
|||||||
bool NetworkSyncManager::ChangedScoreboard(int Column) { return false; }
|
bool NetworkSyncManager::ChangedScoreboard(int Column) { return false; }
|
||||||
void NetworkSyncManager::SendChat(const CString& message) { }
|
void NetworkSyncManager::SendChat(const CString& message) { }
|
||||||
void NetworkSyncManager::SelectUserSong() { }
|
void NetworkSyncManager::SelectUserSong() { }
|
||||||
|
|
||||||
|
void NetworkSyncManager::SendSMOnline( int command, char * data, int size ) { }
|
||||||
|
SMOnlinePacket & NetworkSyncManager::GetSMOnline( ) { }
|
||||||
|
SMOnlinePacket & NetworkSyncManager::PeekSMOnline( ) { }
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include "ezsockets.h"
|
#include "ezsockets.h"
|
||||||
#include "ProfileManager.h"
|
#include "ProfileManager.h"
|
||||||
@@ -42,6 +47,8 @@ void NetworkSyncManager::SelectUserSong() { }
|
|||||||
const ScreenMessage SM_AddToChat = ScreenMessage(SM_User+4);
|
const ScreenMessage SM_AddToChat = ScreenMessage(SM_User+4);
|
||||||
const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5);
|
const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5);
|
||||||
const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6);
|
const ScreenMessage SM_GotEval = ScreenMessage(SM_User+6);
|
||||||
|
const ScreenMessage SM_UsersUpdate = ScreenMessage(SM_User+7);
|
||||||
|
const ScreenMessage SM_SMOnlinePack = ScreenMessage(SM_User+8);
|
||||||
|
|
||||||
|
|
||||||
NetworkSyncManager::NetworkSyncManager( LoadingWindow *ld )
|
NetworkSyncManager::NetworkSyncManager( LoadingWindow *ld )
|
||||||
@@ -203,10 +210,6 @@ bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
|
|||||||
LOG->Info("Beginning to connect");
|
LOG->Info("Beginning to connect");
|
||||||
if (port != 8765)
|
if (port != 8765)
|
||||||
return false;
|
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
|
|
||||||
|
|
||||||
NetPlayerClient->create(); // Initilize Socket
|
NetPlayerClient->create(); // Initilize Socket
|
||||||
useSMserver = NetPlayerClient->connect(addy, port);
|
useSMserver = NetPlayerClient->connect(addy, port);
|
||||||
@@ -322,6 +325,8 @@ void NetworkSyncManager::ReportSongOver()
|
|||||||
|
|
||||||
void NetworkSyncManager::ReportStyle()
|
void NetworkSyncManager::ReportStyle()
|
||||||
{
|
{
|
||||||
|
LOG->Trace( "Sending \"Style\" to server" );
|
||||||
|
|
||||||
if (!useSMserver)
|
if (!useSMserver)
|
||||||
return;
|
return;
|
||||||
m_packet.ClearPacket();
|
m_packet.ClearPacket();
|
||||||
@@ -414,7 +419,7 @@ void NetworkSyncManager::StartRequest(short position)
|
|||||||
for (int i=0; i<NETMAXPLAYERS; ++i)
|
for (int i=0; i<NETMAXPLAYERS; ++i)
|
||||||
{
|
{
|
||||||
m_EvalPlayerData[i].name=0;
|
m_EvalPlayerData[i].name=0;
|
||||||
m_EvalPlayerData[i].grade=0;
|
m_EvalPlayerData[i].grade=0;
|
||||||
m_EvalPlayerData[i].score=0;
|
m_EvalPlayerData[i].score=0;
|
||||||
m_EvalPlayerData[i].difficulty=(Difficulty)0;
|
m_EvalPlayerData[i].difficulty=(Difficulty)0;
|
||||||
for (int j=0; j<NETNUMTAPSCORES; ++j)
|
for (int j=0; j<NETNUMTAPSCORES; ++j)
|
||||||
@@ -458,6 +463,7 @@ void NetworkSyncManager::StartRequest(short position)
|
|||||||
dontExit=false;
|
dontExit=false;
|
||||||
//Only allow passing on Start request.
|
//Only allow passing on Start request.
|
||||||
//Otherwise scoreboard updates and such will confuse us.
|
//Otherwise scoreboard updates and such will confuse us.
|
||||||
|
|
||||||
}
|
}
|
||||||
NetPlayerClient->blocking=false;
|
NetPlayerClient->blocking=false;
|
||||||
|
|
||||||
@@ -508,8 +514,11 @@ void NetworkSyncManager::ProcessInput()
|
|||||||
|
|
||||||
m_packet.ClearPacket();
|
m_packet.ClearPacket();
|
||||||
|
|
||||||
while (NetPlayerClient->ReadPack((char *)&m_packet, NETMAXBUFFERSIZE)>0)
|
int packetSize;
|
||||||
|
|
||||||
|
while ( (packetSize = NetPlayerClient->ReadPack((char *)&m_packet, NETMAXBUFFERSIZE) ) > 0 )
|
||||||
{
|
{
|
||||||
|
m_packet.size = packetSize;
|
||||||
int command = m_packet.Read1();
|
int command = m_packet.Read1();
|
||||||
//Check to make sure command is valid from server
|
//Check to make sure command is valid from server
|
||||||
if (command < NSServerOffset)
|
if (command < NSServerOffset)
|
||||||
@@ -623,6 +632,7 @@ void NetworkSyncManager::ProcessInput()
|
|||||||
{
|
{
|
||||||
/*int ServerMaxPlayers=*/m_packet.Read1();
|
/*int ServerMaxPlayers=*/m_packet.Read1();
|
||||||
int PlayersInThisPacket=m_packet.Read1();
|
int PlayersInThisPacket=m_packet.Read1();
|
||||||
|
m_ActivePlayer.clear();
|
||||||
m_PlayerStatus.clear();
|
m_PlayerStatus.clear();
|
||||||
m_PlayerNames.clear();
|
m_PlayerNames.clear();
|
||||||
m_ActivePlayers = 0;
|
m_ActivePlayers = 0;
|
||||||
@@ -637,6 +647,7 @@ void NetworkSyncManager::ProcessInput()
|
|||||||
m_PlayerStatus.push_back( PStatus );
|
m_PlayerStatus.push_back( PStatus );
|
||||||
m_PlayerNames.push_back( m_packet.ReadNT() );
|
m_PlayerNames.push_back( m_packet.ReadNT() );
|
||||||
}
|
}
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_UsersUpdate );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NSCSMS:
|
case NSCSMS:
|
||||||
@@ -651,6 +662,16 @@ void NetworkSyncManager::ProcessInput()
|
|||||||
SCREENMAN->SetNewScreen( "ScreenNetSelectMusic" ); //Should this be metric'd out?
|
SCREENMAN->SetNewScreen( "ScreenNetSelectMusic" ); //Should this be metric'd out?
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case NSCSMOnline:
|
||||||
|
{
|
||||||
|
PacketFunctions smoPack;
|
||||||
|
smoPack.size = packetSize - 1;
|
||||||
|
smoPack.Position = 0;
|
||||||
|
memcpy( smoPack.Data, m_packet.Data, packetSize-1 );
|
||||||
|
LOG->Trace( "Received SMOnline Command: %d, size:%d", command, packetSize - 1 );
|
||||||
|
m_SMOnlineStack.push_front( smoPack );
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_SMOnlinePack );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_packet.ClearPacket();
|
m_packet.ClearPacket();
|
||||||
}
|
}
|
||||||
@@ -689,9 +710,52 @@ void NetworkSyncManager::SelectUserSong()
|
|||||||
m_packet.WriteNT( m_sMainTitle );
|
m_packet.WriteNT( m_sMainTitle );
|
||||||
m_packet.WriteNT( m_sArtist );
|
m_packet.WriteNT( m_sArtist );
|
||||||
m_packet.WriteNT( m_sSubTitle );
|
m_packet.WriteNT( m_sSubTitle );
|
||||||
NetPlayerClient->SendPack((char*)&m_packet.Data, m_packet.Position);
|
NetPlayerClient->SendPack( (char*)&m_packet.Data, m_packet.Position );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetworkSyncManager::SendSMOnline( PacketFunctions &PackData )
|
||||||
|
{
|
||||||
|
NetPlayerClient->SendPack( (char*)&PackData.Data , PackData.size );
|
||||||
|
}
|
||||||
|
|
||||||
|
PacketFunctions NetworkSyncManager::GetSMOnline( )
|
||||||
|
{
|
||||||
|
PacketFunctions Pack;
|
||||||
|
|
||||||
|
if ( m_SMOnlineStack.empty() )
|
||||||
|
{
|
||||||
|
Pack.Position = 0;
|
||||||
|
Pack.size = 0;
|
||||||
|
return Pack;
|
||||||
|
}
|
||||||
|
|
||||||
|
Pack = m_SMOnlineStack.back();
|
||||||
|
|
||||||
|
memcpy( Pack.Data, m_SMOnlineStack.back().Data, Pack.size );
|
||||||
|
|
||||||
|
m_SMOnlineStack.pop_back();
|
||||||
|
return Pack;
|
||||||
|
}
|
||||||
|
|
||||||
|
PacketFunctions NetworkSyncManager::PeekSMOnline( )
|
||||||
|
{
|
||||||
|
PacketFunctions Pack;
|
||||||
|
|
||||||
|
if ( m_SMOnlineStack.empty() )
|
||||||
|
{
|
||||||
|
Pack.Position = 0;
|
||||||
|
Pack.size = 0;
|
||||||
|
return Pack;
|
||||||
|
}
|
||||||
|
|
||||||
|
Pack = m_SMOnlineStack.back();
|
||||||
|
|
||||||
|
memcpy( Pack.Data, m_SMOnlineStack.back().Data, Pack.size );
|
||||||
|
|
||||||
|
return Pack;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Packet functions
|
//Packet functions
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "PlayerNumber.h"
|
#include "PlayerNumber.h"
|
||||||
#include "Difficulty.h"
|
#include "Difficulty.h"
|
||||||
|
#include <queue>
|
||||||
|
|
||||||
class LoadingWindow;
|
class LoadingWindow;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ enum NSCommand
|
|||||||
NSCUUL, //9
|
NSCUUL, //9
|
||||||
NSCSMS, //10
|
NSCSMS, //10
|
||||||
NSCUPOpts, //11
|
NSCUPOpts, //11
|
||||||
|
NSCSMOnline, //12
|
||||||
NUM_NS_COMMANDS
|
NUM_NS_COMMANDS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,6 +61,8 @@ class PacketFunctions
|
|||||||
public:
|
public:
|
||||||
unsigned char Data[NETMAXBUFFERSIZE]; //Data
|
unsigned char Data[NETMAXBUFFERSIZE]; //Data
|
||||||
int Position; //Other info (Used for following functions)
|
int Position; //Other info (Used for following functions)
|
||||||
|
int size; //When sending these pacs, Position should
|
||||||
|
//be used; NOT size.
|
||||||
|
|
||||||
//Commands used to operate on NetPackets
|
//Commands used to operate on NetPackets
|
||||||
uint8_t Read1();
|
uint8_t Read1();
|
||||||
@@ -87,6 +91,12 @@ public:
|
|||||||
void ReportStyle(); //Report to server the style, players, and names
|
void ReportStyle(); //Report to server the style, players, and names
|
||||||
void ReportNSSOnOff(int i); //Report song selection screen on/off
|
void ReportNSSOnOff(int i); //Report song selection screen on/off
|
||||||
void StartRequest(short position); //Request a start. Block until granted.
|
void StartRequest(short position); //Request a start. Block until granted.
|
||||||
|
|
||||||
|
//SMOnline stuff
|
||||||
|
void SendSMOnline( PacketFunctions &PackData );
|
||||||
|
PacketFunctions GetSMOnline( );
|
||||||
|
PacketFunctions PeekSMOnline( );
|
||||||
|
|
||||||
bool Connect(const CString& addy, unsigned short port); // Connect to SM Server
|
bool Connect(const CString& addy, unsigned short port); // Connect to SM Server
|
||||||
|
|
||||||
void PostStartUp(const CString& ServerIP);
|
void PostStartUp(const CString& ServerIP);
|
||||||
@@ -159,6 +169,8 @@ private:
|
|||||||
bool Listen(unsigned short port);
|
bool Listen(unsigned short port);
|
||||||
|
|
||||||
PacketFunctions m_packet;
|
PacketFunctions m_packet;
|
||||||
|
|
||||||
|
deque<PacketFunctions> m_SMOnlineStack;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user