joinServerMenu.tscript 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. JoinServerButtonHolder.setActive();
  7. JoinServerMenuInputHandler.setFirstResponder();
  8. }
  9. function JoinServerButtonHolder::onWake(%this)
  10. {
  11. %this-->joinButton.set("btn_start", "Return", "Join", "JoinServerMenu.join();");
  12. %this-->backButton.set("btn_b", "Escape", "Back", "JoinServerMenu.backOut();");
  13. %this-->refreshButton.set("btn_y", "R", "Refresh", "JoinServerMenu.refresh();");
  14. %this-->queryLANButton.set("btn_a", "Q", "Query LAN", "JoinServerMenu.queryLan();");
  15. %this-->queryInternetButton.set("btn_x", "E", "Query Internet", "JoinServerMenu.query();");
  16. }
  17. function JoinServerMenuInputHandler::onInputEvent(%this, %device, %action, %state)
  18. {
  19. if(%state)
  20. $activeMenuButtonContainer.processInputs(%device, %action);
  21. }
  22. //----------------------------------------
  23. function JoinServerMenu::query(%this)
  24. {
  25. queryMasterServer(
  26. 0, // Query flags
  27. $Client::GameTypeQuery, // gameTypes
  28. $Client::MissionTypeQuery, // missionType
  29. 0, // minPlayers
  30. 100, // maxPlayers
  31. 0, // maxBots
  32. 2, // regionMask
  33. 0, // maxPing
  34. 100, // minCPU
  35. 0 // filterFlags
  36. );
  37. }
  38. //----------------------------------------
  39. function JoinServerMenu::queryLan(%this)
  40. {
  41. queryLANServers(
  42. $pref::Net::Port, // lanPort for local queries
  43. 0, // Query flags
  44. $Client::GameTypeQuery, // gameTypes
  45. $Client::MissionTypeQuery, // missionType
  46. 0, // minPlayers
  47. 100, // maxPlayers
  48. 0, // maxBots
  49. 2, // regionMask
  50. 0, // maxPing
  51. 100, // minCPU
  52. 0 // filterFlags
  53. );
  54. }
  55. //----------------------------------------
  56. function JoinServerMenu::cancel(%this)
  57. {
  58. cancelServerQuery();
  59. JS_queryStatus.setVisible(false);
  60. }
  61. //----------------------------------------
  62. function JoinServerMenu::join(%this)
  63. {
  64. cancelServerQuery();
  65. %index = JS_serverList.getSelectedId();
  66. JoinGame(%index);
  67. }
  68. //----------------------------------------
  69. function JoinServerMenu::refresh(%this)
  70. {
  71. cancelServerQuery();
  72. %index= JS_serverList.getSelectedId();
  73. // The server info index is stored in the row along with the
  74. // rest of displayed info.
  75. if( setServerInfo( %index ) )
  76. querySingleServer( $ServerInfo::Address, 0 );
  77. }
  78. //----------------------------------------
  79. function JoinServerMenu::refreshSelectedServer( %this )
  80. {
  81. querySingleServer( $JoinGameAddress, 0 );
  82. }
  83. //----------------------------------------
  84. function JoinServerMenu::backOut(%this)
  85. {
  86. cancelServerQuery();
  87. Canvas.popDialog(JoinServerMenu);
  88. if(isObject(JoinServerMenu.returnGui) && JoinServerMenu.returnGui.isMethod("onReturnTo"))
  89. JoinServerMenu.returnGui.onReturnTo();
  90. }
  91. //----------------------------------------
  92. function JoinServerMenu::update(%this)
  93. {
  94. // Copy the servers into the server list.
  95. JS_queryStatus.setVisible(false);
  96. JS_serverList.clear();
  97. %sc = getServerCount();
  98. for( %i = 0; %i < %sc; %i ++ ) {
  99. setServerInfo(%i);
  100. JS_serverList.addRow( %i,
  101. $ServerInfo::Name TAB
  102. $ServerInfo::Ping TAB
  103. $ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
  104. $ServerInfo::Version TAB
  105. $ServerInfo::MissionName
  106. );
  107. }
  108. JS_serverList.sort(0);
  109. JS_serverList.setSelectedRow(0);
  110. JS_serverList.scrollVisible(0);
  111. JoinServerJoinBtn.setActive(JS_serverList.rowCount() > 0);
  112. }
  113. //----------------------------------------
  114. function onServerQueryStatus(%status, %msg, %value)
  115. {
  116. echo("ServerQuery: " SPC %status SPC %msg SPC %value);
  117. // Update query status
  118. // States: start, update, ping, query, done
  119. // value = % (0-1) done for ping and query states
  120. if (!JS_queryStatus.isVisible())
  121. JS_queryStatus.setVisible(true);
  122. switch$ (%status) {
  123. case "start":
  124. JoinServerJoinBtn.setActive(false);
  125. JoinServerQryInternetBtn.setActive(false);
  126. JS_statusText.setText(%msg);
  127. JS_statusBar.setValue(0);
  128. JS_serverList.clear();
  129. case "ping":
  130. JS_statusText.setText("Ping Servers");
  131. JS_statusBar.setValue(%value);
  132. case "query":
  133. JS_statusText.setText("Query Servers");
  134. JS_statusBar.setValue(%value);
  135. case "done":
  136. JoinServerQryInternetBtn.setActive(true);
  137. JS_queryStatus.setVisible(false);
  138. JS_status.setText(%msg);
  139. JoinServerMenu.update();
  140. }
  141. }