Pull RoomInfoDisplay out of RoomWheel

This commit is contained in:
Josh Allen
2006-08-14 05:46:15 +00:00
parent 53c3fdc1ba
commit 71a57f9181
4 changed files with 29 additions and 14 deletions
+6 -7
View File
@@ -5,6 +5,7 @@
#include "ScreenTextEntry.h"
#include "LocalizedString.h"
#include "NetworkSyncManager.h"
#include "ScreenManager.h"
AutoScreenMessage( SM_BackFromRoomName )
@@ -29,9 +30,6 @@ void RoomWheel::Load( RString sType )
m_offset = 0;
LOG->Trace( "RoomWheel::Load('%s')", sType.c_str() );
m_roomInfo.Load("RoomInfoDisplay");
this->AddChild(&m_roomInfo);
AddPerminateItem( new RoomWheelData(TYPE_GENERIC, "Create Room", "Create a new game room", THEME->GetMetricC( m_sName, "CreateRoomColor")) );
BuildWheelItemsData( m_CurWheelItemData );
@@ -140,7 +138,8 @@ void RoomWheel::RemoveItem( int index )
static LocalizedString ENTER_ROOM_NAME( "RoomWheel", "Enter room name" );
bool RoomWheel::Select()
{
m_roomInfo.RetractInfoBox();
SCREENMAN->PostMessageToTopScreen( SM_RoomInfoRetract, 0 );
if( m_iSelection > 0 )
return WheelBase::Select();
else if( m_iSelection == 0 )
@@ -167,10 +166,10 @@ void RoomWheel::Move(int n)
{
const RoomWheelData* data = GetItem(m_iSelection-m_offset);
if (data != NULL)
m_roomInfo.SetRoom( data );
SCREENMAN->PostMessageToTopScreen( SM_RoomInfoDeploy, 0 );
}
else
m_roomInfo.RetractInfoBox();
SCREENMAN->PostMessageToTopScreen( SM_RoomInfoRetract, 0 );
WheelBase::Move(n);
}
@@ -203,7 +202,7 @@ void RoomInfoDisplay::RetractInfoBox()
{
if (m_state == OPEN)
OFF_COMMAND( this );
m_state = LOCKED;
}
+4 -3
View File
@@ -7,6 +7,9 @@
#include "WheelItemBase.h"
#include "ThemeMetric.h"
AutoScreenMessage( SM_RoomInfoRetract )
AutoScreenMessage( SM_RoomInfoDeploy )
struct RoomWheelData : public WheelItemBaseData
{
RoomWheelData() : m_iFlags(0) { WheelItemBaseData::WheelItemBaseData(); }
@@ -99,15 +102,13 @@ public:
inline RoomWheelData* GetItem(unsigned int i) { return (RoomWheelData*)WheelBase::GetItem(i + m_offset); }
void AddPerminateItem(RoomWheelData* itemdata);
int GetCurrentIndex() const { return m_iSelection; }
inline void SetRoomInfo( const RoomInfo& info) { m_roomInfo.SetRoomInfo(info); }
int GetPerminateOffset() const { return m_offset; }
void AddItem( WheelItemBaseData* itemdata );
void RemoveItem( int index );
private:
virtual WheelItemBase *MakeItem();
int m_offset;
RoomInfoDisplay m_roomInfo;
};
#endif
+18 -4
View File
@@ -59,12 +59,14 @@ void ScreenNetRoom::Init()
m_RoomWheel.SetName( "RoomWheel" );
m_RoomWheel.BeginScreen();
SET_XY( m_RoomWheel );
ON_COMMAND( m_RoomWheel );
m_RoomWheel.SetDrawOrder(1);
this->AddChild( &m_RoomWheel );
this->MoveToHead( &m_RoomWheel );
ON_COMMAND( m_RoomWheel );
m_roomInfo.Load("RoomInfoDisplay");
m_roomInfo.SetDrawOrder(1);
this->AddChild( &m_roomInfo );
this->SortByDrawOrder();
NSMAN->ReportNSSOnOff(7);
}
@@ -158,7 +160,7 @@ void ScreenNetRoom::HandleScreenMessage( const ScreenMessage SM )
for (int i = 0; i < info.numPlayers; i++)
info.players[i] = NSMAN->m_SMOnlinePacket.ReadNT();
m_RoomWheel.SetRoomInfo(info);
m_roomInfo.SetRoomInfo(info);
break;
}
}
@@ -186,6 +188,18 @@ void ScreenNetRoom::HandleScreenMessage( const ScreenMessage SM )
CreateNewRoom( m_newRoomName, m_newRoomDesc, m_newRoomPass);
}
}
else if ( SM == SM_RoomInfoRetract )
{
m_roomInfo.RetractInfoBox();
}
else if ( SM == SM_RoomInfoDeploy )
{
int i = m_RoomWheel.GetCurrentIndex() - m_RoomWheel.GetPerminateOffset();
const RoomWheelData* data = m_RoomWheel.GetItem(i);
if (data != NULL)
m_roomInfo.SetRoom(data);
}
ScreenNetSelectBase::HandleScreenMessage( SM );
}
+1
View File
@@ -58,6 +58,7 @@ private:
RString m_newRoomName, m_newRoomDesc, m_newRoomPass;
RoomWheel m_RoomWheel;
RoomInfoDisplay m_roomInfo;
};
#endif