From dd3351201273b29577155bf04af030662c7e3ed2 Mon Sep 17 00:00:00 2001 From: Josh Allen Date: Mon, 19 Sep 2005 19:08:14 +0000 Subject: [PATCH] RoomInfo box --- stepmania/src/ScreenNetRoom.cpp | 54 +++++++++++++++++++++++++++++++++ stepmania/src/ScreenNetRoom.h | 17 +++++++++++ 2 files changed, 71 insertions(+) diff --git a/stepmania/src/ScreenNetRoom.cpp b/stepmania/src/ScreenNetRoom.cpp index b04c546d0a..4f14874742 100644 --- a/stepmania/src/ScreenNetRoom.cpp +++ b/stepmania/src/ScreenNetRoom.cpp @@ -22,6 +22,8 @@ #define ROOMSPACEY THEME->GetMetricF(m_sName,"RoomsSpacingY") #define ROOMLOWERBOUND THEME->GetMetricF(m_sName,"RoomsLowerBound") #define ROOMUPPERBOUND THEME->GetMetricF(m_sName,"RoomsUpperBound") +#define INFOBOXWIDTH THEME->GetMetricF(m_sName,"InfoBoxWidth") +#define INFOBOXHEIGHT THEME->GetMetricF(m_sName,"InfoBoxHeight") AutoScreenMessage( SM_SMOnlinePack ) AutoScreenMessage( SM_BackFromRoomName ) @@ -31,6 +33,7 @@ REGISTER_SCREEN_CLASS( ScreenNetRoom ); ScreenNetRoom::ScreenNetRoom( const CString& sName ) : ScreenNetSelectBase( sName ) { GAMESTATE->FinishStage(); + m_RoomInfoState = LOCKED; } void ScreenNetRoom::Init() @@ -64,13 +67,36 @@ void ScreenNetRoom::Init() this->MoveToHead( &m_RoomWheel ); ON_COMMAND( m_RoomWheel ); + m_roomInfo.SetName("InfoBox"); + m_roomInfo.SetWidth( INFOBOXWIDTH ); + m_roomInfo.SetHeight( INFOBOXHEIGHT ); + SET_XY( m_roomInfo ); + m_roomInfo.SetHidden( true ); + OFF_COMMAND( m_roomInfo ); + this->AddChild(&m_roomInfo); + m_roomInfo.SetDrawOrder(1); + NSMAN->ReportNSSOnOff(7); } void ScreenNetRoom::Input( const InputEventPlus &input ) { if (((input.MenuI.button == MENU_BUTTON_LEFT) || (input.MenuI.button == MENU_BUTTON_RIGHT)) && (input.type == IET_RELEASE)) + { m_RoomWheel.Move(0); + m_deployDelay.Touch(); + m_RoomInfoState = CLOSED; + LOG->Info("touched"); + } + + if (((input.MenuI.button == MENU_BUTTON_LEFT) || (input.MenuI.button == MENU_BUTTON_RIGHT)) && (input.type != IET_RELEASE)) + { + if (m_roomInfo.GetHidden()) + m_roomInfo.SetHidden(false); + + RetractInfoBox(); + m_RoomInfoState = LOCKED; //Force a lock so the info box does not deploy from a quick pause in scrolling + } ScreenNetSelectBase::Input( input ); } @@ -158,6 +184,12 @@ void ScreenNetRoom::TweenOffScreen() void ScreenNetRoom::Update( float fDeltaTime ) { ScreenNetSelectBase::Update( fDeltaTime ); + + if (m_deployDelay.PeekDeltaTime() >= 1.5) + DeployInfoBox(); + + if (m_retractDelay.PeekDeltaTime() >= 5) + RetractInfoBox(); } void ScreenNetRoom::MenuStart( PlayerNumber pn ) @@ -195,13 +227,16 @@ void ScreenNetRoom::MenuLeft( PlayerNumber pn, const InputEventType type ) { if (type == IET_FIRST_PRESS) m_RoomWheel.Move(-1); + ScreenNetSelectBase::MenuLeft( pn ); } void ScreenNetRoom::MenuRight( PlayerNumber pn, const InputEventType type ) { if (type == IET_FIRST_PRESS) + { m_RoomWheel.Move(1); + } ScreenNetSelectBase::MenuRight( pn ); } @@ -267,6 +302,25 @@ void ScreenNetRoom::CreateNewRoom( const CString& rName, const CString& rDesc ) NSMAN->SendSMOnline( ); } +void ScreenNetRoom::DeployInfoBox() +{ + if (m_RoomInfoState == CLOSED) + { + SET_XY_AND_ON_COMMAND( m_roomInfo ); + m_retractDelay.Touch(); + m_RoomInfoState = OPEN; + } +} + +void ScreenNetRoom::RetractInfoBox() +{ + if (m_RoomInfoState == OPEN) + { + OFF_COMMAND( m_roomInfo ); + m_RoomInfoState = LOCKED; + } +} + #endif /* diff --git a/stepmania/src/ScreenNetRoom.h b/stepmania/src/ScreenNetRoom.h index a3ced418fd..7a3e818380 100644 --- a/stepmania/src/ScreenNetRoom.h +++ b/stepmania/src/ScreenNetRoom.h @@ -8,6 +8,13 @@ #include #include "RoomWheel.h" +enum RoomInfoState +{ + OPEN = 0, + CLOSED, + LOCKED +}; + class RoomData { public: void SetName( const CString& name ) { m_name = name; } @@ -44,6 +51,9 @@ private: void MenuLeft( PlayerNumber pn, const InputEventType type ); void MenuRight( PlayerNumber pn, const InputEventType type ); void CreateNewRoom( const CString& rName, const CString& rDesc ); + + void DeployInfoBox(); + void RetractInfoBox(); RageSound m_soundChangeSel; @@ -57,6 +67,13 @@ private: CString m_newRoomName, m_newRoomDesc; RoomWheel m_RoomWheel; + + Quad m_roomInfo; + + RageTimer m_deployDelay; + RageTimer m_retractDelay; + + RoomInfoState m_RoomInfoState; }; #endif