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
+70 -6
View File
@@ -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();
@@ -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
+12
View File
@@ -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
}; };