diff --git a/stepmania/src/RoomWheel.cpp b/stepmania/src/RoomWheel.cpp index 28c360349f..517709a4da 100644 --- a/stepmania/src/RoomWheel.cpp +++ b/stepmania/src/RoomWheel.cpp @@ -1,9 +1,14 @@ #include "global.h" #include "RoomWheel.h" #include "RageLog.h" +#include "ScreenManager.h" + +AutoScreenMessage( SM_BackFromRoomName ) void RoomWheel::Load( CString sType ) { + SetName( sType ); + m_offset = 0; LOG->Trace( "RoomWheel::Load('%s')", sType.c_str() ); LoadFromMetrics( sType ); @@ -20,6 +25,8 @@ void RoomWheel::Load( CString sType ) m_WheelState = STATE_SELECTING_GENERIC; + AddPerminateItem( new RoomWheelData(TYPE_GENERIC, "Create Room", "Create a new game room", THEME->GetMetricC( m_sName, "CreateRoomColor")) ); + BuildWheelItemsData(m_WheelBaseItemsData); RebuildWheelItems(); } @@ -67,13 +74,32 @@ void RoomWheel::BuildWheelItemsData( vector &arrayWheelItemD } } +void RoomWheel::AddPerminateItem(RoomWheelData* itemdata) +{ + m_offset++; + AddItem( itemdata ); +} + +bool RoomWheel::Select() +{ + if (m_iSelection > 0) + return WheelBase::Select(); + else if (m_iSelection == 0) + { + //Since this is not actually an option outside of this wheel NULL is a good idea. + m_LastSelection = NULL; + SCREENMAN->TextEntry( SM_BackFromRoomName, "Enter Room Name:", "", 255 ); + } + return false; +} + void RoomWheelItem::LoadFromWheelItemBaseData(WheelItemBaseData* pWID) { RoomWheelData* tmpdata = (RoomWheelData*)pWID; WheelItemBase::LoadFromWheelItemBaseData(pWID); m_Desc.SetText(tmpdata->m_sDesc); - m_Desc.SetDiffuseColor(tmpdata->m_color); - m_text.SetDiffuseColor(tmpdata->m_color); + m_Desc.SetDiffuseColor(pWID->m_color); + m_text.SetDiffuseColor(pWID->m_color); } /* diff --git a/stepmania/src/RoomWheel.h b/stepmania/src/RoomWheel.h index d8bb9bf5ef..093215f8e0 100644 --- a/stepmania/src/RoomWheel.h +++ b/stepmania/src/RoomWheel.h @@ -13,7 +13,6 @@ struct RoomWheelData : public WheelItemBaseData RoomWheelData( WheelItemType wit, CString title, CString SubTitle, RageColor color ); CString m_sDesc; - RageColor m_color; // either text color or section background color WheelNotifyIcon::Flags m_Flags; }; @@ -27,6 +26,7 @@ public: BitmapText m_Desc; +private: ThemeMetric DESC_X; ThemeMetric DESC_Y; ThemeMetric DESC_WIDTH; @@ -36,9 +36,14 @@ public: class RoomWheel : public WheelBase { public: virtual void Load( CString sType ); - inline virtual RoomWheelData* GetItem(unsigned int i) { return (RoomWheelData*)WheelBase::GetItem(i); } + inline RoomWheelData* GetItem(unsigned int i) { return (RoomWheelData*)WheelBase::GetItem(i + m_offset); } virtual void BuildWheelItemsData( vector &arrayWheelItemDatas ); -protected: + virtual inline unsigned int GetNumItems() { return m_WheelBaseItemsData.size() - m_offset; } + virtual void RemoveItem( int index ) { WheelBase::RemoveItem(index + m_offset); } + void AddPerminateItem(RoomWheelData* itemdata); + virtual bool Select(); +private: + int m_offset; }; #endif