From ab685bebbf122db14b4b659f2763c9e13e5ae699 Mon Sep 17 00:00:00 2001 From: Josh Allen Date: Sun, 30 Jan 2005 21:14:21 +0000 Subject: [PATCH] Fix crash when selecting room when list is empty Fix graphical glitches when tweening --- stepmania/src/ScreenNetRoom.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/stepmania/src/ScreenNetRoom.cpp b/stepmania/src/ScreenNetRoom.cpp index 61a65aba72..4049fd559c 100644 --- a/stepmania/src/ScreenNetRoom.cpp +++ b/stepmania/src/ScreenNetRoom.cpp @@ -174,12 +174,15 @@ void ScreenNetRoom::MenuStart( PlayerNumber pn ) { switch (m_SelectMode) { case SelectRooms: - NSMAN->m_SMOnlinePacket.ClearPacket(); - NSMAN->m_SMOnlinePacket.Write1( 1 ); - NSMAN->m_SMOnlinePacket.Write1( 1 ); //Type (enter a room) - NSMAN->m_SMOnlinePacket.WriteNT( m_RoomList[m_iRoomPlace].GetText() ); - NSMAN->SendSMOnline( ); - ScreenNetSelectBase::MenuStart( pn ); + if ((m_iRoomPlace < m_RoomList.size())&&(m_iRoomPlace >= 0)) + { + NSMAN->m_SMOnlinePacket.ClearPacket(); + NSMAN->m_SMOnlinePacket.Write1( 1 ); + NSMAN->m_SMOnlinePacket.Write1( 1 ); //Type (enter a room) + NSMAN->m_SMOnlinePacket.WriteNT( m_RoomList[m_iRoomPlace].GetText() ); + NSMAN->SendSMOnline( ); + ScreenNetSelectBase::MenuStart( pn ); + } break; case SelectMakeRoom: VIRTUALKB.Reset(VKMODE_PROFILE); // allow all characters @@ -275,8 +278,10 @@ void ScreenNetRoom::UpdateRoomsList() break; } this->AddChild( &m_RoomList[i] ); - if (cy > ROOMLOWERBOUND) + if (cy > ROOMLOWERBOUND) { + m_RoomList[i].StopTweening(); COMMAND(m_RoomList[i], "RoomsOff"); + } cx+=ROOMSPACEX; cy+=ROOMSPACEY; } @@ -293,6 +298,7 @@ void ScreenNetRoom::CreateNewRoom( const CString& rName, const CString& rDesc ) void ScreenNetRoom::ShiftRoomsUp() { for (unsigned int x = 0; x < m_RoomList.size(); ++x) { + m_RoomList[x].StopTweening(); if ((m_RoomList[x].GetY()-ROOMSPACEY >= ROOMUPPERBOUND)&&(m_RoomList[x].GetY()-ROOMSPACEY < ROOMLOWERBOUND)) { COMMAND(m_RoomList[x], "ShiftUp"); COMMAND(m_RoomList[x], "RoomsOn"); @@ -307,6 +313,7 @@ void ScreenNetRoom::ShiftRoomsDown() { for( unsigned x = 0; x < m_RoomList.size(); ++x ) { + m_RoomList[x].StopTweening(); if ((m_RoomList[x].GetY()+ROOMSPACEY >= ROOMUPPERBOUND)&&(m_RoomList[x].GetY()+ROOMSPACEY < ROOMLOWERBOUND)) { COMMAND(m_RoomList[x], "ShiftDown"); COMMAND(m_RoomList[x], "RoomsOn");