From 31e99dc457a4bd287a83773369802564b8dff241 Mon Sep 17 00:00:00 2001 From: sillybear Date: Sun, 7 May 2017 09:14:45 +0800 Subject: [PATCH] Call SetMessage during CurrentSteps / Difficulty Changed (#1361) This fixes a bug where player difficulty meter and/or color inside MusicWheelItem don't update when switching between difficulties. --- src/MusicWheelItem.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index faed34209d..762cd89a8b 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -382,6 +382,45 @@ void MusicWheelItem::HandleMessage( const Message &msg ) msg == Message_PreferredDifficultyP1Changed || msg == Message_PreferredDifficultyP2Changed ) { + const MusicWheelItemData *pWID = dynamic_cast( m_pData ); + MusicWheelItemType type = MusicWheelItemType_Invalid; + + switch( pWID->m_Type ) + { + DEFAULT_FAIL( pWID->m_Type ); + case WheelItemDataType_Song: + type = MusicWheelItemType_Song; + case WheelItemDataType_Section: + if( GAMESTATE->sExpandedSectionName == pWID->m_sText ) + type = MusicWheelItemType_SectionExpanded; + else + type = MusicWheelItemType_SectionCollapsed; + case WheelItemDataType_Course: + type = MusicWheelItemType_Course; + case WheelItemDataType_Sort: + if( pWID->m_pAction->m_pm != PlayMode_Invalid ) + type = MusicWheelItemType_Mode; + else + type = MusicWheelItemType_Sort; + case WheelItemDataType_Roulette: + type = MusicWheelItemType_Roulette; + case WheelItemDataType_Random: + type = MusicWheelItemType_Random; + case WheelItemDataType_Portal: + type = MusicWheelItemType_Portal; + case WheelItemDataType_Custom: + type = MusicWheelItemType_Custom; + } + + Message msg( "Set" ); + msg.SetParam( "Song", pWID->m_pSong ); + msg.SetParam( "Course", pWID->m_pCourse ); + msg.SetParam( "Text", pWID->m_sText ); + msg.SetParam( "Type", MusicWheelItemTypeToString(type) ); + msg.SetParam( "Color", pWID->m_color ); + msg.SetParam( "Label", pWID->m_sLabel ); + this->HandleMessage( msg ); + RefreshGrades(); }