diff --git a/js/game.js b/js/game.js index 97a7273..1599af5 100644 --- a/js/game.js +++ b/js/game.js @@ -1,8 +1,9 @@ Renderer = new Render("canvas", "./assets/map/map7_recadr.png"); Inp = new Input("canvas"); let Net = new Network("ws://129.151.227.50:9600/"); -Net.connect(); + +let playerId; //id of client player let players = [new Player(1, 100, 50, "rubiks"), new Player(2, 500, 70, "atsuyo"), new Player(3, 600, 70, "vincent"), @@ -10,6 +11,10 @@ let players = [new Player(1, 100, 50, "rubiks"), new Player(5, 200, 30, "leroux"), new Player(6, 700, 700, "lele")]; + +Net.connect(); //connect to server, create a player, and retrieve all players info + + players[0].retrieveServerInfo(1,100,50,3); players[1].dir=5; players[1].visibleDir=5; diff --git a/js/network.js b/js/network.js index c4c9883..91ebe02 100644 --- a/js/network.js +++ b/js/network.js @@ -27,16 +27,11 @@ class Network{ } - init(){ - this.socket.send(JSON.stringify({type: "connect"})); - } - connect(){ this.socket = new WebSocket(this.adress); this.socket.addEventListener('open', (e)=>{ //connected to server this.connected = true; - this.init(); }); this.socket.addEventListener('message', (e)=>{ this.message(JSON.parse(e.data)); diff --git a/server/node_modules/.package-lock.json b/server/node_modules/.package-lock.json index 89d2534..1b909ed 100644 --- a/server/node_modules/.package-lock.json +++ b/server/node_modules/.package-lock.json @@ -1,7 +1,7 @@ { "name": "gtavi", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "node_modules/@socket.io/component-emitter": { diff --git a/server/server.js b/server/server.js index f506069..829fc92 100644 --- a/server/server.js +++ b/server/server.js @@ -14,50 +14,59 @@ app.get('/', (req, res) => { res.send('Grand Tabernacle Auto VI'); }); -wss.on('connection', (socket) => { +function createNewPlayer(socket){ + var obj = { + id: playerCount, + x: 0, + y: 0, + name: playerCount.toString() + "joueur" + } + + socket.send(JSON.stringify({ + type: "connect", + data: { + playerId: obj.id, + players: players + } + })) + + broadcast(JSON.stringify({ + type: "newplayer", + data: obj + }), obj.id); + + socket.id = obj.id; connections.add(socket); + players.push(obj); + playerCount++; +} + +wss.on('connection', (socket) => { + //create new player, send informations to new player and broadcast new player for all + createNewPlayer(socket); socket.on('message', (message) => { message = JSON.parse(message); - if (message.type == "connect") { - var obj = { - id: playerCount, - x: 0, - y: 0, - name: playerCount.toString() + "joueur" - } - players.push(obj) - playerCount++; - - socket.send(JSON.stringify({ - type: "connect", - data: { - playerId: obj.id, - players: players - } - })) - - broadcast(JSON.stringify({ - type: "newplayer", - data: obj - })); - - - } else if (message.type == "ping") { + if (message.type == "ping") { socket.send("pong"); - } else { - broadcast(JSON.stringify(message)); + } else if(message.type=="update") { + broadcast(JSON.stringify(message), socket.id); } }); socket.on('close', () => { + for (var i = players.length - 1; i >= 0; i--) { + if(players[i].id==socket.id){ + players.splice(i, 1); + } + } connections.delete(socket); }); }); -function broadcast(message) { +function broadcast(message, exceptId = -1) { connections.forEach((socket) => { - if (socket.readyState === WebSocket.OPEN) { + if (socket.readyState === WebSocket.OPEN && socket.id!=exceptId) { socket.send(message); } }); diff --git a/server/testsite/app.js b/server/testsite/app.js index 219aa82..9657581 100644 --- a/server/testsite/app.js +++ b/server/testsite/app.js @@ -1,4 +1,4 @@ -const socket = new WebSocket('ws://129.151.227.50:9600/'); +const socket = new WebSocket('ws://localhost:9600'); //ws://129.151.227.50:9600 var time = new Date(); socket.addEventListener('open', (event) => { console.log('connecté'); @@ -16,14 +16,11 @@ socket.addEventListener('close', (event) => { function main(){ time = new Date() - socket.send(JSON.stringify({type: "connect"})); socket.send(JSON.stringify({ type: "update", data: { - id: 0, - x: 0, - y: 0 + ok: 'ok' } - })) + })); }