From 7d3a75872c4ba8b52f455df65815aaf6bb81d9ab Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Tue, 16 May 2023 22:20:23 +0200
Subject: [PATCH] loading manager

---
 app.js | 64 +++++++++++++++++++++++++++++++++-------------------------
 1 file changed, 37 insertions(+), 27 deletions(-)

diff --git a/app.js b/app.js
index 0e4767e..18f710c 100644
--- a/app.js
+++ b/app.js
@@ -123,7 +123,6 @@ class Scheduler {
 class Matrix extends THREE.Group {
     constructor() {
         super()
-        this.init()
     }
 
     init() {
@@ -329,7 +328,7 @@ I.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class J extends Tetromino {}
@@ -349,7 +348,7 @@ J.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class L extends Tetromino {}
@@ -369,7 +368,7 @@ L.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class O extends Tetromino {}
@@ -389,7 +388,7 @@ O.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class S extends Tetromino {}
@@ -409,7 +408,7 @@ S.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class T extends Tetromino {
@@ -447,7 +446,7 @@ T.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class Z extends Tetromino {}
@@ -467,7 +466,7 @@ Z.prototype.ghostMaterial = new THREE.MeshBasicMaterial({
     reflectivity: .6,
     envMap: minoRenderTarget.texture,
     transparent: true,
-    opacity: 0.5
+    opacity: 0.4
 })
 
 class Ghost extends Tetromino {
@@ -495,7 +494,6 @@ class Settings {
         settingsModal.addEventListener('shown.bs.modal', () => {
             resumeButton.focus()
         })
-        this.init()
     }
 
     load() {
@@ -567,7 +565,6 @@ class Stats {
     constructor() {
         this.modal = new bootstrap.Modal('#statsModal')
         this.load()
-        this.init()
     }
 
     load() {
@@ -738,6 +735,22 @@ Stats.prototype.timeFormat = new Intl.DateTimeFormat("fr-FR", {
 
 /* Scene */
 
+const manager = new THREE.LoadingManager()
+manager.onStart = function ( url, itemsLoaded, itemsTotal ) {
+	messagesSpan.innerHTML = 'Chargement : 0%...'
+}
+manager.onLoad = function ( ) {
+	restart()
+    messagesSpan.innerHTML = ""
+    animate()
+}
+manager.onProgress = function ( url, itemsLoaded, itemsTotal ) {
+	messagesSpan.innerHTML = 'Chargement : ' + 100 * itemsLoaded / itemsTotal + '%...'
+}
+manager.onError = function ( url ) {
+	messagesSpan.innerHTML = 'Erreur de chargement'
+}
+
 const scene = new THREE.Scene()
 
 const renderer = new THREE.WebGLRenderer()
@@ -751,7 +764,7 @@ camera.lookAt(5, 8.5, 0)
 const commonCylinderGeometry = new THREE.CylinderGeometry(25, 25, 400, 20, 1, true)
 
 // dark space full of stars - background cylinder
-const darkCylinderTexture = new THREE.TextureLoader().load("images/dark.jpg")
+const darkCylinderTexture = new THREE.TextureLoader(manager).load("images/dark.jpg")
 darkCylinderTexture.wrapS = THREE.RepeatWrapping
 darkCylinderTexture.wrapT = THREE.MirroredRepeatWrapping
 darkCylinderTexture.repeat.set(1, 1)
@@ -768,7 +781,7 @@ darkCylinder.position.set(5, 10, -10)
 scene.add(darkCylinder)
 
 // colourfull space full of nebulas - main universe cylinder
-const colorFullCylinderTexture = new THREE.TextureLoader().load("images/colorfull.jpg")
+const colorFullCylinderTexture = new THREE.TextureLoader(manager).load("images/colorfull.jpg")
 colorFullCylinderTexture.wrapS = THREE.RepeatWrapping
 colorFullCylinderTexture.wrapT = THREE.MirroredRepeatWrapping
 colorFullCylinderTexture.repeat.set(1, 1)
@@ -853,7 +866,6 @@ function animate() {
     minoCamera.update(renderer, scene)
 
 }
-animate()
 
 
 /* Game logic */
@@ -868,6 +880,18 @@ let stats = new Stats()
 let playing = false
 //let favicon = document.querySelector("link[rel~='icon']")
 
+function restart() {
+    stats.modal.hide()
+    stats.init()
+    settings.init()
+    holdQueue.remove(holdQueue.piece)
+    Array.from(matrix.children).forEach(mino => matrix.remove(mino))
+    matrix.init()
+    nextQueue.remove(nextQueue.piece)
+    music.currentTime = 0
+    pauseSettings()
+}
+
 function pauseSettings() {
     scheduler.clearInterval(fall)
     scheduler.clearTimeout(lockDown)
@@ -882,8 +906,6 @@ function pauseSettings() {
 }
 onblur = pauseSettings
 
-pauseSettings()
-
 function newGame() {
     if (!settings.form.checkValidity()) {
         event.preventDefault()
@@ -1089,18 +1111,6 @@ function gameOver() {
     stats.show()
 }
 
-function restart() {
-    stats.modal.hide()
-    stats.init()
-    settings.init()
-    holdQueue.remove(holdQueue.piece)
-    Array.from(matrix.children).forEach(mino => matrix.remove(mino))
-    matrix.init()
-    nextQueue.remove(nextQueue.piece)
-    music.currentTime = 0
-    pauseSettings()
-}
-
 window.onbeforeunload = function(event) {
     stats.save()
     settings.save()