From 7d98b7ed16061cb971e96c95b0409c75f97a6d9f Mon Sep 17 00:00:00 2001 From: Josh Allen Date: Sun, 19 Aug 2007 20:41:21 +0000 Subject: [PATCH] Translate from Stepmania's note score to SMO's note score(step type). --- stepmania/src/NetworkSyncManager.cpp | 32 ++++++++++++++++++++++++++++ stepmania/src/NetworkSyncManager.h | 17 ++++++++++++++- stepmania/src/ScoreKeeperNormal.cpp | 2 +- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/stepmania/src/NetworkSyncManager.cpp b/stepmania/src/NetworkSyncManager.cpp index af25598a6d..3e286c3558 100644 --- a/stepmania/src/NetworkSyncManager.cpp +++ b/stepmania/src/NetworkSyncManager.cpp @@ -270,6 +270,7 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb m_packet.ClearPacket(); m_packet.Write1( NSCGSU ); + step = TranslateStepType(step); uint8_t ctr = (uint8_t) (playerID * 16 + step - ( TNS_HitMine - 1 ) ); m_packet.Write1( ctr ); @@ -740,6 +741,37 @@ void NetworkSyncManager::SendSMOnline( ) NetPlayerClient->SendPack( (char*)&m_packet.Data , m_packet.Position ); } +SMOStepType NetworkSyncManager::TranslateStepType(int score) +{ + /* Translate from Stepmania's constantly changing TapNoteScore to SMO's + note scores */ + switch(score) + { + case TNS_HitMine: + return SMOST_HITMINE; + case TNS_AvoidMine: + return SMOST_AVOIDMINE; + case TNS_Miss: + return SMOST_MISS; + case TNS_W5: + return SMOST_W5; + case TNS_W4: + return SMOST_W4; + case TNS_W3: + return SMOST_W3; + case TNS_W2: + return SMOST_W2; + case TNS_W1: + return SMOST_W1; + case HNS_LetGo+TapNoteScore_Invalid: + return SMOST_LETGO; + case HNS_Held+TapNoteScore_Invalid: + return SMOST_HELD; + default: + return SMOST_UNUSED; + } +} + //Packet functions uint8_t PacketFunctions::Read1() diff --git a/stepmania/src/NetworkSyncManager.h b/stepmania/src/NetworkSyncManager.h index 70816e409c..f9cc15dcc2 100644 --- a/stepmania/src/NetworkSyncManager.h +++ b/stepmania/src/NetworkSyncManager.h @@ -33,6 +33,21 @@ enum NSCommand NUM_NS_COMMANDS }; +enum SMOStepType +{ + SMOST_UNUSED = 0, + SMOST_HITMINE, //1 + SMOST_AVOIDMINE, //2 + SMOST_MISS, //Miss + SMOST_W5, //Boo + SMOST_W4, //Good + SMOST_W3, //Great + SMOST_W2, //Perfect + SMOST_W1, //Marvelous + SMOST_LETGO, //Let Go + SMOST_HELD //OK +}; + const NSCommand NSServerOffset = (NSCommand)128; struct EndOfGame_PlayerData @@ -160,7 +175,7 @@ private: #if !defined(WITHOUT_NETWORKING) void ProcessInput(); - + SMOStepType TranslateStepType(int score); void StartUp(); int m_playerID; //these are currently unused, but need to stay diff --git a/stepmania/src/ScoreKeeperNormal.cpp b/stepmania/src/ScoreKeeperNormal.cpp index ecdd942bc4..0a2148d5d6 100644 --- a/stepmania/src/ScoreKeeperNormal.cpp +++ b/stepmania/src/ScoreKeeperNormal.cpp @@ -589,7 +589,7 @@ void ScoreKeeperNormal::HandleHoldScore( const TapNote &tn ) PlayerNumber pn = m_pPlayerState->m_PlayerNumber; NSMAN->ReportScore( pn, - holdScore+TNS_W1, + holdScore+TapNoteScore_Invalid, m_pPlayerStageStats->m_iScore, m_pPlayerStageStats->m_iCurCombo, tn.result.fTapNoteOffset );