Skip to content

Commit

Permalink
Add Menu + Restart a game
Browse files Browse the repository at this point in the history
  • Loading branch information
dorianbayart committed Nov 27, 2023
1 parent 536f04b commit 8053475
Show file tree
Hide file tree
Showing 8 changed files with 442 additions and 280 deletions.
2 changes: 1 addition & 1 deletion energy/constants.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as THREE from 'three';

export const mazeSize = 10;
export const mazeSize = 8;
export const objectsMargin = 1;

export const COLOR = {
Expand Down
38 changes: 38 additions & 0 deletions energy/gamemanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ export class Game {
this.capacity = 0;
}

isGameOver() {
return !(this.lives > 0);
}

updateMoney(money) {
this.money += money;
}
Expand Down Expand Up @@ -62,6 +66,7 @@ export class GameManager {
this.timer = this.clock.elapsedTime;
this.lastGameInfosTime = 0;
this.lastCreatedMobTime = 2;
this.gameOverDisplayed = false;
}

updateGame(delta) {
Expand All @@ -74,5 +79,38 @@ export class GameManager {
g.mobsManager.createMob(g.meshes.mobMesh, g.scene);
this.lastCreatedMobTime = elapsed;
}

if(this.game.isGameOver()) {
if(!this.gameOverDisplayed) {
this.gameOverDisplayed = true;
g.gui.gameOverDisplay();
setTimeout(destroyCanvas, 3000);
}
} else {
g.builderManager.updateBuilder(delta, g.scene);
g.missilesManager.updateMissilesPosition(delta, g.scene);
g.mobsManager.updateMobsPosition(delta, g.scene);
g.towerManager.updateTowers(delta, g.scene);
}

g.particulesManager.updateParticules(delta, g.scene);
g.universeManager.updatePhysicsUniverse(delta);
}
}

const destroyCanvas = () => {
g.universeManager.destroy();

g.renderer = null;
g.rendererPixi = null;
g.scene = null;
g.scenePixi = null;
g.gui = null;
g.meshes = {};
g.clickableObjs = new Array();
g.gameManager = null;

// Remove Canvas from DOM + Display Menu
document.getElementById('canvasGame').remove();
document.getElementById('mainMenu').classList.remove('displayNone', true);
}
4 changes: 3 additions & 1 deletion energy/global.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
class Global {
ammo; // AmmoJs instance

constructor() {
this.renderer;
this.rendererPixi;
Expand All @@ -12,7 +14,7 @@ class Global {
antialiasing: true,
quality: 1,
shadows: true,
shadowMapSize: 512,
shadowMapSize: 768,
}

this.universeManager;
Expand Down
59 changes: 59 additions & 0 deletions energy/gui.js
Original file line number Diff line number Diff line change
Expand Up @@ -373,4 +373,63 @@ export class Gui {
}
};

gameOverDisplay = () => {
const text = new PIXI.Text('Game Over !', new PIXI.TextStyle({
dropShadow: true,
dropShadowAlpha: 0.8,
dropShadowBlur: 4,
dropShadowDistance: 1,
fontFamily: "\"Lucida Console\", Monaco, monospace",
fontSize: 40,
fontVariant: "small-caps",
fill: COLOR.LIGHTERRED,
lineJoin: 'bevel',
strokeThickness: 4,
align: 'left',
}));
text.anchor.set(0.5);
text.x = window.innerWidth / 2;
text.y = window.innerHeight / 2;
g.scenePixi.addChild(text);
}

}

export const buttonyes = (e) => {
e.stopPropagation();
g.towerManager.addTower()

var tmpRangeTower = g.towerManager.rangeTowerToDisplay;
g.scene.remove(tmpRangeTower);
g.towerManager.rangeTowerToDisplay = undefined;
g.gui.createTowerGui_close();
}

export const buttonno = (e) => {
e.stopPropagation();
g.towerManager.newTowerToCreate = undefined;
var tmpRangeTower = g.towerManager.rangeTowerToDisplay;
g.scene.remove(tmpRangeTower);
g.towerManager.rangeTowerToDisplay = undefined;
g.gui.createTowerGui_close();
}

export const buttondelete = (e) => {
e.stopPropagation();
g.towerManager.deleteTower(g.towerManager.selectedTower);
g.scene.remove(g.towerManager.selectedTower.mesh);
g.gui.infoTowerGui_close();
g.towerManager.selectedTower = undefined;
var tmpRangeTower = g.towerManager.rangeTowerToDisplay;
g.scene.remove(tmpRangeTower);
g.towerManager.rangeTowerToDisplay = undefined;
}

export const buttonclose = (e) => {
e.stopPropagation();
g.gui.infoTowerGui_close();
g.towerManager.selectedTower = undefined;
var tmpRangeTower = g.towerManager.rangeTowerToDisplay;
g.scene.remove(tmpRangeTower);
g.towerManager.rangeTowerToDisplay = undefined;
}
5 changes: 4 additions & 1 deletion energy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@
</head>

<body>
<div id="benchmarking"></div>
<ul id="mainMenu">
<li class="button" id="startGame">Start</li>
<li class="button" id="options">Options</li>
</ul>

<!-- CREATE MENU -->
<div id="createTowerDiv" class="popupdiv">
Expand Down
Loading

0 comments on commit 8053475

Please sign in to comment.