| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 'use strict';
- var game = Atomic.game;
- var view = game.uiView;
- var UI = Atomic.UI;
- var UIWindow = Atomic.UIWindow;
- var window;
- var clientToServerConnection;
- var remotePlayerClient;
- function closeWindow() {
- if (window)
- window.die();
- window = null;
- }
- function connectToServer(server) {
- game.createScene2D();
- print(server);
- // Disconnect from master
- Atomic.masterServerClient.disconnectFromMaster();
- Atomic.masterServerClient.connectToServerViaMaster(server.connectionId,
- server.internalIP, server.internalPort,
- server.externalIP, server.externalUDPPort,
- game.scene);
- }
- exports.init = function(onClose) {
- window = new UIWindow();
- window.settings = Atomic.UI.WINDOW_SETTINGS_TITLEBAR;
- window.text = "Join Server";
- window.load("UI/joinServer.ui.txt");
- var masterServerIP = Atomic.localStorage.getMasterServerIP();
- var masterServerPort = Atomic.localStorage.getMasterServerPort();
- Atomic.masterServerClient.connectToMaster(masterServerIP, masterServerPort);
- Atomic.network.subscribeToEvent("ServerConnected", function(data) {
- print("Client Connected to server!");
- clientToServerConnection = Atomic.network.getServerConnection();
- var node = game.scene.createChild("RemotePlayerClient");
- remotePlayerClient = node.createJSComponent("Components/RemotePlayerClient.js");
- remotePlayerClient.init(clientToServerConnection);
- clientToServerConnection.sendStringMessage('ready');
- });
- // Build select list
- var serverSelect = new Atomic.UISelectList();
- var serverList;
- var lp = new Atomic.UILayoutParams();
- lp.minWidth = 300;
- lp.minHeight = 250;
- lp.maxHeight = 250;
- serverSelect.layoutParams = lp;
- window.setSize(200,350);
- view.addChild(window);
- window.center();
- Atomic.masterServerClient.subscribeToEvent("MasterConnectionReady", function() {
- Atomic.masterServerClient.requestServerListFromMaster();
- });
- Atomic.masterServerClient.subscribeToEvent("MasterServerMessage", function(message) {
- print('In Javascript, MasterServerMessage received');
- var msg = JSON.parse(message['data']);
- if (msg.cmd === 'serverList') {
- serverList = JSON.parse(msg.servers);
- var serverContainer = window.getWidget("servercontainer");
- serverContainer.addChild(serverSelect);
- var serverSelectSource = new Atomic.UISelectItemSource();
- for (var i = 0; i < serverList.length; i++) {
- var server = serverList[i];
- print(server.internalIP);
- print(server.internalPort);
- serverSelectSource.addItem(new Atomic.UISelectItem(server.serverName, i));
- }
- serverSelect.setSource(serverSelectSource);
- }
- });
- Atomic.network.subscribeToEvent("ServerDisconnected", function() {
- print("Lost connection to server");
- remotePlayerClient.cleanup();
- Atomic.destroy(game.scene);
- var ui = require("./ui");
- ui.showMainMenu();
- });
- window.getWidget("cancel").onClick = function () {
- closeWindow();
- onClose();
- };
- window.getWidget("ok").onClick = function () {
- var selectedItemId = serverSelect.getSelectedItemID();
- var server = serverList[selectedItemId];
- closeWindow();
- onClose();
- var ui = require("./ui");
- ui.closeMainMenu();
- connectToServer(server);
- };
- };
- exports.shutdown = function() {
- closeWindow();
- };
|