From d608953da760e9c285c56a7a977aeab0f6bc202d Mon Sep 17 00:00:00 2001 From: sigatrev Date: Tue, 6 May 2014 17:56:51 -0500 Subject: [PATCH] added "Tracks" param to judgment message which contains a list of all tracks included in the judgment --- src/MessageManager.h | 9 +++++++++ src/Player.cpp | 20 ++++++++++++++++++-- src/Player.h | 3 ++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/MessageManager.h b/src/MessageManager.h index a14735cbcb..5a63204a77 100644 --- a/src/MessageManager.h +++ b/src/MessageManager.h @@ -125,6 +125,15 @@ struct Message LUA->Release( L ); } + template + void SetParam( const RString &sName, const vector &val ) + { + Lua *L = LUA->Get(); + LuaHelpers::CreateTableFromArray( val, L ); + SetParamFromStack( L , sName ); + LUA->Release( L ); + } + bool operator==( const RString &s ) const { return m_sName == s; } bool operator==( MessageID id ) const { return MessageIDToString(id) == m_sName; } diff --git a/src/Player.cpp b/src/Player.cpp index 3d9e52c386..06758360ae 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2804,7 +2804,17 @@ void Player::UpdateJudgedRows() } else { - SetJudgment( lastTNR.tns, m_NoteData.GetFirstTrackWithTapOrHoldHead(iRow), lastTNR.fTapNoteOffset ); + vector viColsWithTaps; + for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack ) + { + const TapNote &tn = m_NoteData.GetTapNote( iTrack, iRow ); + if (tn.type == TapNote::tap || tn.type == TapNote::lift || + ( tn.type == TapNote::hold_head && !REQUIRE_STEP_ON_HOLD_HEADS ) ) + { + viColsWithTaps.push_back( iTrack ); + }; + } + SetJudgment( lastTNR.tns, m_NoteData.GetFirstTrackWithTapOrHoldHead(iRow), lastTNR.fTapNoteOffset, viColsWithTaps ); } HandleTapRowScore( iRow ); } @@ -3323,7 +3333,7 @@ void Player::SetMineJudgment( TapNoteScore tns , int iTrack ) } } -void Player::SetJudgment( TapNoteScore tns, int iTrack, float fTapNoteOffset ) +void Player::SetJudgment( TapNoteScore tns, int iTrack, float fTapNoteOffset, vector viCols ) { if( m_bSendJudgmentAndComboMessages ) { @@ -3334,6 +3344,12 @@ void Player::SetJudgment( TapNoteScore tns, int iTrack, float fTapNoteOffset ) msg.SetParam( "TapNoteScore", tns ); msg.SetParam( "Early", fTapNoteOffset < 0.0f ); msg.SetParam( "TapNoteOffset", fTapNoteOffset ); + { + Lua *L = LUA->Get(); + LuaHelpers::CreateTableFromArray( viCols, L ); + msg.SetParamFromStack( L , "Tracks" ); + LUA->Release( L ); + } MESSAGEMAN->Broadcast( msg ); } } diff --git a/src/Player.h b/src/Player.h index 68cb9050dd..a4b8b486f5 100644 --- a/src/Player.h +++ b/src/Player.h @@ -132,7 +132,8 @@ protected: void PlayKeysound( const TapNote &tn, TapNoteScore score ); void SetMineJudgment( TapNoteScore tns , int iTrack ); - void SetJudgment( TapNoteScore tns, int iFirstTrack, float fTapNoteOffset ); // -1 if no track as in TNS_Miss + void SetJudgment( TapNoteScore tns, int iFirstTrack, float fTapNoteOffset ) { vector viCols (1,iFirstTrack); SetJudgment( tns, iFirstTrack, fTapNoteOffset, viCols ); } + void SetJudgment( TapNoteScore tns, int iFirstTrack, float fTapNoteOffset, vector viCols ); // -1 if no track as in TNS_Miss void SetHoldJudgment( TapNoteScore tns, HoldNoteScore hns, int iTrack ); void SetCombo( int iCombo, int iMisses );