From be60de564a5f834e5564b01935f6f2a0d185c6b7 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Fri, 11 Oct 2024 11:08:52 +0200 Subject: [PATCH] Game - ball trail change color with speed = add goal id for opponnent --- .../file/server/server/DummySocket.py | 4 +-- .../djangoserver/file/server/server/urls.py | 2 +- .../static/javascript/multiOnlineGame/Ball.js | 32 +++++++++++++------ .../javascript/multiOnlineGame/Player.js | 8 ++--- .../multiOnlineGame/multiOnlineGamePage.js | 5 +-- .../static/javascript/waitingGame/main.js | 4 +-- 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/docker-compose/requirements/djangoserver/file/server/server/DummySocket.py b/docker-compose/requirements/djangoserver/file/server/server/DummySocket.py index e8017b6..647acfa 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/DummySocket.py +++ b/docker-compose/requirements/djangoserver/file/server/server/DummySocket.py @@ -3,10 +3,10 @@ # ::: :::::::: # # DummySocket.py :+: :+: :+: # # +:+ +:+ +:+ # -# By: tomoron +#+ +:+ +#+ # +# By: edbernar = 3; i--) trailPositions[i] = trailPositions[i - 3]; trailPositions[0] = this.object.position.x; @@ -300,19 +298,35 @@ class Ball for (let i = 0; i < 33; i++) trailSizes[i] = Math.max(0.5 * (1 - i / 33), 0.1); + + const velocityMagnitude = Math.sqrt( + this.srvPos.vel[0] * this.srvPos.vel[0] + + this.srvPos.vel[1] * this.srvPos.vel[1] + ); + + // Normalisation de la vitesse entre 0 (lente) et 1 (rapide) + const speedFactor = Math.min(velocityMagnitude / 10, 1); // Divisé par 10 pour ajuster l'échelle for (let i = 0; i < 33; i++) { const alpha = Math.max(1 - i / 33, 0); - trailColors[i * 4] = 1.0 / Math.max(this.srvPos.vel[0] < 0 ? - this.srvPos.vel[0] : this.srvPos.vel[0], 0.3); - trailColors[i * 4 + 1] = 1.0 / Math.max(this.srvPos.vel[1] < 0 ? - this.srvPos.vel[1] : this.srvPos.vel[1], 0.3); - trailColors[i * 4 + 2] = 1.0 / Math.max((this.srvPos.vel[0] < 0 ? - this.srvPos.vel[0] : this.srvPos.vel[0]) + this.srvPos.vel[1] < 0 ? - this.srvPos.vel[1] : this.srvPos.vel[1], 0.3); + + // Couleur entre blanc et rouge selon la vitesse + const r = 1; // Rouge maximum + const g = 1 - speedFactor; // Moins de vert avec l'augmentation de la vitesse + const b = 1 - speedFactor; // Moins de bleu avec l'augmentation de la vitesse + + // Appliquer la couleur + trailColors[i * 4] = r; + trailColors[i * 4 + 1] = g; + trailColors[i * 4 + 2] = b; trailColors[i * 4 + 3] = alpha; } - + // Marquer les attributs comme nécessitant une mise à jour trailGeometry.attributes.position.needsUpdate = true; trailGeometry.attributes.size.needsUpdate = true; trailGeometry.attributes.customColor.needsUpdate = true; } + dispose() { diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js index 3b13785..28b418b 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/Player.js @@ -6,7 +6,7 @@ /* By: edbernar { map.animationGoal(this.opponent.object.position.x, this.opponent.object.position.y, this.opponent.object.position.z, this.opponent.playerGoalAnimation, this.opponentGoal); }, 1000); diff --git a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js index e3d945f..c37f0fe 100644 --- a/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js +++ b/docker-compose/requirements/nginx/static/javascript/multiOnlineGame/multiOnlineGamePage.js @@ -6,7 +6,7 @@ /* By: edbernar { document.body.style.animation = 'anim3 0.5s'; document.body.style.opacity = 0; - pageRenderer.changePage("multiOnlineGamePage", false, {player: lastSelected ? lastSelected.id : 0, opponent: content.skin, opponentGoaldId: content.goalId, pfp: content.pfpSelf, pfpOpponent: content.pfpOpponent}); + pageRenderer.changePage("multiOnlineGamePage", false, {player: lastSelected ? lastSelected.id : 0, opponent: content.skin, opponentGoaldId: content.goal, pfp: content.pfpSelf, pfpOpponent: content.pfpOpponent}); }, 1000); }, 500); document.body.removeChild(returnButton);