diff --git a/site/real_game/class/SoloGame.js b/site/real_game/class/SoloGame.js index b678887..7a55ee2 100644 --- a/site/real_game/class/SoloGame.js +++ b/site/real_game/class/SoloGame.js @@ -6,22 +6,23 @@ /* By: hubourge +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/28 12:07:39 by edbernar #+# #+# */ -/* Updated: 2024/09/10 17:16:02 by hubourge ### ########.fr */ +/* Updated: 2024/09/11 16:12:16 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ import * as THREE from 'three'; -import { Map, ground } from './soloClass/Map.js' +import { Map, ground, gameEndStatus } from './soloClass/Map.js' import { Players, player1, player2 } from './soloClass/Players.js' import { Ball } from './soloClass/Ball.js' import { stats } from './MultiGame.js'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'; -let scene = null; +let scene = null; let renderer = null; let camera = null; -let controls = null; +let controls = null; +let gameEnd = false; /* Controls : @@ -93,6 +94,8 @@ class SoloGame function loop() { stats.begin(); + if (gameEndStatus) // fin du jeu faire les dispose en conséquence + console.log('Game end'); controls.update(); Ball.update(); Map.update(); diff --git a/site/real_game/class/soloClass/Map.js b/site/real_game/class/soloClass/Map.js index 0e7c6bf..9895aa8 100644 --- a/site/real_game/class/soloClass/Map.js +++ b/site/real_game/class/soloClass/Map.js @@ -6,7 +6,7 @@ /* By: hubourge +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/28 12:23:48 by edbernar #+# #+# */ -/* Updated: 2024/09/10 18:13:14 by hubourge ### ########.fr */ +/* Updated: 2024/09/11 16:10:26 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,7 @@ let score = {player1: 0, player2: 0}; let onUpdate = false; const scoreElement = document.getElementById('score'); let initialSpeed = 3; - +let gameEndStatus = false; class Map { @@ -262,10 +262,13 @@ class Map if (player1Lose) score.player2++; else - score.player1++; - scoreElement.innerHTML = score.player1 + '-' +score.player2; + score.player1++; + scoreElement.innerHTML = score.player1 + '-' +score.player2; }, 500); + if ((player1Lose && score.player2 >= 2) || (!player1Lose && score.player1 >= 2)) + return (this.#endGame()); + setTimeout(() => { speed = 3; initialSpeed = Math.sqrt(vec3.x * vec3.x + vec3.z * vec3.z); @@ -314,6 +317,32 @@ class Map else if (typeof(texture) == 'number') ground.material.color.set(texture); } + + static #endGame() + { + speed = 3; + vec3.x = 0; + vec3.y = 0; + vec3.z = 0 + initialZ = vec3.z; + setTimeout(() => { + ballBody.velocity.set(0,0,0); + ballBody.position.set(0, 0.15, 0); + ball.position.copy(ballBody.position); + ball.material.opacity = 1; + player1Body.position.set(-12, 0.4, 0); + player1.position.copy(player1Body.position); + player2Body.position.set(12, 0.4, 0); + player2.position.copy(player2Body.position); + + scoreElement.style.animation = 'fadeOut 0.199s'; + document.getElementsByTagName('canvas')[3].style.filter = 'brightness(1)'; + scoreElement.style.animation = 'fadeOutText 0.399s'; + scoreElement.style.color = 'rgb(255, 255, 255, 0.1)'; + onUpdate = false; + gameEndStatus = true; + }, 1200); + } } function createGround(scene, texture) @@ -348,4 +377,4 @@ function createWall(onTop) return (mesh); } -export { Map, wallBottom, wallTop, ground }; +export { Map, wallBottom, wallTop, ground, gameEndStatus }; diff --git a/site/real_game/main.js b/site/real_game/main.js index fe674c1..33dcec2 100644 --- a/site/real_game/main.js +++ b/site/real_game/main.js @@ -3,15 +3,15 @@ /* ::: :::::::: */ /* main.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/28 12:05:53 by edbernar #+# #+# */ -/* Updated: 2024/09/09 13:07:00 by edbernar ### ########.fr */ +/* Updated: 2024/09/11 15:18:08 by hubourge ### ########.fr */ /* */ /* ************************************************************************** */ import { MultiGame } from "./class/MultiGame"; import { SoloGame } from "./class/SoloGame"; -MultiGame.create(); -// SoloGame.create(); \ No newline at end of file +// MultiGame.create(); +SoloGame.create();