var is_connected = false; var global_instance; var global_memory; var scale = 2; window.onload = () => { var canvas = document.getElementById("demo-canvas"); canvas.onmousemove = (e) => { var r = canvas.getBoundingClientRect(); wasm_function('set_mouse')(e.clientX - r.x, e.clientY - r.y); } var pengers_img = document.getElementsByClassName('penger-img'); for (var i = 0; i < pengers_img.length; i++) { pengers_img[i].onclick = (e) => { var id = e.target.getAttribute('penger-id'); wasm_set_variable('id', id) connection.send('{"name": "id", "value": '+id+'}'); }; } var play = document.getElementById('play'); var pseudo = document.getElementById('pseudo'); pseudo.onchange = play.onclick = () => { var pseudo = document.getElementById('pseudo').value; if (pseudo == "") { is_connected = false; wasm_set_variable('nb_players', 0); document.getElementById('players').innerHTML = "Not connected"; document.getElementById('map-name').innerText = "Offline Map"; document.getElementById('map-time').innerText = "-1"; wasm_function("set_default_map")(); wasm_function('reset_coins')(); } connection.send('{"name": "pseudo", "value": "'+pseudo+'"}'); }; }; function wasm_variable(name) { return global_memory[global_instance.exports[name].value / 4]; } function wasm_set_variable(name, val) { return global_memory[global_instance.exports[name].value / 4] = val; } function wasm_function(name) { return global_instance.exports[name]; } var WS_URL = ""; if (document.URL.includes("localhost") ) { WS_URL = document.URL.replace("http", "ws").replace("6969", "4242") } else { WS_URL = "wss://ws.penger.party/"; } const connection = new WebSocket(WS_URL); // const connection = new WebSocket(document.URL.replace("http", "ws")); connection.onopen = (e) => { console.log("connection to server opened"); }; connection.onmessage = (e) => { var req = JSON.parse(e.data); if (req.name == 'pseudo') { if (req.value != "") is_connected = true; document.getElementById('players').innerHTML = req.value; var pengers_img = document.getElementsByClassName('penger-img'); var list = []; for (var i = 0; i < pengers_img.length; i++) { list[list.length] = pengers_img[i].src; } var players_img = document.getElementsByClassName('players-img'); for (var i = 0; i < players_img.length; i++) { players_img[i].src = list[players_img[i].getAttribute('penger-id')]; } } else if (req.name == "rid") { my_rid = req.value; } else if (req.name == "pos") { var players = req.value; for (var i = 0; i < players.length; i++) { var player = players[i]; if (player.rid == my_rid) continue; wasm_function('draw_player')(player.rid, player.id, player.x, player.y, player.dir); } } else if (req.name == "map") { var map = req.value; document.getElementById("map-name").innerText = map.name; map_next_at = map.next_at != undefined ? map.next_at : (Date.now()+30*1000); wasm_function('reset_collisions')(); for (var i = 0; i < map.collisions.length; i++) { wasm_function('add_collisions')( map.collisions[i].x, map.collisions[i].y, map.collisions[i].width, map.collisions[i].height ); } wasm_function('reset_coins')(); for (var i = 0; i < map.coins.length; i++) { wasm_function('add_coin')( map.coins[i].x, map.coins[i].y ); } } else if (req.name == "leaderboard") { var tod = req.value.today; var tot = req.value.total; var el_tod = document.getElementById("leader-today"); var el_tot = document.getElementById("leader-total"); el_tod.innerHTML = ""; el_tot.innerHTML = ""; for (var i = 0; i < tod.length; i++) { el_tod.innerHTML += "