Add a perminate "Create Room" item

This commit is contained in:
Josh Allen
2005-05-08 18:49:27 +00:00
parent f2bb1b373f
commit 4cae8fdd22
2 changed files with 36 additions and 5 deletions
+28 -2
View File
@@ -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<WheelItemBaseData*> &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);
}
/*
+8 -3
View File
@@ -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<float> DESC_X;
ThemeMetric<float> DESC_Y;
ThemeMetric<float> 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<WheelItemBaseData*> &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