From 98dabd8fec5d2930add944997577a5f702013736 Mon Sep 17 00:00:00 2001
From: J08nY
Date: Sat, 16 Apr 2016 06:41:19 +0200
Subject: atleast got typescript working
---
game.ts | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 136 insertions(+)
create mode 100644 game.ts
(limited to 'game.ts')
diff --git a/game.ts b/game.ts
new file mode 100644
index 0000000..8d5da32
--- /dev/null
+++ b/game.ts
@@ -0,0 +1,136 @@
+///
+///
+///
+
+import Vector3 = THREE.Vector3;
+class Morph extends Physijs.Mesh {
+ faces:number;
+ //TODO, probelm s tym ze ked extendujem Mesh, tak sa nedostanem k Geometry ale iba k BufferGeometry
+
+ constructor(numFaces:number, material:THREE.Material, mass:number) {
+ let geometry = Morph.generateGeometry(numFaces);
+ super(geometry, material, mass);
+ }
+
+ static generateGeometry(numFaces:number):THREE.Geometry {
+ if (numFaces == 4) {
+ return new THREE.TetrahedronGeometry();
+ } else if (numFaces == 6) {
+ return new THREE.BoxGeometry(1, 1, 1, 2, 2, 2);
+ } else if (numFaces == 12) {
+ return new THREE.DodecahedronGeometry(1, 0);
+ } else if (numFaces == 20) {
+ return new THREE.IcosahedronGeometry(1, 0);
+ }
+ return null;
+ }
+
+ private updateGeometry(numFaces:number) {
+ this.faces = numFaces;
+ this.geometry = Morph.generateGeometry(this.faces);
+ }
+
+ shrink(numFaces:number):void {
+ this.updateGeometry(this.faces - numFaces);
+ }
+
+ grow(numFaces:number):void {
+ this.updateGeometry(this.faces + numFaces);
+ }
+
+ wobble():void {
+
+ }
+
+}
+
+class Enemy extends Morph {
+
+ constructor() {
+ super(null, null, null);
+ //todo
+ }
+}
+
+class Player extends Morph {
+
+ constructor() {
+ let mat = new THREE.MeshBasicMaterial({
+ color: 0x00b0a0,
+ });
+ super(4, mat, 1);
+ }
+}
+
+class World {
+
+ constructor(player: Player, scene:THREE.Scene, camera:THREE.Camera) {
+ scene.add(player);
+ }
+}
+
+class Game {
+ renderer:THREE.WebGLRenderer;
+ scene:THREE.Scene;
+ camera:THREE.PerspectiveCamera;
+ player:Player;
+ world: World;
+ private ticks:number;
+ private running:boolean;
+
+ constructor() {
+ this.renderer = new THREE.WebGLRenderer({
+ antialias: true
+ });
+ this.renderer.setClearColor(0xffffff);
+ this.renderer.setPixelRatio(window.devicePixelRatio);
+ this.renderer.setSize(window.innerWidth, window.innerHeight);
+ document.body.appendChild(this.renderer.domElement);
+
+ this.scene = new THREE.Scene();
+ this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
+ }
+
+ init():void {
+ //init world
+ this.player = new Player();
+ this.world = new World(this.player, this.scene, this.camera);
+ this.player.position.set(0,0,0);
+ this.camera.position.set(10,10,10);
+ this.camera.lookAt(this.player.position);
+ //init camera
+ }
+
+ render():void {
+ this.renderer.render(this.scene, this.camera);
+ }
+
+ tick():void {
+ this.ticks++;
+
+ }
+
+ run():void {
+ this.running = true;
+ while (this.running) {
+ this.tick();
+ let shouldRender = true;
+ if (shouldRender) {
+ this.render();
+ }
+
+ }
+ }
+
+}
+
+if (!Detector.webgl) {
+ Detector.addGetWebGLMessage();
+}
+
+window.onload = () => {
+ var game = new Game();
+ game.init();
+
+ //game.run();
+};
\ No newline at end of file
--
cgit v1.2.3-70-g09d2