3333const int ServerMenu::NumReadouts = 24 ;
3434const int ServerMenu::NumItems = 10 ;
3535
36+ char ServerMenu::JoinableTeams[7 ] = { ' 1' ,' 1' ,' 1' ,' 1' ,' 1' ,' 1' , ' \0 ' };
37+
3638ServerMenuDefaultKey::~ServerMenuDefaultKey ()
3739{
3840 delete serverListFilterMenu;
@@ -552,6 +554,11 @@ void ServerMenu::pick()
552554 char buf[60 ];
553555 std::vector<HUDuiControl*>& listHUD = getControls ();
554556
557+ // reset JoinableTeams
558+ for (int i = 0 ; i < 6 ; ++i)
559+ JoinableTeams[i] = ' 1' ;
560+ JoinableTeams[6 ] = ' \0 ' ;
561+
555562 const uint8_t maxes [] = { ping.maxPlayers , ping.rogueMax , ping.redMax , ping.greenMax ,
556563 ping.blueMax , ping.purpleMax , ping.observerMax
557564 };
@@ -572,47 +579,65 @@ void ServerMenu::pick()
572579 ((HUDuiLabel*)listHUD[1 ])->setLabel (buf);
573580
574581 if (ping.rogueMax == 0 )
582+ {
575583 buf[0 ]=0 ;
584+ JoinableTeams[0 ]=' 0' ;
585+ }
576586 else if (ping.rogueMax >= ping.maxPlayers )
577587 sprintf (buf, " %d" , ping.rogueCount );
578588 else
579589 sprintf (buf, " %d/%d" , ping.rogueCount , ping.rogueMax );
580590 ((HUDuiLabel*)listHUD[2 ])->setLabel (buf);
581591
582592 if (ping.redMax == 0 )
593+ {
583594 buf[0 ]=0 ;
595+ JoinableTeams[1 ]=' 0' ;
596+ }
584597 else if (ping.redMax >= ping.maxPlayers )
585598 sprintf (buf, " %d" , ping.redCount );
586599 else
587600 sprintf (buf, " %d/%d" , ping.redCount , ping.redMax );
588601 ((HUDuiLabel*)listHUD[3 ])->setLabel (buf);
589602
590603 if (ping.greenMax == 0 )
604+ {
591605 buf[0 ]=0 ;
606+ JoinableTeams[2 ]=' 0' ;
607+ }
592608 else if (ping.greenMax >= ping.maxPlayers )
593609 sprintf (buf, " %d" , ping.greenCount );
594610 else
595611 sprintf (buf, " %d/%d" , ping.greenCount , ping.greenMax );
596612 ((HUDuiLabel*)listHUD[4 ])->setLabel (buf);
597613
598614 if (ping.blueMax == 0 )
615+ {
599616 buf[0 ]=0 ;
617+ JoinableTeams[3 ]=' 0' ;
618+ }
600619 else if (ping.blueMax >= ping.maxPlayers )
601620 sprintf (buf, " %d" , ping.blueCount );
602621 else
603622 sprintf (buf, " %d/%d" , ping.blueCount , ping.blueMax );
604623 ((HUDuiLabel*)listHUD[5 ])->setLabel (buf);
605624
606625 if (ping.purpleMax == 0 )
626+ {
607627 buf[0 ]=0 ;
628+ JoinableTeams[4 ]=' 0' ;
629+ }
608630 else if (ping.purpleMax >= ping.maxPlayers )
609631 sprintf (buf, " %d" , ping.purpleCount );
610632 else
611633 sprintf (buf, " %d/%d" , ping.purpleCount , ping.purpleMax );
612634 ((HUDuiLabel*)listHUD[6 ])->setLabel (buf);
613635
614636 if (ping.observerMax == 0 )
637+ {
615638 buf[0 ]=0 ;
639+ JoinableTeams[5 ]=' 0' ;
640+ }
616641 else if (ping.observerMax >= ping.maxPlayers )
617642 sprintf (buf, " %d" , ping.observerCount );
618643 else
@@ -810,6 +835,8 @@ void ServerMenu::execute()
810835 info->serverName [sizeof (info->serverName ) - 1 ] = ' \0 ' ;
811836 info->serverPort = ntohs ((unsigned short )
812837 serverList.getServers ()[selectedIndex].ping .serverId .port );
838+ strncpy (info->serverAllowedTeams , JoinableTeams, sizeof (info->serverAllowedTeams ) - 1 );
839+ info->serverAllowedTeams [sizeof (info->serverAllowedTeams ) - 1 ] = ' \0 ' ;
813840
814841 // all done
815842 HUDDialogStack::get ()->pop ();
0 commit comments