From 6aa715978ecbc518a91694e11fe69c47c1d21892 Mon Sep 17 00:00:00 2001 From: Kum1ta Date: Wed, 28 Aug 2024 14:09:54 +0200 Subject: [PATCH] Game - new class SoloGame/MultiGame --- site/real_game/class/MultiGame.js | 186 ++++++++++++++++++ site/real_game/class/SoloGame.js | 70 +++++++ site/real_game/class/{ => multiClass}/Ball.js | 0 site/real_game/class/{ => multiClass}/Map.js | 0 .../class/{ => multiClass}/Opponent.js | 0 .../class/{ => multiClass}/Player.js | 0 .../real_game/class/{ => multiClass}/Video.js | 0 site/real_game/class/soloClass/Map.js | 37 ++++ site/real_game/main.js | 181 +---------------- 9 files changed, 299 insertions(+), 175 deletions(-) create mode 100644 site/real_game/class/MultiGame.js create mode 100644 site/real_game/class/SoloGame.js rename site/real_game/class/{ => multiClass}/Ball.js (100%) rename site/real_game/class/{ => multiClass}/Map.js (100%) rename site/real_game/class/{ => multiClass}/Opponent.js (100%) rename site/real_game/class/{ => multiClass}/Player.js (100%) rename site/real_game/class/{ => multiClass}/Video.js (100%) create mode 100644 site/real_game/class/soloClass/Map.js diff --git a/site/real_game/class/MultiGame.js b/site/real_game/class/MultiGame.js new file mode 100644 index 0000000..55c7ce8 --- /dev/null +++ b/site/real_game/class/MultiGame.js @@ -0,0 +1,186 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* MultiGame.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: edbernar { + if (e.key == 'g') + player.pointAnimation(map); + if (e.key == 'h') + player.pointOpponentAnimation(map, opponent.object); + if (e.key == 'c') + debug = !debug; + }) + + renderer.setAnimationLoop(loop) + } + + static dispose() + { + debug = false; + + if (renderer) + renderer.dispose(); + renderer = null; + if (map) + map.dispose(); + map = null; + if (ball) + ball.dispose(); + ball = null; + if (player) + player.dispose(); + player = null; + if (opponent) + opponent.dispose(); + opponent = null; + if (scene) + { + scene.children.forEach(child => { + if (child.geometry) + child.geometry.dispose(); + if (child.material) + child.material.dispose(); + if (child.texture) + child.texture.dispose(); + scene.remove(child); + }); + } + scene = null; + } +} + + +function createBarPlayer(color) +{ + const geometry = new THREE.BoxGeometry(1, 0.1, 0.1); + const material = new THREE.MeshPhysicalMaterial({color: color}); + const mesh = new THREE.Mesh(geometry, material); + + mesh.castShadow = true; + return (mesh); +} + +function loop() +{ + stats.begin(); + // ===== FPS locker ===== // + if (fpsLocker.status) + { + const currentTime = Date.now(); + if (currentTime - previousTime < 1000 / 60) + return ; + previousTime = currentTime; + } + // ====================== // + + player.update(); + map.update(ball); + if (debug) + { + controls.update(); + renderer.render(scene, cameraTmp); + } + else + renderer.render(scene, player.camera); + + stats.end(); +} + +export { MultiGame, stats }; \ No newline at end of file diff --git a/site/real_game/class/SoloGame.js b/site/real_game/class/SoloGame.js new file mode 100644 index 0000000..1790500 --- /dev/null +++ b/site/real_game/class/SoloGame.js @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* SoloGame.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: edbernar { + if (child.geometry) + child.geometry.dispose(); + if (child.material) + child.material.dispose(); + if (child.texture) + child.texture.dispose(); + scene.remove(child); + }); + } + scene = null; + } +}; + +function loop() +{ + stats.begin(); + renderer.render(scene, camera); + stats.end(); +} + +export { SoloGame }; \ No newline at end of file diff --git a/site/real_game/class/Ball.js b/site/real_game/class/multiClass/Ball.js similarity index 100% rename from site/real_game/class/Ball.js rename to site/real_game/class/multiClass/Ball.js diff --git a/site/real_game/class/Map.js b/site/real_game/class/multiClass/Map.js similarity index 100% rename from site/real_game/class/Map.js rename to site/real_game/class/multiClass/Map.js diff --git a/site/real_game/class/Opponent.js b/site/real_game/class/multiClass/Opponent.js similarity index 100% rename from site/real_game/class/Opponent.js rename to site/real_game/class/multiClass/Opponent.js diff --git a/site/real_game/class/Player.js b/site/real_game/class/multiClass/Player.js similarity index 100% rename from site/real_game/class/Player.js rename to site/real_game/class/multiClass/Player.js diff --git a/site/real_game/class/Video.js b/site/real_game/class/multiClass/Video.js similarity index 100% rename from site/real_game/class/Video.js rename to site/real_game/class/multiClass/Video.js diff --git a/site/real_game/class/soloClass/Map.js b/site/real_game/class/soloClass/Map.js new file mode 100644 index 0000000..2679a30 --- /dev/null +++ b/site/real_game/class/soloClass/Map.js @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Map.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: edbernar { - if (e.key == 'g') - player.pointAnimation(map); - if (e.key == 'h') - player.pointOpponentAnimation(map, opponent.object); - if (e.key == 'c') - debug = !debug; - }) - - renderer.setAnimationLoop(loop) - } - - static dispose() - { - debug = false; - - if (renderer) - renderer.dispose(); - renderer = null; - if (map) - map.dispose(); - map = null; - if (ball) - ball.dispose(); - ball = null; - if (player) - player.dispose(); - player = null; - if (opponent) - opponent.dispose(); - opponent = null; - if (scene) - { - scene.children.forEach(child => { - if (child.geometry) - child.geometry.dispose(); - if (child.material) - child.material.dispose(); - if (child.texture) - child.texture.dispose(); - scene.remove(child); - }); - } - scene = null; - } -} - - -function createBarPlayer(color) -{ - const geometry = new THREE.BoxGeometry(1, 0.1, 0.1); - const material = new THREE.MeshPhysicalMaterial({color: color}); - const mesh = new THREE.Mesh(geometry, material); - - mesh.castShadow = true; - return (mesh); -} - -function loop() -{ - stats.begin(); - // ===== FPS locker ===== // - if (fpsLocker.status) - { - const currentTime = Date.now(); - if (currentTime - previousTime < 1000 / 60) - return ; - previousTime = currentTime; - } - // ====================== // - - player.update(); - map.update(ball); - if (debug) - { - controls.update(); - renderer.render(scene, cameraTmp); - } - else - renderer.render(scene, player.camera); - - stats.end(); -} - -Game.create(); +// MultiGame.create(); +SoloGame.create();