joinServerMenu.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. function JoinServerMenu::onWake()
  2. {
  3. // Double check the status. Tried setting this the control
  4. // inactive to start with, but that didn't seem to work.
  5. JoinServerJoinBtn.setActive(JS_serverList.rowCount() > 0);
  6. }
  7. //----------------------------------------
  8. function JoinServerMenu::query(%this)
  9. {
  10. queryMasterServer(
  11. 0, // Query flags
  12. $Client::GameTypeQuery, // gameTypes
  13. $Client::MissionTypeQuery, // missionType
  14. 0, // minPlayers
  15. 100, // maxPlayers
  16. 0, // maxBots
  17. 2, // regionMask
  18. 0, // maxPing
  19. 100, // minCPU
  20. 0 // filterFlags
  21. );
  22. }
  23. //----------------------------------------
  24. function JoinServerMenu::queryLan(%this)
  25. {
  26. queryLANServers(
  27. $pref::Net::Port, // lanPort for local queries
  28. 0, // Query flags
  29. $Client::GameTypeQuery, // gameTypes
  30. $Client::MissionTypeQuery, // missionType
  31. 0, // minPlayers
  32. 100, // maxPlayers
  33. 0, // maxBots
  34. 2, // regionMask
  35. 0, // maxPing
  36. 100, // minCPU
  37. 0 // filterFlags
  38. );
  39. }
  40. //----------------------------------------
  41. function JoinServerMenu::cancel(%this)
  42. {
  43. cancelServerQuery();
  44. JS_queryStatus.setVisible(false);
  45. }
  46. //----------------------------------------
  47. function JoinServerMenu::join(%this)
  48. {
  49. cancelServerQuery();
  50. %index = JS_serverList.getSelectedId();
  51. JoinGame(%index);
  52. }
  53. //----------------------------------------
  54. function JoinServerMenu::refresh(%this)
  55. {
  56. cancelServerQuery();
  57. %index= JS_serverList.getSelectedId();
  58. // The server info index is stored in the row along with the
  59. // rest of displayed info.
  60. if( setServerInfo( %index ) )
  61. querySingleServer( $ServerInfo::Address, 0 );
  62. }
  63. //----------------------------------------
  64. function JoinServerMenu::refreshSelectedServer( %this )
  65. {
  66. querySingleServer( $JoinGameAddress, 0 );
  67. }
  68. //----------------------------------------
  69. function JoinServerMenu::exit(%this)
  70. {
  71. cancelServerQuery();
  72. Canvas.popDialog(JoinServerMenu);
  73. }
  74. //----------------------------------------
  75. function JoinServerMenu::update(%this)
  76. {
  77. // Copy the servers into the server list.
  78. JS_queryStatus.setVisible(false);
  79. JS_serverList.clear();
  80. %sc = getServerCount();
  81. for( %i = 0; %i < %sc; %i ++ ) {
  82. setServerInfo(%i);
  83. JS_serverList.addRow( %i,
  84. $ServerInfo::Name TAB
  85. $ServerInfo::Ping TAB
  86. $ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
  87. $ServerInfo::Version TAB
  88. $ServerInfo::MissionName
  89. );
  90. }
  91. JS_serverList.sort(0);
  92. JS_serverList.setSelectedRow(0);
  93. JS_serverList.scrollVisible(0);
  94. JoinServerJoinBtn.setActive(JS_serverList.rowCount() > 0);
  95. }
  96. //----------------------------------------
  97. function onServerQueryStatus(%status, %msg, %value)
  98. {
  99. echo("ServerQuery: " SPC %status SPC %msg SPC %value);
  100. // Update query status
  101. // States: start, update, ping, query, done
  102. // value = % (0-1) done for ping and query states
  103. if (!JS_queryStatus.isVisible())
  104. JS_queryStatus.setVisible(true);
  105. switch$ (%status) {
  106. case "start":
  107. JoinServerJoinBtn.setActive(false);
  108. JoinServerQryInternetBtn.setActive(false);
  109. JS_statusText.setText(%msg);
  110. JS_statusBar.setValue(0);
  111. JS_serverList.clear();
  112. case "ping":
  113. JS_statusText.setText("Ping Servers");
  114. JS_statusBar.setValue(%value);
  115. case "query":
  116. JS_statusText.setText("Query Servers");
  117. JS_statusBar.setValue(%value);
  118. case "done":
  119. JoinServerQryInternetBtn.setActive(true);
  120. JS_queryStatus.setVisible(false);
  121. JS_status.setText(%msg);
  122. JoinServerMenu.update();
  123. }
  124. }