Fix crash when selecting room when list is empty

Fix graphical glitches when tweening
This commit is contained in:
Josh Allen
2005-01-30 21:14:21 +00:00
parent b98c3b8661
commit ab685bebbf
+14 -7
View File
@@ -174,12 +174,15 @@ void ScreenNetRoom::MenuStart( PlayerNumber pn )
{ {
switch (m_SelectMode) { switch (m_SelectMode) {
case SelectRooms: case SelectRooms:
NSMAN->m_SMOnlinePacket.ClearPacket(); if ((m_iRoomPlace < m_RoomList.size())&&(m_iRoomPlace >= 0))
NSMAN->m_SMOnlinePacket.Write1( 1 ); {
NSMAN->m_SMOnlinePacket.Write1( 1 ); //Type (enter a room) NSMAN->m_SMOnlinePacket.ClearPacket();
NSMAN->m_SMOnlinePacket.WriteNT( m_RoomList[m_iRoomPlace].GetText() ); NSMAN->m_SMOnlinePacket.Write1( 1 );
NSMAN->SendSMOnline( ); NSMAN->m_SMOnlinePacket.Write1( 1 ); //Type (enter a room)
ScreenNetSelectBase::MenuStart( pn ); NSMAN->m_SMOnlinePacket.WriteNT( m_RoomList[m_iRoomPlace].GetText() );
NSMAN->SendSMOnline( );
ScreenNetSelectBase::MenuStart( pn );
}
break; break;
case SelectMakeRoom: case SelectMakeRoom:
VIRTUALKB.Reset(VKMODE_PROFILE); // allow all characters VIRTUALKB.Reset(VKMODE_PROFILE); // allow all characters
@@ -275,8 +278,10 @@ void ScreenNetRoom::UpdateRoomsList()
break; break;
} }
this->AddChild( &m_RoomList[i] ); this->AddChild( &m_RoomList[i] );
if (cy > ROOMLOWERBOUND) if (cy > ROOMLOWERBOUND) {
m_RoomList[i].StopTweening();
COMMAND(m_RoomList[i], "RoomsOff"); COMMAND(m_RoomList[i], "RoomsOff");
}
cx+=ROOMSPACEX; cx+=ROOMSPACEX;
cy+=ROOMSPACEY; cy+=ROOMSPACEY;
} }
@@ -293,6 +298,7 @@ void ScreenNetRoom::CreateNewRoom( const CString& rName, const CString& rDesc )
void ScreenNetRoom::ShiftRoomsUp() { void ScreenNetRoom::ShiftRoomsUp() {
for (unsigned int x = 0; x < m_RoomList.size(); ++x) { 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)) { if ((m_RoomList[x].GetY()-ROOMSPACEY >= ROOMUPPERBOUND)&&(m_RoomList[x].GetY()-ROOMSPACEY < ROOMLOWERBOUND)) {
COMMAND(m_RoomList[x], "ShiftUp"); COMMAND(m_RoomList[x], "ShiftUp");
COMMAND(m_RoomList[x], "RoomsOn"); COMMAND(m_RoomList[x], "RoomsOn");
@@ -307,6 +313,7 @@ void ScreenNetRoom::ShiftRoomsDown()
{ {
for( unsigned x = 0; x < m_RoomList.size(); ++x ) 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)) { if ((m_RoomList[x].GetY()+ROOMSPACEY >= ROOMUPPERBOUND)&&(m_RoomList[x].GetY()+ROOMSPACEY < ROOMLOWERBOUND)) {
COMMAND(m_RoomList[x], "ShiftDown"); COMMAND(m_RoomList[x], "ShiftDown");
COMMAND(m_RoomList[x], "RoomsOn"); COMMAND(m_RoomList[x], "RoomsOn");