Pull RoomInfoDisplay out of RoomWheel
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ private:
|
||||
RString m_newRoomName, m_newRoomDesc, m_newRoomPass;
|
||||
|
||||
RoomWheel m_RoomWheel;
|
||||
RoomInfoDisplay m_roomInfo;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user