From 4cd8d6b6f3cbee3a6f8268d52427243c80866d4b Mon Sep 17 00:00:00 2001 From: Charles Lohr Date: Tue, 30 Mar 2004 05:50:36 +0000 Subject: [PATCH] I added life and Macromedia Flash XMLSocket Support. --- stepmania/src/NetworkSyncManager.cpp | 16 ++++++++++++++++ stepmania/src/NetworkSyncManager.h | 13 ++++++++++++- stepmania/src/ScreenGameplay.cpp | 5 +++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/stepmania/src/NetworkSyncManager.cpp b/stepmania/src/NetworkSyncManager.cpp index 6f2af53011..1748b7eabc 100644 --- a/stepmania/src/NetworkSyncManager.cpp +++ b/stepmania/src/NetworkSyncManager.cpp @@ -26,11 +26,17 @@ NetworkSyncManager::NetworkSyncManager(int argc, char **argv) useSMserver = true; int ClientCommand=3; NetPlayerClient->send((char*) &ClientCommand, 4); + NetPlayerClient->send(0);//Send 0 for flash client + NetPlayerClient->receive(m_ServerVersion); //If network play is desired //AND the connection works //Halt until we know what server //version we're dealing with + if (((m_ServerVersion / 512) % 2) == 1) + appendWithZero = true; + else + appendWithZero = false; } else useSMserver = false; else @@ -77,9 +83,13 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb SendNetPack.m_combo=combo; SendNetPack.m_score=score; //Load packet with aproperate info SendNetPack.m_step=step-1; + SendNetPack.m_life=m_playerLife[playerID]; //Send packet to server NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder)); + + if (appendWithZero) + NetPlayerClient->send(0); } void NetworkSyncManager::ReportSongOver() @@ -93,8 +103,13 @@ void NetworkSyncManager::ReportSongOver() SendNetPack.m_combo=0; SendNetPack.m_score=0; //Use PID 21 (Song over Packet) SendNetPack.m_step=0; + SendNetPack.m_life=0; NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder)); + + if (appendWithZero) + NetPlayerClient->send(0); + return; } @@ -113,6 +128,7 @@ void NetworkSyncManager::StartRequest() SendNetPack.m_combo=0; SendNetPack.m_score=0; //PID 20 (Song Start Request Packet) SendNetPack.m_step=0; + SendNetPack.m_life=0; NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder)); diff --git a/stepmania/src/NetworkSyncManager.h b/stepmania/src/NetworkSyncManager.h index 4395515fbe..b40799c26c 100644 --- a/stepmania/src/NetworkSyncManager.h +++ b/stepmania/src/NetworkSyncManager.h @@ -12,6 +12,9 @@ Joshua Allen ----------------------------------------------------------------------------- */ + +#include "global.h" +#include "GameState.h" class EzSockets; @@ -27,12 +30,19 @@ public: void StartRequest(); //Request a start. Block until granted. bool Connect(const CString& addy, unsigned short port); // Connect to SM Server + int m_playerLife[NUM_PLAYERS]; //Life + private: int m_playerID; //these are currently unused, but need to stay int m_step; int m_score; int m_combo; - bool useSMserver; + + bool appendWithZero; //Append 4 0s at end of packet. + //For FLASH client. + + bool useSMserver; + EzSockets *NetPlayerClient; int m_ServerVersion; //ServerVersion @@ -43,6 +53,7 @@ private: int m_step; //SID (StepID, 0-6 for Miss to Marv, 7,8 for boo and ok) int m_score; //Player's Score int m_combo; //Player's Current Combo + int m_life; //Player's Life }; }; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 0494f285ab..d086a17ac3 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -1403,6 +1403,11 @@ void ScreenGameplay::Update( float fDeltaTime ) float fPercentPositionSong = GAMESTATE->m_fMusicSeconds / fMusicLengthSeconds; CLAMP( fPercentPositionSong, 0, 1 ); m_meterSongPosition.SetPercent( fPercentPositionSong ); + + //NSMAN Update Life in NSMAN. + for (int i=0;im_playerLife[i] = int(m_pLifeMeter[i]->GetLife()*10000); + } /* Set g_CurStageStats.bFailed for failed players. In, FAIL_ARCADE, send