home *** CD-ROM | disk | FTP | other *** search
/ 3D Game Programming All in One / 3D Game Programming All in One Disc.iso / 3D2E / RESOURCES / KOOB / control / client / misc / serverscreen.cs < prev    next >
Encoding:
Text File  |  2006-09-25  |  2.5 KB  |  98 lines

  1. //============================================================================
  2. // control/client/misc/serverscreen.cs
  3. //
  4. // Server query code module for 3DGPAI1 Koob23 sample game
  5. //
  6. // Copyright (c) 2003, 2006 by Kenneth C.  Finney.
  7. //============================================================================
  8. function ServerScreen::onWake()
  9. {
  10.    JoinServer.SetActive(ServerList.rowCount() > 0);
  11.    ServerScreen.queryLan();
  12. }
  13.  
  14.  
  15. function ServerScreen::QueryLan(%this)
  16. {
  17.    QueryLANServers(
  18.       28000,      // lanPort for local queries
  19.       0,          // Query flags
  20.       $Client::GameTypeQuery,       // gameTypes
  21.       $Client::MissionTypeQuery,    // missionType
  22.       0,          // minPlayers
  23.       100,        // maxPlayers
  24.       0,          // maxBots
  25.       2,          // regionMask
  26.       0,          // maxPing
  27.       100,        // minCPU
  28.       0           // filterFlags
  29.       );
  30. }
  31.  
  32. function ServerScreen::Cancel(%this)
  33. {
  34.    CancelServerQuery();
  35. }
  36.  
  37. function ServerScreen::Close(%this)
  38. {
  39.    CancelServerQuery();
  40.    Canvas.SetContent(MenuScreen);
  41. }
  42.  
  43. function ServerScreen::Update(%this)
  44. {
  45.    QueryStatus.SetVisible(false);
  46.    ServerList.Clear();
  47.    %sc = GetServerCount();
  48.    for (%i = 0; %i < %sc; %i++)
  49.    {
  50.       SetServerInfo(%i);
  51.       ServerList.AddRow(%i,
  52.          ($ServerInfo::Password? "Yes": "No") TAB
  53.          $ServerInfo::Name TAB
  54.          $ServerInfo::Ping TAB
  55.          $ServerInfo::PlayerCount @ "/" @ $ServerInfo::MaxPlayers TAB
  56.          $ServerInfo::Version TAB
  57.          $ServerInfo::GameType TAB
  58.          %i);
  59.    }
  60.    ServerList.Sort(0);
  61.    ServerList.SetSelectedRow(0);
  62.    ServerList.ScrollVisible(0);
  63.    JoinServer.SetActive(ServerList.RowCount() > 0);
  64. }
  65.  
  66. function ServerScreen::Join(%this)
  67. {
  68.    CancelServerQuery();
  69.    %id = ServerList.GetSelectedId();
  70.    %index = GetField(ServerList.GetRowTextById(%id),6);
  71.    if (SetServerInfo(%index)) {
  72.       %conn = new GameConnection(ServerConnection);
  73.       %conn.SetConnectArgs($pref::Player::Name);
  74.       %conn.SetJoinPassword($Client::Password);
  75.       %conn.Connect($ServerInfo::Address);
  76.    }
  77. }
  78.  
  79. function onServerQueryStatus(%status, %msg, %value)
  80. {
  81.    if (!QueryStatus.IsVisible())
  82.       QueryStatus.SetVisible(true);
  83.  
  84.    switch$ (%status) {
  85.       case "start":
  86.  
  87.       case "ping":
  88.          StatusText.SetText("Ping Servers");
  89.          StatusBar.SetValue(%value);
  90.  
  91.       case "query":
  92.  
  93.       case "done":
  94.          QueryStatus.SetVisible(false);
  95.          ServerScreen.Update();
  96.    }
  97. }
  98.