diff --git a/stepmania/src/InputMapper.cpp b/stepmania/src/InputMapper.cpp index c2d3cea01e..a138709c69 100644 --- a/stepmania/src/InputMapper.cpp +++ b/stepmania/src/InputMapper.cpp @@ -558,6 +558,7 @@ bool InputMapper::CheckForChangedInputDevicesAndRemap( RString &sMessage ) sMessage += REMAPPING_ALL_JOYSTICKS.GetValue(); AutoMapJoysticksForCurrentGame(); SaveMappingsToDisk(); + MESSAGEMAN->Broadcast( Message_AutoJoyMappingApplied ); } LOG->Info( sMessage ); diff --git a/stepmania/src/MessageManager.cpp b/stepmania/src/MessageManager.cpp index a41c6d12ca..ae8ecd95d3 100644 --- a/stepmania/src/MessageManager.cpp +++ b/stepmania/src/MessageManager.cpp @@ -65,6 +65,7 @@ static const char *MessageNames[] = { "LessonCleared", "LessonFailed", "StorageDevicesChanged", + "AutoJoyMappingApplied", }; XToString( Message, NUM_Message ); diff --git a/stepmania/src/MessageManager.h b/stepmania/src/MessageManager.h index 86cb4925ce..ed1fd890b6 100644 --- a/stepmania/src/MessageManager.h +++ b/stepmania/src/MessageManager.h @@ -80,6 +80,7 @@ enum Message Message_LessonCleared, Message_LessonFailed, Message_StorageDevicesChanged, + Message_AutoJoyMappingApplied, NUM_Message, // leave this at the end Message_Invalud }; diff --git a/stepmania/src/ScreenMapControllers.cpp b/stepmania/src/ScreenMapControllers.cpp index 0f291d2f60..7189abb64f 100644 --- a/stepmania/src/ScreenMapControllers.cpp +++ b/stepmania/src/ScreenMapControllers.cpp @@ -25,6 +25,11 @@ static const int NUM_CHANGABLE_SLOTS = NUM_SHOWN_GAME_TO_DEVICE_SLOTS-1; REGISTER_SCREEN_CLASS( ScreenMapControllers ); +ScreenMapControllers::ScreenMapControllers() +{ + this->SubscribeToMessage( Message_AutoJoyMappingApplied ); +} + static LocalizedString PLAYER_SLOTS( "ScreenMapControllers", "%s slots" ); void ScreenMapControllers::Init() { @@ -449,6 +454,17 @@ void ScreenMapControllers::Refresh() m_LineScroller.SetDestinationItem( (float) m_iCurButton ); } +void ScreenMapControllers::HandleMessage( const RString& sMessage ) +{ + if( sMessage == MessageToString(Message_AutoJoyMappingApplied) ) + { + Refresh(); + } + + ScreenWithMenuElements::HandleMessage( sMessage ); +} + + /* * (c) 2001-2005 Chris Danford, Glenn Maynard * All rights reserved. diff --git a/stepmania/src/ScreenMapControllers.h b/stepmania/src/ScreenMapControllers.h index b0b45a0826..8a8108f1b3 100644 --- a/stepmania/src/ScreenMapControllers.h +++ b/stepmania/src/ScreenMapControllers.h @@ -14,6 +14,7 @@ enum { NUM_SHOWN_GAME_TO_DEVICE_SLOTS = 3 }; class ScreenMapControllers : public ScreenWithMenuElements { public: + ScreenMapControllers(); virtual void Init(); virtual void BeginScreen(); @@ -23,6 +24,8 @@ public: virtual void TweenOffScreen(); private: + virtual void HandleMessage( const RString& sMessage ); + Actor *GetActorWithFocus(); void BeforeChangeFocus(); void AfterChangeFocus();