diff --git a/orfy8cilgg.js b/orfy8cilgg.js index c30da77..7891bcc 100644 --- a/orfy8cilgg.js +++ b/orfy8cilgg.js @@ -1,3 +1,4 @@ + if (!this.entityLoaded) { return; } @@ -18,7 +19,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { if (this.blastSubscription) { this.blastSubscription.remove(); } - + this.blastSubscription = GameLib.Event.Subscribe( GameLib.Event.AUDIO_ENDED, function(data) { @@ -31,11 +32,11 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { name : 'Audio - Ho ho ho' } ); - } + } } }.bind(this) ); - + this.fog = this.entityLoaded.fog; this.bull = this.entityLoaded.bull; this.star = this.entityLoaded.star; @@ -57,24 +58,26 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.smokeParticleEngine = this.entityLoaded.smokeParticleEngine; this.explodeParticleEngine = this.entityLoaded.explodeParticleEngine; this.burningTreeParticleEngine = this.entityLoaded.burningTreeParticleEngine; - + this.minimumRendererRed = 0.1; - this.toBlack = new THREE.Color(0.05, 0.05, 0.05); - this.toRed = new THREE.Color(0.02, 0, 0); + this.toBlack = new THREE.Color( + data.delta * 3, + data.delta * 3, + data.delta * 3 + ); - this.bull.instance.visible = false; - this.star.instance.visible = false; - this.burger.instance.visible = false; - this.parcel.instance.visible = false; - this.santa.instance.visible = false; - this.kanister.instance.visible = false; + this.toRed = new THREE.Color( + data.delta * 1.2, + 0, + 0 + ); this.treesBurning = 0; this.treesBurningToStart = GameLib.Utils.GetRandomIntInclusive(1, 3); this.running = false; - + this.totalTime = 0; this.kanisters = 3; @@ -82,7 +85,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.kanisterLife = 16.344; this.kanisterLeakTime = 0.1; this.kanisterSpawnScore = 50; - + this.setNextKanisterSpawnScore = function() { this.kanisterSpawnScore = this.score + 100; @@ -159,7 +162,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { function(mesh) { if (mesh.burningTreeParticleEngine) { mesh.burning = false; - mesh.life = 1.2; + mesh.burnLife = 1; mesh.burningTreeParticleEngine.remove(); mesh.burningTreeParticleEngine = null; } @@ -169,7 +172,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.enemies = []; this.scores = []; - + this.enemiesSpawned = 0; this.fog.density = 0.01; @@ -278,10 +281,13 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { } mesh.materials = [material]; - mesh.updateInstance('materials'); - mesh.instance.visible = true; + mesh.visible = true; + mesh.updateInstance('visible'); + + mesh.burnLife = 1; + mesh.explodeLife = 1; var velocity = null; @@ -306,6 +312,11 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { mesh : mesh }; + /** + * Link the enemy to the mesh + */ + mesh.enemy = enemy; + var distance = 100; var angledistance = distance * Math.sin(Math.PI / 4); @@ -402,6 +413,32 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.spawnEnemy(true); }; + this.drawScore = function(enemy) { + + this.scoreMesh.materials[0].opacity = 1.0; + this.scoreMesh.materials[0].updateInstance('opacity'); + + this.scoreMesh.position = enemy.mesh.position.clone(); + this.scoreMesh.updateInstance('position'); + + this.scoreMesh.instance.quaternion.copy(this.camera.instance.quaternion); + + var context = this.scoreCanvas.instance.getContext('2d'); + + context.textBaseline = "middle"; + + context.clearRect(0,0,this.scoreCanvas.width, this.scoreCanvas.height); + + /** + * Write text + */ + context.fillStyle = '#e0b899'; + context.font = '230pt BkBold'; + context.fillText(enemy.score, 0, this.scoreCanvas.height/2); + + this.scoreTexture.instance.needsUpdate = true; + + }.bind(this) this.explodeMesh = function(mesh) { @@ -421,6 +458,12 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { name = 'Audio - Blast 3'; } + var explodeParticleEngine = this.explodeParticleEngine.clone(); + explodeParticleEngine.position = mesh.position.clone(); + explodeParticleEngine.updateInstance('position'); + explodeParticleEngine.enabled = true; + mesh.explodeParticleEngine = explodeParticleEngine; + GameLib.Event.Emit( GameLib.Event.PLAY_AUDIO, { @@ -428,138 +471,92 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { } ); - var explodeParticleEngine = this.explodeParticleEngine.clone(); - explodeParticleEngine.position = mesh.position.clone(); - explodeParticleEngine.updateInstance('position'); - explodeParticleEngine.enabled = true; - mesh.explodeParticleEngine = explodeParticleEngine; - }; - this.drawScore = function(enemy) { - - this.scoreMesh.materials[0].opacity = 1.0; - this.scoreMesh.materials[0].updateInstance('opacity'); - - this.scoreMesh.position = enemy.mesh.position.clone(); - this.scoreMesh.updateInstance('position'); - - this.scoreMesh.instance.quaternion.copy(this.camera.instance.quaternion); - - var context = this.scoreCanvas.instance.getContext('2d'); - - context.textBaseline = "middle"; - - context.clearRect(0,0,this.scoreCanvas.width, this.scoreCanvas.height); - - /** - * Write text - */ - context.fillStyle = '#e0b899'; - context.font = '230pt BkBold'; - context.fillText(enemy.score, 0, this.scoreCanvas.height/2); - - this.scoreTexture.instance.needsUpdate = true; - - }.bind(this) - - this.explode = function(mesh) { - this.enemies.map( - function(enemy) { - if (enemy.mesh === mesh && !enemy.exploding) { + mesh.enemy.exploding = true; - enemy.exploding = true; + if (mesh.enemy.isKanister) { - if (enemy.isKanister) { - this.kanisters += 1; + console.log('exploding kanister'); - if (this.kanisters > 9) { - this.kanisters = 9; - } - - console.log('exploding kanister'); - } else { + this.kanisters += 1; - console.log('exploding enemy'); + if (this.kanisters > 9) { + this.kanisters = 9; + } - this.score += enemy.score; + } else { - this.drawScore(enemy); - - console.log('score : ' + this.score); + console.log('exploding enemy'); - GameLib.Event.Emit( - GameLib.Event.GAME_DATA, - { - event : 'scoreUpdate', - score : this.score - } - ); + this.score += mesh.enemy.score; - if (this.score > this.kanisterSpawnScore) { - this.spawnKanister(); - } + this.drawScore(mesh.enemy); - GameLib.Event.Emit( - GameLib.Event.GAME_DATA, - { - enemy : enemy, - event : 'enemyExploded' - } - ); - } + console.log('score : ' + this.score); - this.explodeMesh(mesh); + GameLib.Event.Emit( + GameLib.Event.GAME_DATA, + { + event : 'scoreUpdate', + score : this.score } - }.bind(this) - ); + ); + + if (this.score > this.kanisterSpawnScore) { + this.spawnKanister(); + } + + GameLib.Event.Emit( + GameLib.Event.GAME_DATA, + { + enemy : mesh.enemy, + event : 'enemyExploded' + } + ); + } + + this.explodeMesh(mesh); }; this.burn = function(mesh) { - this.enemies.map( - function(enemy) { - if (enemy.mesh === mesh && !enemy.burning) { + console.log('burning enemy ' + mesh.name); - console.log('burning enemy ' + mesh.name); - enemy.burning = true; + mesh.enemy.burning = true; - GameLib.Event.Emit( - GameLib.Event.GAME_DATA, - { - enemy : enemy, - event : 'enemyBurned' - } - ); - - var smokeParticleEngine = this.smokeParticleEngine.clone(); - smokeParticleEngine.position = mesh.position.clone(); - smokeParticleEngine.updateInstance('position'); - smokeParticleEngine.enabled = true; - mesh.smokeParticleEngine = smokeParticleEngine; - - GameLib.Event.Emit( - GameLib.Event.PLAY_AUDIO, - { - name : 'Audio - Burning' - } - ); - - var fireParticleEngine = this.fireParticleEngine.clone(); - fireParticleEngine.position = mesh.position.clone(); - fireParticleEngine.updateInstance('position'); - fireParticleEngine.enabled = true; - mesh.fireParticleEngine = fireParticleEngine; - } - }.bind(this) + GameLib.Event.Emit( + GameLib.Event.GAME_DATA, + { + enemy : mesh.enemy, + event : 'enemyBurned' + } ); + var smokeParticleEngine = this.smokeParticleEngine.clone(); + smokeParticleEngine.position = mesh.position.clone(); + smokeParticleEngine.updateInstance('position'); + smokeParticleEngine.enabled = true; + mesh.smokeParticleEngine = smokeParticleEngine; + var fireParticleEngine = this.fireParticleEngine.clone(); + fireParticleEngine.position = mesh.position.clone(); + fireParticleEngine.updateInstance('position'); + fireParticleEngine.enabled = true; + mesh.fireParticleEngine = fireParticleEngine; + + GameLib.Event.Emit( + GameLib.Event.PLAY_AUDIO, + { + name : 'Audio - Burning' + } + ); }; this.kill = function(enemy) { + /** * We only remove the things we cloned */ @@ -644,7 +641,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.fog.updateInstance('density'); if (mesh.position.x < 0) { - this.leftLight.intensity += 0.07; + this.leftLight.intensity += data.delta * 2.5; if (this.leftLight.intensity >= 1) { this.leftLight.intensity = 1; @@ -653,7 +650,7 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { this.leftLight.updateInstance('intensity'); } else { - this.rightLight.intensity += 0.07; + this.rightLight.intensity += data.delta * 2.5; if (this.rightLight.intensity >= 1) { this.rightLight.intensity = 1; @@ -663,19 +660,19 @@ if (GameLib.Utils.UndefinedOrNull(this.initialized)) { } - GameLib.Event.Emit( - GameLib.Event.PLAY_AUDIO, - { - name : 'Audio - Burning' - } - ); - var burningTreeParticleEngine = this.burningTreeParticleEngine.clone(); burningTreeParticleEngine.position = mesh.position.clone(); burningTreeParticleEngine.position.y += mesh.dimensions.y + 5; burningTreeParticleEngine.updateInstance('position'); burningTreeParticleEngine.enabled = true; mesh.burningTreeParticleEngine = burningTreeParticleEngine; + + GameLib.Event.Emit( + GameLib.Event.PLAY_AUDIO, + { + name : 'Audio - Burning' + } + ); } }; @@ -715,7 +712,7 @@ this.scene.meshes.map( ); if (this.mouseIsDown) -{ +{ this.kanisterTime += data.delta; this.renderer.clearColor.r += 0.01; @@ -759,43 +756,64 @@ if (this.mouseIsDown) if (mesh.materials[0].name.indexOf('Trees') === -1) { - mesh.instance.material.color.sub(this.toBlack); + if (!mesh.enemy.burning) { - mesh.materials[0].color.r = mesh.instance.material.color.r; - mesh.materials[0].color.g = mesh.instance.material.color.g; - mesh.materials[0].color.b = mesh.instance.material.color.b; + mesh.burnLife -= data.delta * 2.5; - mesh.materials[0].color.instance = mesh.instance.material.color; + if (mesh.burnLife < 0) { + mesh.burnLife = 0; + this.burn(mesh); + } - if (mesh.instance.material.color.r <= 0) { + mesh.instance.material.color.setRGB( + mesh.burnLife, + mesh.burnLife, + mesh.burnLife + ); - this.burn(mesh); + } else { - if (mesh.instance.material.emissive) { - mesh.instance.material.emissive.add(this.toRed); - mesh.instance.material.emissive.add(this.toRed); - - if (mesh.instance.material.emissive.r >= 0.8) { + if (!mesh.enemy.exploding) { + mesh.explodeLife -= data.delta * 2.5; + if (mesh.explodeLife < 0) { + mesh.explodeLife = 0; this.explode(mesh); } + + if (mesh.instance.material.emissive) { + mesh.instance.material.emissive.setRGB( + 1 - mesh.explodeLife, + 0, + 0 + ); + } } } + } else { + /** * This happens to trees */ - if (GameLib.Utils.UndefinedOrNull(mesh.life)) { - mesh.life = 1.2; + if (GameLib.Utils.UndefinedOrNull(mesh.burnLife)) { + mesh.burnLife = 1; } - mesh.life -= 0.2; + if (!mesh.burning) { - if (mesh.life <= 0) { - this.burnTree(mesh); + mesh.burnLife -= data.delta * 2; - if (mesh.instance.material.emissive) { - mesh.instance.material.emissive.add(this.toRed); - mesh.instance.material.emissive.add(this.toRed); + if (mesh.burnLife <= 0) { + + this.burnTree(mesh); + + if (mesh.instance.material.emissive) { + mesh.instance.material.emissive.setRGB( + 1 - mesh.burnLife, + 0, + 0 + ); + } } } @@ -809,13 +827,13 @@ else { this.kanisterTime += (data.delta * this.kanisterLeakTime); - this.renderer.clearColor.r -= 0.01; + this.renderer.clearColor.r -= data.delta; if (this.renderer.clearColor.r < this.minimumRendererRed) { this.renderer.clearColor.r = this.minimumRendererRed; } this.renderer.updateInstance('clearColor'); - this.throwerLight.intensity -= 0.05; + this.throwerLight.intensity -= data.delta * 3; if (this.throwerLight.intensity < 0) { this.throwerLight.intensity = 0; } @@ -861,30 +879,6 @@ if (this.enemySpawnTime > this.enemySpawnInterval && this.running) { this.enemySpawnTime = 0; this.spawnEnemy(); } -// - -// if (this.kanister.explodeParticleEngine) { -// if (GameLib.Utils.UndefinedOrNull(this.kanister.waiting)) { -// this.kanister.waiting = true; -// } else { -// this.kanister.explodeParticleEngine.remove(); -// this.kanister.explodeParticleEngine = null; -// delete this.kanister.waiting; -// } -// } -// -// if (this.kanisterTime > (this.kanisterLife / 2)) { -// -// this.kanister.visible = true; -// this.kanister.updateInstance('visible'); -// -// GameLib.Event.Emit( -// GameLib.Event.GAME_DATA, -// { -// event : 'kanisterAppeared' -// } -// ); -// } this.enemies = this.enemies.reduce( function(result, enemy) { @@ -904,10 +898,12 @@ this.enemies = this.enemies.reduce( return result; } - enemy.mesh.position.add(enemy.velocity); + enemy.mesh.position.x = enemy.velocity.x * data.delta; + enemy.mesh.position.y = enemy.velocity.y * data.delta; + enemy.mesh.position.z = enemy.velocity.z * data.delta; enemy.mesh.updateInstance('position'); - enemy.mesh.quaternion.angle += enemy.rotation.angle; + enemy.mesh.quaternion.angle += enemy.rotation.angle * data.delta; enemy.mesh.updateInstance('quaternion'); enemy.lifeTime += data.delta; @@ -946,7 +942,7 @@ this.enemies = this.enemies.reduce( enemy.mesh.fireParticleEngine.updateInstance('position'); } - enemy.mesh.materials[0].opacity -= 0.005; + enemy.mesh.materials[0].opacity -= data.delta; enemy.mesh.materials[0].updateInstance('opacity'); } @@ -960,4 +956,4 @@ this.enemies = this.enemies.reduce( ); return null; -//# sourceURL=beforeRender.js \ No newline at end of file +//# sourceURL=beforeRender.js