(function () { $(document).ready(function () { class MWCallbackI extends MW.MWCallback { message(data) { var username = data.split(" ")[0]; if (data.split(" ")[1] == "left") { if (map.players[username]) { map.players[username].deleted = true; $("#chatOutput").html($("#chatOutput").html() + "[" + [username] + "]" + " left the game.
"); $("#chatOutput").scrollTop($("#chatOutput").get(0).scrollHeight); } } else if (data.split(" ")[1] == "chat") { $("#chatOutput").html($("#chatOutput").html() + "[" + [username] + "]" + ": " + data.replace(username + " chat ", "") + "
"); $("#chatOutput").scrollTop($("#chatOutput").get(0).scrollHeight); } else { if (username != userName) { if (!map.players[username]) { map.players[username] = {}; } let jsonData = JSON.parse(data.replace(username + " ", "")) if (!map.players[username].item) { map.players[username].deleted = false; map.players[username].landscapeTexture = new PIXI.Texture.fromImage(map.player.url); map.players[username].texture = new PIXI.Texture(map.players[username].landscapeTexture); map.players[username].item = new PIXI.Sprite(map.players[username].texture); map.players[username].nameStyle = new PIXI.TextStyle({ fontFamily: 'komtit', fontSize: 24, fill: ['#FFF1E1', '#FFF1E1'], // gradient stroke: '#35130B', strokeThickness: 5, dropShadow: true, dropShadowColor: '#724833', dropShadowBlur: 4, dropShadowAngle: Math.PI / 2, dropShadowDistance: 1, wordWrap: false, wordWrapWidth: 440, padding: 20 }); map.players[username].username = username; map.players[username].name = new PIXI.Text([username], map.players[username].nameStyle); $("#chatOutput").html($("#chatOutput").html() + "[" + [username] + "]" + " join the game.
"); $("#chatOutput").scrollTop($("#chatOutput").get(0).scrollHeight); } map.players[username].px = jsonData.px; map.players[username].py = jsonData.py; map.players[username].direction = jsonData.direction; map.players[username].state = jsonData.state; map.players[username].scale = jsonData.scale; map.players[username].score = jsonData.score; } } } } const State = { Disconnected: 0, Connecting: 1, Connected: 2 }; let state = State.Disconnected; async function runWithSession(router, session) { try { const [timeout, category, adapter] = await Promise.all( [ router.getACMTimeout(), router.getCategoryForClient(), router.ice_getCommunicator().createObjectAdapterWithRouter("", router) ]); const connection = router.ice_getCachedConnection(); if (timeout > 0) { connection.setACM(timeout, undefined, Ice.ACMHeartbeat.HeartbeatAlways); } connection.setCloseCallback(() => error("Connection lost")); const callback = MW.MWCallbackPrx.uncheckedCast( adapter.add(new MWCallbackI(), new Ice.Identity("callback", category))); await session.setCallback(callback); state = State.Connected; await new Promise( (resolve, reject) => { setTimeout(function () { run(session); }, 2000); $("#chatInput").keypress( e => { if (e.which === 13) { (async function () { const message = $(e.currentTarget).val(); $(e.currentTarget).val(""); try { await session.sendPosition("chat " + message); } catch (ex) { reject(ex); } }()); return false; } }); $("#signout").click(() => { connection.setCloseCallback(null); resolve(); }); }); await router.destroySession(); } finally { state = State.Disconnected; } } async function signin() { let communicator; try { state = State.Connecting; const port = "4064"; if (window.location.hostname == "172.100.0.100") { var hostname = "172.100.0.102"; } else if (window.location.hostname == "192.168.1.51") { var hostname = "192.168.1.51"; } else { var hostname = "83.57.124.192"; } const proxy = "MWServer/router:ws -p " + port + " -h " + hostname; const initData = new Ice.InitializationData(); initData.properties = Ice.createProperties(); initData.properties.setProperty("Ice.Default.Router", proxy); communicator = Ice.initialize(initData); const router = await Glacier2.RouterPrx.checkedCast(communicator.getDefaultRouter()); const session = await router.createSession(userName, "pass"); await runWithSession(router, MW.MWSessionPrx.uncheckedCast(session)); } catch (ex) { if (ex instanceof Glacier2.PermissionDeniedException) { await error("permission denied:\n" + ex.reason); } else if (ex instanceof Glacier2.CannotCreateSessionException) { await error("cannot create session:\n" + ex.reason); } else if (ex instanceof Ice.ConnectFailedException) { await error("connection to server failed"); } else { await error(ex.toString()); } } finally { if (communicator) { await communicator.destroy(); } } } async function error(message) { console.log(message); state = State.Disconnected; } signin(); }); }());