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; }
|
||||
void NetworkSyncManager::SendChat(const CString& message) { }
|
||||
void NetworkSyncManager::SelectUserSong() { }
|
||||
|
||||
void NetworkSyncManager::SendSMOnline( int command, char * data, int size ) { }
|
||||
SMOnlinePacket & NetworkSyncManager::GetSMOnline( ) { }
|
||||
SMOnlinePacket & NetworkSyncManager::PeekSMOnline( ) { }
|
||||
|
||||
#else
|
||||
#include "ezsockets.h"
|
||||
#include "ProfileManager.h"
|
||||
@@ -42,6 +47,8 @@ void NetworkSyncManager::SelectUserSong() { }
|
||||
const ScreenMessage SM_AddToChat = ScreenMessage(SM_User+4);
|
||||
const ScreenMessage SM_ChangeSong = ScreenMessage(SM_User+5);
|
||||
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 )
|
||||
@@ -203,10 +210,6 @@ bool NetworkSyncManager::Connect(const CString& addy, unsigned short port)
|
||||
LOG->Info("Beginning to connect");
|
||||
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
|
||||
|
||||
NetPlayerClient->create(); // Initilize Socket
|
||||
useSMserver = NetPlayerClient->connect(addy, port);
|
||||
@@ -322,6 +325,8 @@ void NetworkSyncManager::ReportSongOver()
|
||||
|
||||
void NetworkSyncManager::ReportStyle()
|
||||
{
|
||||
LOG->Trace( "Sending \"Style\" to server" );
|
||||
|
||||
if (!useSMserver)
|
||||
return;
|
||||
m_packet.ClearPacket();
|
||||
@@ -414,7 +419,7 @@ void NetworkSyncManager::StartRequest(short position)
|
||||
for (int i=0; i<NETMAXPLAYERS; ++i)
|
||||
{
|
||||
m_EvalPlayerData[i].name=0;
|
||||
m_EvalPlayerData[i].grade=0;
|
||||
m_EvalPlayerData[i].grade=0;
|
||||
m_EvalPlayerData[i].score=0;
|
||||
m_EvalPlayerData[i].difficulty=(Difficulty)0;
|
||||
for (int j=0; j<NETNUMTAPSCORES; ++j)
|
||||
@@ -441,7 +446,7 @@ void NetworkSyncManager::StartRequest(short position)
|
||||
|
||||
m_packet.ClearPacket();
|
||||
|
||||
|
||||
|
||||
while (dontExit)
|
||||
{
|
||||
//Keep the server going during the loop.
|
||||
@@ -458,6 +463,7 @@ void NetworkSyncManager::StartRequest(short position)
|
||||
dontExit=false;
|
||||
//Only allow passing on Start request.
|
||||
//Otherwise scoreboard updates and such will confuse us.
|
||||
|
||||
}
|
||||
NetPlayerClient->blocking=false;
|
||||
|
||||
@@ -508,8 +514,11 @@ void NetworkSyncManager::ProcessInput()
|
||||
|
||||
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();
|
||||
//Check to make sure command is valid from server
|
||||
if (command < NSServerOffset)
|
||||
@@ -623,6 +632,7 @@ void NetworkSyncManager::ProcessInput()
|
||||
{
|
||||
/*int ServerMaxPlayers=*/m_packet.Read1();
|
||||
int PlayersInThisPacket=m_packet.Read1();
|
||||
m_ActivePlayer.clear();
|
||||
m_PlayerStatus.clear();
|
||||
m_PlayerNames.clear();
|
||||
m_ActivePlayers = 0;
|
||||
@@ -637,6 +647,7 @@ void NetworkSyncManager::ProcessInput()
|
||||
m_PlayerStatus.push_back( PStatus );
|
||||
m_PlayerNames.push_back( m_packet.ReadNT() );
|
||||
}
|
||||
SCREENMAN->SendMessageToTopScreen( SM_UsersUpdate );
|
||||
}
|
||||
break;
|
||||
case NSCSMS:
|
||||
@@ -651,6 +662,16 @@ void NetworkSyncManager::ProcessInput()
|
||||
SCREENMAN->SetNewScreen( "ScreenNetSelectMusic" ); //Should this be metric'd out?
|
||||
}
|
||||
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();
|
||||
}
|
||||
@@ -689,9 +710,52 @@ void NetworkSyncManager::SelectUserSong()
|
||||
m_packet.WriteNT( m_sMainTitle );
|
||||
m_packet.WriteNT( m_sArtist );
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user