summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2016-04-18 00:19:05 +0200
committerJ08nY2016-04-18 00:19:05 +0200
commit76fb0a13cdfa0cd639b6b847ed37378a4276370a (patch)
tree3b903bcc7b1db21bf2859a3bfc005ca1db23d3a7
parent574f62abcf275dad6bece9c28f2bf2be05233654 (diff)
downloadld35-76fb0a13cdfa0cd639b6b847ed37378a4276370a.tar.gz
ld35-76fb0a13cdfa0cd639b6b847ed37378a4276370a.tar.zst
ld35-76fb0a13cdfa0cd639b6b847ed37378a4276370a.zip
-rw-r--r--game.js131
-rw-r--r--game.js.map2
-rw-r--r--game.ts184
3 files changed, 185 insertions, 132 deletions
diff --git a/game.js b/game.js
index 42a7c1b..d05e353 100644
--- a/game.js
+++ b/game.js
@@ -1,6 +1,7 @@
/// <reference path="three_js/ts/three.d.ts"/>
/// <reference path="physi_js/physijs.d.ts"/>
/// <reference path="three_js/ts/detector.d.ts"/>
+/// <reference path="three_js/ts/three-canvasrenderer.d.ts"/>
'use strict';
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
@@ -8,11 +9,11 @@ var __extends = (this && this.__extends) || function (d, b) {
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var Vector3 = THREE.Vector3;
+var Face3 = THREE.Face3;
var Material = THREE.Material;
var Geometry = THREE.Geometry;
-var smoothstep = THREE.Math.smoothstep;
-var TetrahedronGeometry = THREE.TetrahedronGeometry;
-var Face3 = THREE.Face3;
+var CanvasRenderer = THREE.CanvasRenderer;
+var WebGLRenderer = THREE.WebGLRenderer;
//wtf fix..
Physijs.scripts.worker = "physi_js/physijs_worker.js";
Physijs.scripts.ammo = "ammo.js";
@@ -187,12 +188,10 @@ var Poly = (function (_super) {
__extends(Poly, _super);
function Poly(pos, polarity) {
var _this = this;
- _super.call(this, Poly.generateGeometry(), Physijs.createMaterial(new THREE.MeshBasicMaterial({
- color: polarity > 0 ? 0x0010a0 : 0xa01000
- }), 1, 1), 0.3);
- this.pos = pos;
+ _super.call(this, Poly.generateGeometry(), polarity > 0 ? Poly.blue : Poly.red, 0.3);
this.polarity = polarity;
this.addEventListener("ready", function () { return _this.init(); });
+ this.position.copy(pos);
}
Poly.prototype.init = function () {
//launch the poly into space
@@ -218,6 +217,15 @@ var Poly = (function (_super) {
Poly.prototype.collides = function (other) {
return this.position.clone().sub(other.position).lengthSq() <= ((other.radius) ^ 2);
};
+ Poly.prototype.dispose = function () {
+ this.geometry.dispose();
+ };
+ Poly.red = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0xa01000
+ }), 1, 1);
+ Poly.blue = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x0010a0
+ }), 1, 1);
return Poly;
}(Physijs.PlaneMesh));
var Morph = (function (_super) {
@@ -249,6 +257,7 @@ var Morph = (function (_super) {
}
};
Morph.prototype.updateGeometry = function () {
+ this.geometry.dispose();
this.geometry = Morph.generateGeometry(this.level);
this.geometry.computeBoundingSphere();
this.radius = this.geometry.boundingSphere.radius;
@@ -268,15 +277,16 @@ var Morph = (function (_super) {
Morph.prototype.collides = function (other) {
return this.position.clone().sub(other.position).length() <= (this.radius + other.radius);
};
+ Morph.prototype.dispose = function () {
+ this.geometry.dispose();
+ };
Morph.levels = [4, 6, 12, 20];
return Morph;
}(Physijs.SphereMesh));
var Projectile = (function (_super) {
__extends(Projectile, _super);
function Projectile(pos, dir, level) {
- _super.call(this, pos.clone().add(dir.clone().setLength(2)), level, Physijs.createMaterial(new THREE.MeshBasicMaterial({
- color: 0x303030
- }), 0.5, 0.3), 0.01);
+ _super.call(this, pos.clone().add(dir.clone().setLength(2)), level, Projectile.mat, 0.05);
this.pos = pos;
this.dir = dir;
this.time = 0;
@@ -291,6 +301,9 @@ var Projectile = (function (_super) {
Projectile.prototype.tick = function (delta) {
this.time += delta;
};
+ Projectile.mat = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x303030
+ }), 0.5, 0.3);
return Projectile;
}(Morph));
var LiveMorph = (function (_super) {
@@ -314,9 +327,7 @@ var LiveMorph = (function (_super) {
var Mob = (function (_super) {
__extends(Mob, _super);
function Mob(pos, level) {
- _super.call(this, pos, level, Physijs.createMaterial(new THREE.MeshBasicMaterial({
- color: 0xa01b00
- }), .8, .6), 2);
+ _super.call(this, pos, level, Mob.mat, 2);
this.speeds = [25.5, 20, 17, 14];
}
Mob.prototype.approach = function (player) {
@@ -328,11 +339,13 @@ var Mob = (function (_super) {
var amount = Math.floor(Math.random() * 10) + 3;
for (var i = 0; i < amount; i++) {
var poly = new Poly(this.position, Math.random() > 0.5 ? 1 : -1);
- poly.position.copy(this.position);
polys.push(poly);
}
return polys;
};
+ Mob.mat = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0xa01b00
+ }), .8, .6);
return Mob;
}(LiveMorph));
var Player = (function (_super) {
@@ -394,38 +407,24 @@ var Level = (function (_super) {
this.mobs = [];
this.projectiles = [];
this.polygons = [];
- //private bounds:Geometry[] = [];
this.time = 0;
this.setGravity(new THREE.Vector3(0, -40, 0));
this.add(player);
for (var i = 0; i < 15; i++) {
- var a = Math.random() > 0.5 ? -1 : 1;
- var b = Math.random() > 0.5 ? -1 : 1;
- var x = Math.floor(Math.random() * 20 + 10);
- var z = Math.floor(Math.random() * 20 + 10);
- var size = Math.floor(Math.random() * 4);
- this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size);
+ this.spawn();
}
- /*
- let light:any = new THREE.DirectionalLight(0xFFFFFF);
- light.position.set(20, 40, -15);
- light.target.position.copy(player.position);
- light.castShadow = true;
- light.shadow.camera.left = -60;
- light.shadow.camera.top = -60;
- light.shadow.camera.right = 60;
- light.shadow.camera.bottom = 60;
- light.shadow.camera.near = 20;
- light.shadow.camera.far = 200;
- light.shadow.bias = -.0001;
- light.shadow.mapSize.width = light.shadow.mapSize.height = 4096;
- this.add(light);
- */
var groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
- var ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0);
- ground.receiveShadow = true;
- this.add(ground);
+ this.ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0);
+ this.add(this.ground);
}
+ Level.prototype.spawn = function () {
+ var a = Math.random() > 0.5 ? -1 : 1;
+ var b = Math.random() > 0.5 ? -1 : 1;
+ var x = Math.floor(Math.random() * 20 + 10);
+ var z = Math.floor(Math.random() * 20 + 10);
+ var size = Math.floor(Math.random() * 4);
+ this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size);
+ };
Level.prototype.spawnMob = function (where, size) {
var mob = new Mob(where, size);
this.add(mob);
@@ -462,7 +461,7 @@ var Level = (function (_super) {
if (mob.collides(projectile)) {
if (mob.level == projectile.level) {
collided = true;
- mob.damage((projectile.level + 1) * 10);
+ mob.damage(34);
break;
}
}
@@ -499,12 +498,32 @@ var Level = (function (_super) {
}
return true;
});
+ //spawn new mob?
+ if (Math.random() < 0.03) {
+ this.spawn();
+ }
//physijs
this.simulate(delta, 1);
};
Level.prototype.timeLeft = function () {
return Level.durations[this.level] - (this.time / 1000);
};
+ Level.prototype.dispose = function () {
+ var _this = this;
+ this.ground.geometry.dispose();
+ this.mobs.forEach(function (obj) {
+ _this.remove(obj);
+ obj.dispose();
+ });
+ this.projectiles.forEach(function (obj) {
+ _this.remove(obj);
+ obj.dispose();
+ });
+ this.polygons.forEach(function (obj) {
+ _this.remove(obj);
+ obj.dispose();
+ });
+ };
//unused
Level.generateGeometry = function (level) {
switch (level) {
@@ -552,14 +571,20 @@ var Game = (function () {
_this.camera.updateProjectionMatrix();
_this.renderer.setSize(window.innerWidth, window.innerHeight);
};
- this.renderer = new THREE.WebGLRenderer({
- antialias: true
- });
- this.renderer.setClearColor(0xffffff);
- this.renderer.setPixelRatio(window.devicePixelRatio);
- this.renderer.setSize(window.innerWidth, window.innerHeight);
- this.renderer.shadowMap.enabled = true;
- this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
+ if (Detector.webgl) {
+ this.renderer = new THREE.WebGLRenderer({ antialias: true });
+ var rendr = this.renderer;
+ rendr.setClearColor(0xffffff);
+ rendr.setPixelRatio(window.devicePixelRatio);
+ rendr.setSize(window.innerWidth, window.innerHeight);
+ }
+ else {
+ this.renderer = new THREE.CanvasRenderer();
+ var rendr = this.renderer;
+ rendr.setClearColor(0xffffff);
+ rendr.setPixelRatio(window.devicePixelRatio);
+ rendr.setSize(window.innerWidth, window.innerHeight);
+ }
document.body.appendChild(this.renderer.domElement);
window.addEventListener("resize", this.onWindowResize, false);
this.camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 1, 1000);
@@ -696,13 +721,13 @@ var Game = (function () {
if (this.level.level != Level.numLevels - 1) {
if (result) {
//next level, shit!
+ this.level.dispose();
this.newLevel(this.level.level + 1);
this.start();
return;
}
}
- else {
- }
+ this.level.dispose();
window.removeEventListener("resize", this.onWindowResize, false);
var blocker = document.getElementById("block");
blocker.style.display = '-webkit-box';
@@ -712,12 +737,12 @@ var Game = (function () {
instructions.style.fontSize = "40px";
instructions.innerHTML = result ? "You won!" : "You lost!";
instructions.style.display = "";
+ if (Detector.webgl) {
+ this.renderer.dispose();
+ }
};
return Game;
}());
-if (!Detector.webgl) {
- Detector.addGetWebGLMessage();
-}
window.onload = function () {
var game = new Game();
game.init();
diff --git a/game.js.map b/game.js.map
index 62d477e..094bbca 100644
--- a/game.js.map
+++ b/game.js.map
@@ -1 +1 @@
-{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"game.js","sourceRoot":"","sources":["game.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/game.ts b/game.ts
index 277584c..12facb5 100644
--- a/game.ts
+++ b/game.ts
@@ -1,14 +1,15 @@
/// <reference path="three_js/ts/three.d.ts"/>
/// <reference path="physi_js/physijs.d.ts"/>
/// <reference path="three_js/ts/detector.d.ts"/>
+/// <reference path="three_js/ts/three-canvasrenderer.d.ts"/>
'use strict';
import Vector3 = THREE.Vector3;
+import Face3 = THREE.Face3;
import Material = THREE.Material;
import Geometry = THREE.Geometry;
-import smoothstep = THREE.Math.smoothstep;
-import TetrahedronGeometry = THREE.TetrahedronGeometry;
-import Face3 = THREE.Face3;
+import CanvasRenderer = THREE.CanvasRenderer;
+import WebGLRenderer = THREE.WebGLRenderer;
//wtf fix..
Physijs.scripts.worker = "physi_js/physijs_worker.js";
@@ -209,16 +210,23 @@ class Mouse {
class Poly extends Physijs.PlaneMesh {
- constructor(private pos:Vector3, public polarity:number) {
- super(Poly.generateGeometry(),
- Physijs.createMaterial(new THREE.MeshBasicMaterial({
- color: polarity > 0 ? 0x0010a0 : 0xa01000
- }),
- 1,
- 1
- ),
- 0.3);
+ static red:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0xa01000
+ }),
+ 1,
+ 1
+ );
+ static blue:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x0010a0
+ }),
+ 1,
+ 1
+ );
+
+ constructor(pos:Vector3, public polarity:number) {
+ super(Poly.generateGeometry(), polarity > 0 ? Poly.blue : Poly.red, 0.3);
this.addEventListener("ready", () => this.init());
+ this.position.copy(pos);
}
init():void {
@@ -248,6 +256,10 @@ class Poly extends Physijs.PlaneMesh {
collides(other:Morph):boolean {
return this.position.clone().sub(other.position).lengthSq() <= ((other.radius) ^ 2);
}
+
+ dispose() {
+ this.geometry.dispose()
+ }
}
@@ -284,6 +296,7 @@ class Morph extends Physijs.SphereMesh {
}
private updateGeometry():void {
+ this.geometry.dispose();
this.geometry = Morph.generateGeometry(this.level);
this.geometry.computeBoundingSphere();
this.radius = this.geometry.boundingSphere.radius;
@@ -307,22 +320,24 @@ class Morph extends Physijs.SphereMesh {
return this.position.clone().sub(other.position).length() <= (this.radius + other.radius);
}
-
+ dispose():void {
+ this.geometry.dispose();
+ }
}
class Projectile extends Morph {
time:number = 0;
+ static mat:Physijs.Material = Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x303030
+ }),
+ 0.5,
+ 0.3
+ );
+
constructor(private pos:Vector3, private dir:Vector3, level:number) {
- super(pos.clone().add(dir.clone().setLength(2)), level,
- Physijs.createMaterial(new THREE.MeshBasicMaterial({
- color: 0x303030
- }),
- 0.5,
- 0.3
- ),
- 0.01);
+ super(pos.clone().add(dir.clone().setLength(2)), level, Projectile.mat, 0.05);
}
init():void {
@@ -363,14 +378,15 @@ class Mob extends LiveMorph {
speeds:number[] = [25.5, 20, 17, 14];
+ static mat:Physijs.Material = Physijs.createMaterial(
+ new THREE.MeshBasicMaterial({
+ color: 0xa01b00
+ }),
+ .8,
+ .6);
+
constructor(pos:Vector3, level:number) {
- super(pos, level, Physijs.createMaterial(
- new THREE.MeshBasicMaterial({
- color: 0xa01b00
- }),
- .8,
- .6
- ), 2);
+ super(pos, level, Mob.mat, 2);
}
approach(player:Player) {
@@ -383,7 +399,6 @@ class Mob extends LiveMorph {
let amount = Math.floor(Math.random() * 10) + 3;
for (let i = 0; i < amount; i++) {
let poly = new Poly(this.position, Math.random() > 0.5 ? 1 : -1);
- poly.position.copy(this.position);
polys.push(poly);
}
@@ -465,13 +480,12 @@ class Level extends Physijs.Scene {
private mobs:Mob[] = [];
private projectiles:Projectile[] = [];
private polygons:Poly[] = [];
- //private bounds:Geometry[] = [];
+ private ground:Physijs.BoxMesh;
private time:number = 0;
static durations:number[] = [20, 30, 45, 60, -1];
static numLevels:number = Level.durations.length;
-
static mat:Physijs.Material = Physijs.createMaterial(
new THREE.MeshBasicMaterial({color: 0xcacaca}),
1,
@@ -485,35 +499,22 @@ class Level extends Physijs.Scene {
this.add(player);
for (let i = 0; i < 15; i++) {
- let a = Math.random() > 0.5 ? -1 : 1;
- let b = Math.random() > 0.5 ? -1 : 1;
- let x = Math.floor(Math.random() * 20 + 10);
- let z = Math.floor(Math.random() * 20 + 10);
- let size = Math.floor(Math.random() * 4);
-
- this.spawnMob(this.player.position.clone().add(new Vector3(a*x, 0, b*z)), size);
+ this.spawn();
}
- /*
- let light:any = new THREE.DirectionalLight(0xFFFFFF);
- light.position.set(20, 40, -15);
- light.target.position.copy(player.position);
- light.castShadow = true;
- light.shadow.camera.left = -60;
- light.shadow.camera.top = -60;
- light.shadow.camera.right = 60;
- light.shadow.camera.bottom = 60;
- light.shadow.camera.near = 20;
- light.shadow.camera.far = 200;
- light.shadow.bias = -.0001;
- light.shadow.mapSize.width = light.shadow.mapSize.height = 4096;
- this.add(light);
- */
-
let groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
- let ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0);
- ground.receiveShadow = true;
- this.add(ground);
+ this.ground = new Physijs.BoxMesh(groundGeometry, Level.mat, 0);
+ this.add(this.ground);
+ }
+
+ spawn() {
+ let a = Math.random() > 0.5 ? -1 : 1;
+ let b = Math.random() > 0.5 ? -1 : 1;
+ let x = Math.floor(Math.random() * 20 + 10);
+ let z = Math.floor(Math.random() * 20 + 10);
+ let size = Math.floor(Math.random() * 4);
+
+ this.spawnMob(this.player.position.clone().add(new Vector3(a * x, 0, b * z)), size);
}
spawnMob(where:Vector3, size:number):void {
@@ -553,7 +554,7 @@ class Level extends Physijs.Scene {
if (mob.collides(projectile)) {
if (mob.level == projectile.level) {
collided = true;
- mob.damage((projectile.level + 1) * 10);
+ mob.damage(34);
break;
}
}
@@ -592,6 +593,11 @@ class Level extends Physijs.Scene {
return true;
});
+ //spawn new mob?
+ if (Math.random() < 0.03) {
+ this.spawn();
+ }
+
//physijs
this.simulate(delta, 1);
}
@@ -600,6 +606,23 @@ class Level extends Physijs.Scene {
return Level.durations[this.level] - (this.time / 1000);
}
+ dispose():void {
+ this.ground.geometry.dispose();
+
+ this.mobs.forEach((obj) => {
+ this.remove(obj);
+ obj.dispose();
+ });
+ this.projectiles.forEach((obj) => {
+ this.remove(obj);
+ obj.dispose();
+ });
+ this.polygons.forEach((obj) => {
+ this.remove(obj);
+ obj.dispose();
+ });
+ }
+
//unused
static generateGeometry(level:number):THREE.Geometry[] {
switch (level) {
@@ -633,7 +656,7 @@ enum GameState {
}
class Game {
- private renderer:THREE.WebGLRenderer;
+ private renderer:THREE.Renderer;
private camera:THREE.PerspectiveCamera;
private player:Player;
@@ -653,14 +676,19 @@ class Game {
constructor() {
- this.renderer = new THREE.WebGLRenderer({
- antialias: true
- });
- this.renderer.setClearColor(0xffffff);
- this.renderer.setPixelRatio(window.devicePixelRatio);
- this.renderer.setSize(window.innerWidth, window.innerHeight);
- this.renderer.shadowMap.enabled = true;
- this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
+ if (Detector.webgl) {
+ this.renderer = new THREE.WebGLRenderer({antialias: true});
+ let rendr = <THREE.WebGLRenderer>this.renderer;
+ rendr.setClearColor(0xffffff);
+ rendr.setPixelRatio(window.devicePixelRatio);
+ rendr.setSize(window.innerWidth, window.innerHeight);
+ } else {
+ this.renderer = new THREE.CanvasRenderer();
+ let rendr = <THREE.CanvasRenderer>this.renderer;
+ rendr.setClearColor(0xffffff);
+ rendr.setPixelRatio(window.devicePixelRatio);
+ rendr.setSize(window.innerWidth, window.innerHeight);
+ }
document.body.appendChild(this.renderer.domElement);
window.addEventListener("resize", this.onWindowResize, false);
@@ -739,12 +767,12 @@ class Game {
//morph!
if (this.keyboard.down("Q")) {
- if(this.player.minus > 0){
+ if (this.player.minus > 0) {
this.player.shrink();
this.player.minus--;
}
} else if (this.keyboard.down("E")) {
- if(this.player.plus > 0){
+ if (this.player.plus > 0) {
this.player.grow();
this.player.plus--;
}
@@ -825,16 +853,16 @@ class Game {
this.pause();
this.state = GameState.STOPPED;
- if(this.level.level != Level.numLevels - 1){
- if(result){
+ if (this.level.level != Level.numLevels - 1) {
+ if (result) {
//next level, shit!
- this.newLevel(this.level.level+1);
+ this.level.dispose();
+ this.newLevel(this.level.level + 1);
this.start();
return;
}
- }else{
- //end game
}
+ this.level.dispose();
window.removeEventListener("resize", this.onWindowResize, false);
@@ -846,11 +874,11 @@ class Game {
instructions.style.fontSize = "40px";
instructions.innerHTML = result ? "You won!" : "You lost!";
instructions.style.display = "";
- }
-}
-if (!Detector.webgl) {
- Detector.addGetWebGLMessage();
+ if (Detector.webgl) {
+ (<WebGLRenderer>this.renderer).dispose();
+ }
+ }
}
window.onload = () => {