joinServer.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. 'use strict';
  2. var game = Atomic.game;
  3. var view = game.uiView;
  4. var UI = Atomic.UI;
  5. var UIWindow = Atomic.UIWindow;
  6. var window;
  7. var clientToServerConnection;
  8. var remotePlayerClient;
  9. function closeWindow() {
  10. if (window)
  11. window.die();
  12. window = null;
  13. }
  14. function connectToServer(server) {
  15. game.createScene2D();
  16. print(server);
  17. // Disconnect from master
  18. Atomic.network.clientDisconnectFromMaster();
  19. Atomic.network.clientConnectToServerViaMaster(server.connectionId,
  20. server.internalIP, server.internalPort,
  21. server.externalIP, server.externalUDPPort,
  22. game.scene);
  23. }
  24. exports.init = function(onClose) {
  25. window = new UIWindow();
  26. window.settings = Atomic.UI.WINDOW_SETTINGS_TITLEBAR;
  27. window.text = "Join Server";
  28. window.load("UI/joinServer.ui.txt");
  29. Atomic.network.clientConnectToMaster("52.37.100.204", 41234);
  30. Atomic.network.subscribeToEvent("ServerConnected", function(data) {
  31. print("Client Connected to server!");
  32. clientToServerConnection = Atomic.network.getServerConnection();
  33. var node = game.scene.createChild("RemotePlayerClient");
  34. remotePlayerClient = node.createJSComponent("Components/RemotePlayerClient.js");
  35. remotePlayerClient.init(clientToServerConnection);
  36. clientToServerConnection.sendStringMessage('ready');
  37. });
  38. // Build select list
  39. var serverSelect = new Atomic.UISelectList();
  40. var serverList;
  41. var lp = new Atomic.UILayoutParams();
  42. lp.minWidth = 300;
  43. lp.minHeight = 250;
  44. lp.maxHeight = 250;
  45. serverSelect.layoutParams = lp;
  46. window.setSize(200,350);
  47. view.addChild(window);
  48. window.center();
  49. Atomic.network.subscribeToEvent("MasterConnectionReady", function() {
  50. Atomic.network.requestServerListFromMaster();
  51. });
  52. Atomic.network.subscribeToEvent("MasterServerMessage", function(message) {
  53. print('In Javascript, MasterServerMessage received');
  54. var msg = JSON.parse(message['data']);
  55. if (msg.cmd === 'serverList') {
  56. serverList = JSON.parse(msg.servers);
  57. var serverContainer = window.getWidget("servercontainer");
  58. serverContainer.addChild(serverSelect);
  59. var serverSelectSource = new Atomic.UISelectItemSource();
  60. for (var i = 0; i < serverList.length; i++) {
  61. var server = serverList[i];
  62. print(server.internalIP);
  63. print(server.internalPort);
  64. serverSelectSource.addItem(new Atomic.UISelectItem(server.serverName, i));
  65. }
  66. serverSelect.setSource(serverSelectSource);
  67. }
  68. });
  69. Atomic.network.subscribeToEvent("ServerDisconnected", function() {
  70. print("Lost connection to server");
  71. remotePlayerClient.cleanup();
  72. Atomic.destroy(game.scene);
  73. var ui = require("./ui");
  74. ui.showMainMenu();
  75. });
  76. window.getWidget("cancel").onClick = function () {
  77. closeWindow();
  78. onClose();
  79. }
  80. window.getWidget("ok").onClick = function () {
  81. var selectedItemId = serverSelect.getSelectedItemID();
  82. var server = serverList[selectedItemId];
  83. closeWindow();
  84. onClose();
  85. var ui = require("./ui");
  86. ui.closeMainMenu();
  87. connectToServer(server);
  88. }
  89. }
  90. exports.shutdown = function() {
  91. closeWindow();
  92. }