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:
Charles Lohr
2004-10-13 06:42:53 +00:00
parent e84c666854
commit f53bd9a2f7
2 changed files with 84 additions and 8 deletions
+72 -8
View File
@@ -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