From 9ccfd2b473f1f528cfffd59337537aaf82c5f6ca Mon Sep 17 00:00:00 2001 From: Josh Allen Date: Sun, 29 Aug 2004 20:36:37 +0000 Subject: [PATCH] Modified server to comply with revised protocol. --- stepmania/src/NetworkSyncServer.cpp | 45 +++++++++++++++++++++++------ stepmania/src/NetworkSyncServer.h | 3 ++ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/stepmania/src/NetworkSyncServer.cpp b/stepmania/src/NetworkSyncServer.cpp index ab25b027e2..40d1fce3a0 100644 --- a/stepmania/src/NetworkSyncServer.cpp +++ b/stepmania/src/NetworkSyncServer.cpp @@ -18,6 +18,7 @@ LanPlayer::LanPlayer() { StepManiaLanServer::StepManiaLanServer() { stop = true; SecondSameSelect = false; + AssignPlayerIDs(); } StepManiaLanServer::~StepManiaLanServer() { @@ -118,6 +119,7 @@ void StepManiaLanServer::ParseData(PacketFunctions &Packet, int clientNum) { case 6: /* Style Update */ Client[clientNum].StyleUpdate(Packet); + SendUserList(); break; case 7: // Chat message @@ -217,6 +219,15 @@ void GameClient::GameOver(PacketFunctions &Packet) { InGame= false; } +void StepManiaLanServer::AssignPlayerIDs() { + int counter = 0; + //Future: Figure out how to do dynamic numbering. + for (int x = 0; x < NUMBERCLIENTS; x++) { + Client[x].Player[0].PlayerID = counter++; + Client[x].Player[1].PlayerID = counter++; + } +} + int StepManiaLanServer::SortStats(LanPlayer *playersPtr[]) { int counter = 0; LanPlayer *tmp; @@ -319,15 +330,9 @@ void StepManiaLanServer::SendNetPacket(int client, char *data, int size) { } void StepManiaLanServer::StatsNameColumn(PacketFunctions &data, LanPlayer *playersPtr[], int numPlayers) { - char number[9]; CString numname; - for (int x = 0; x < numPlayers; x++) { - sprintf(number, "%d", x+1); - numname = number; - numname += ". "; - numname += playersPtr[x]->name; - data.WriteNT(numname); - } + for (int x = 0; x < numPlayers; x++) + data.Write1(playersPtr[x]->PlayerID); } void StepManiaLanServer::StatsComboColumn(PacketFunctions &data, LanPlayer *playersPtr[], int numPlayers) @@ -534,7 +539,7 @@ void GameClient::CheckConnection() { /* If there is an error close the socket. */ if (clientSocket.IsError()) { clientSocket.close(); - Used = false; + Used = Ready = hasSong = InGame = false; Player[0].name = Player[1].name = ""; } } @@ -548,6 +553,28 @@ void StepManiaLanServer::MoveClientToHost() { } } +void StepManiaLanServer::SendUserList() { + Reply.ClearPacket(); + Reply.Write1(137); + Reply.Write1(NUMBERCLIENTS*2); + Reply.Write1(NUMBERCLIENTS*2); + for (int x = 0; x < NUMBERCLIENTS; x++) { + if (Client[x].Player[0].name.length() == 0) { + Reply.Write1(0); + } else { + Reply.Write1(1); + } + Reply.WriteNT(Client[x].Player[0].name); + if (Client[x].Player[1].name.length() == 0) { + Reply.Write1(0); + } else { + Reply.Write1(1); + } + Reply.WriteNT(Client[x].Player[1].name); + } + SendToAllClients(Reply); +} + /* * (c) 2003-2004 Joshua Allen * All rights reserved. diff --git a/stepmania/src/NetworkSyncServer.h b/stepmania/src/NetworkSyncServer.h index 5b1bfa3f21..24fdc130ea 100644 --- a/stepmania/src/NetworkSyncServer.h +++ b/stepmania/src/NetworkSyncServer.h @@ -28,6 +28,7 @@ class LanPlayer { int maxCombo; int Grade; int offset; + int PlayerID; LanPlayer(); private: }; @@ -110,6 +111,8 @@ class StepManiaLanServer { void SendToAllClients(PacketFunctions &Packet); bool CheckHasSongState(); void ClearHasSong(); + void AssignPlayerIDs(); + void SendUserList(); }; #endif