From 6aa6a9133dfc6c3f5e489043dbe5aa268e46a7c9 Mon Sep 17 00:00:00 2001 From: "julien.bouin.etu" <julien.bouin.etu@univ-lille.fr> Date: Sat, 6 Apr 2024 17:23:59 +0200 Subject: [PATCH] ajout du mode spectateur quand le joueur perd --- client/src/avatar.js | 6 ++++++ client/src/main.js | 6 ++++++ server/index.js | 24 +++++++++++++----------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/client/src/avatar.js b/client/src/avatar.js index bcaa9e7..424f844 100644 --- a/client/src/avatar.js +++ b/client/src/avatar.js @@ -14,6 +14,7 @@ export class Avatar extends Entite { momentumY; statut; statutTime; + spectateur; constructor(nom, id, canvasSize) { super(0, 0, new Hitbox(68, 145, 0, 0), null); @@ -28,6 +29,11 @@ export class Avatar extends Entite { this.momentumY = 0; this.canvasSize = canvasSize; this.id = id; + this.spectateur = false; + } + + setSpectateur() { + this.spectateur = true; } incrementScore(nb) { diff --git a/client/src/main.js b/client/src/main.js index 5e0e1ed..9e6fe2a 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -133,6 +133,12 @@ function render() { let avatars = []; +socket.on('dead', avatarId => { + //affichage.afficherFinDePartie(); + console.log(avatarId); + avatars[avatarId] = {}; +}); + socket.on('disconnectEvent', id => { if (avatar.getNom() == id) { affichage.afficherFinDePartie(); diff --git a/server/index.js b/server/index.js index e8409ad..728bf7a 100644 --- a/server/index.js +++ b/server/index.js @@ -60,10 +60,8 @@ io.on('connection', socket => { socket.on('disconnect', () => { avatars.forEach(avatar => { if (avatar.nom == socket.id) { - console.log('taille du tableau : ' + avatars.length); io.emit('disconnectEvent', avatar.id); avatars.splice(avatars.indexOf(avatar), 1); - console.log('taille du tableau : ' + avatars.length); } }); console.log(`Déconnexion du client ${socket.id}`); @@ -183,7 +181,9 @@ setInterval(() => { }, 100); } if (avatar.getVies() == 0) { - avatar.initAvatar(); + //avatar.initAvatar(); + avatar.setSpectateur(); + io.emit('dead', avatar.id); //TODO : afficher écran fin de partie de l'avatar concerné } } @@ -208,14 +208,16 @@ setInterval(() => { }); avatar.deplacer(); avatar.projectiles.forEach(projectile => projectile.deplacer()); - avatarData.push({ - id: avatar.id, - x: avatar.getX(), - y: avatar.getY(), - projectiles: avatar.projectiles, - vies: avatar.getVies(), - score: avatar.getScore(), - }); + if (!avatar.spectateur) { + avatarData.push({ + id: avatar.id, + x: avatar.getX(), + y: avatar.getY(), + projectiles: avatar.projectiles, + vies: avatar.getVies(), + score: avatar.getScore(), + }); + } bonusArray.forEach(bonus => { if (bonus.hitbox.colision(avatar.hitbox)) { if (bonusNoms[bonus.getChoix()] == 'vie') { -- GitLab