diff --git a/stepmania/src/WheelBase.cpp b/stepmania/src/WheelBase.cpp index cce38ff1c9..0dd8306b1d 100644 --- a/stepmania/src/WheelBase.cpp +++ b/stepmania/src/WheelBase.cpp @@ -402,6 +402,15 @@ bool WheelBase::Select() // return true if this selection ends the screen return false; } +WheelItemBaseData* WheelBase::GetItem(unsigned int index) // return true if this selection ends the screen +{ + if (!m_isEmpty) + if (index < m_WheelBaseItemsData.size()) + return m_WheelBaseItemsData[index]; + + return NULL; +} + int WheelBase::IsMoving() const { return m_Moving && m_TimeBeforeMovingBegins == 0; @@ -583,8 +592,7 @@ void WheelBase::AddItem(WheelItemBaseData* itemdata) //If the item was shown in the wheel, rebuild the wheel if ((0 <= (index - visible)) && ((index - visible) < NUM_WHEEL_ITEMS)) { - RebuildWheelItems(); - SCREENMAN->SystemMessageNoAnimate("redraw"); + RebuildWheelItems(); } } @@ -629,19 +637,15 @@ void WheelBase::RebuildWheelItems( int dist ) if( dist == -999999 ) { - LOG->Info("data:%d", m_WheelBaseItemsData.size()); // Refresh all for( int i=0; iInfo("i:%d", i); int iIndex = iFirstVisibleIndex + i; wrap( iIndex, m_WheelBaseItemsData.size() ); - LOG->Info("iIndex:%d", iIndex); WheelItemBaseData *data = m_WheelBaseItemsData[iIndex]; WheelItemBase *display = m_WheelBaseItems[i]; - LOG->Info("DISP"); display->LoadFromWheelItemBaseData( data ); } } diff --git a/stepmania/src/WheelBase.h b/stepmania/src/WheelBase.h index 327f698c16..8cd11b9a73 100644 --- a/stepmania/src/WheelBase.h +++ b/stepmania/src/WheelBase.h @@ -45,10 +45,13 @@ public: virtual bool Select(); // return true if this selection ends the screen bool WheelIsLocked() { return (m_WheelState == STATE_LOCKED ? true : false); } - void RebuildWheelItems( int dist = -999999 ); // -999999 = refresh all + virtual void RebuildWheelItems( int dist = -999999 ); // -999999 = refresh all void AddItem( WheelItemBaseData* itemdata ); void RemoveItem( int index ); + inline unsigned int GetNumItems() { return m_WheelBaseItemsData.size(); } + inline bool IsEmpty() { return m_isEmpty; } + WheelItemBaseData* GetItem(unsigned int index); WheelItemBaseData* LastSelected(); protected: diff --git a/stepmania/src/WheelItemBase.cpp b/stepmania/src/WheelItemBase.cpp index e88c8a4aa7..226ace80a6 100644 --- a/stepmania/src/WheelItemBase.cpp +++ b/stepmania/src/WheelItemBase.cpp @@ -16,10 +16,6 @@ #include "ActorUtil.h" #include "ThemeMetric.h" -ThemeMetric TEXT_X ("WheelItemBase","TextX"); -ThemeMetric TEXT_Y ("WheelItemBase","TextY"); -ThemeMetric TEXT_ON_COMMAND ("WheelItemBase","TextOnCommand"); - WheelItemBaseData::WheelItemBaseData( WheelItemType wit, CString sText, RageColor color ) { m_Type = wit; @@ -29,17 +25,25 @@ WheelItemBaseData::WheelItemBaseData( WheelItemType wit, CString sText, RageColo } -WheelItemBase::WheelItemBase() +WheelItemBase::WheelItemBase(CString sType) { - SetName( "WheelItemBase" ); + SetName( sType ); + Load(sType); +} + +void WheelItemBase::Load( CString sType ) +{ + TEXT_X .Load(sType,"TextX"); + TEXT_Y .Load(sType,"TextY"); + TEXT_ON_COMMAND .Load(sType,"TextOnCommand"); m_fPercentGray = 0; - m_sprBar.Load( THEME->GetPathG("WheelItemBase","bar") ); + m_sprBar.Load( THEME->GetPathG(sType,"bar") ); m_sprBar.SetXY( 0, 0 ); this->AddChild( &m_sprBar ); - m_text.LoadFromFont( THEME->GetPathF("WheelItemBase","text") ); + m_text.LoadFromFont( THEME->GetPathF(sType,"text") ); m_text.SetShadowLength( 0 ); m_text.SetXY( TEXT_X, TEXT_Y ); m_text.RunCommands( TEXT_ON_COMMAND ); diff --git a/stepmania/src/WheelItemBase.h b/stepmania/src/WheelItemBase.h index f7b1cd21e3..8f35372b68 100644 --- a/stepmania/src/WheelItemBase.h +++ b/stepmania/src/WheelItemBase.h @@ -28,12 +28,14 @@ enum WheelItemType class WheelItemBase : public ActorFrame { public: - WheelItemBase(); + WheelItemBase(CString sType = "WheelItemBase"); WheelItemBaseData* data; virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(Sprite& bar); virtual void DrawPrimitives() { DrawPrimitives( m_sprBar ); } + void Load( CString sType ); + virtual void LoadFromWheelItemBaseData( WheelItemBaseData* pWID ); float m_fPercentGray; @@ -43,6 +45,11 @@ public: WheelItemType m_Type; RageColor m_color; + ThemeMetric TEXT_X; + ThemeMetric TEXT_Y; + ThemeMetric TEXT_WIDTH; + ThemeMetric TEXT_ON_COMMAND; + }; struct WheelItemBaseData