summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2016-04-17 14:15:04 +0200
committerJ08nY2016-04-17 14:15:04 +0200
commit14fe0122aa0e8c527936892ea88fa47cfa58d1bf (patch)
treedea4262d723347a772c501e6e95879369582f63e
parent1eb6089ced4ad7d413c8f4b17edc7697e0b44e2f (diff)
downloadld35-14fe0122aa0e8c527936892ea88fa47cfa58d1bf.tar.gz
ld35-14fe0122aa0e8c527936892ea88fa47cfa58d1bf.tar.zst
ld35-14fe0122aa0e8c527936892ea88fa47cfa58d1bf.zip
-rw-r--r--game.js162
-rw-r--r--game.js.map2
-rw-r--r--game.ts139
3 files changed, 177 insertions, 126 deletions
diff --git a/game.js b/game.js
index 86e2244..0a0381b 100644
--- a/game.js
+++ b/game.js
@@ -15,58 +15,58 @@ Physijs.scripts.worker = "physi_js/physijs_worker.js";
Physijs.scripts.ammo = "ammo.js";
var PointerLock = (function () {
function PointerLock(game, blocker, instructions) {
+ var _this = this;
this.game = game;
this.blocker = blocker;
this.instructions = instructions;
this.hasLock = false;
+ this.onChange = function (event) {
+ var element = document.body;
+ var doc = document;
+ if (doc.pointerLockElement === element || doc.mozPointerLockElement === element || doc.webkitPointerLockElement === element) {
+ //gained
+ _this.hasLock = true;
+ _this.blocker.style.display = "none";
+ if (_this.game.state == GameState.INITIALIZED || _this.game.state == GameState.PAUSED) {
+ _this.game.start();
+ }
+ console.log("gained");
+ }
+ else {
+ //lost
+ _this.hasLock = false;
+ _this.blocker.style.display = '-webkit-box';
+ _this.blocker.style.display = '-moz-box';
+ _this.blocker.style.display = 'box';
+ _this.instructions.style.display = "";
+ if (_this.game.state == GameState.STARTED) {
+ _this.game.pause();
+ }
+ console.log("lost");
+ }
+ };
+ this.onError = function (event) {
+ _this.instructions.style.display = "";
+ };
+ this.onClick = function (event) {
+ var element = document.body;
+ element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
+ _this.instructions.style.display = "none";
+ element.requestPointerLock();
+ };
}
PointerLock.prototype.gain = function () {
- var _this = this;
var havePointerLock = 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document;
if (!havePointerLock) {
return;
}
- document.addEventListener('pointerlockchange', function (event) { return _this.onChange(event); }, false);
- document.addEventListener('mozpointerlockchange', function (event) { return _this.onChange(event); }, false);
- document.addEventListener('webkitpointerlockchange', function (event) { return _this.onChange(event); }, false);
- document.addEventListener('pointerlockerror', function (event) { return _this.onError(event); }, false);
- document.addEventListener('mozpointerlockerror', function (event) { return _this.onError(event); }, false);
- document.addEventListener('webkitpointerlockerror', function (event) { return _this.onError(event); }, false);
- this.blocker.addEventListener("click", function (event) { return _this.onClick(event); }, false);
- };
- PointerLock.prototype.onChange = function (event) {
- var element = document.body;
- var doc = document;
- if (doc.pointerLockElement === element || doc.mozPointerLockElement === element || doc.webkitPointerLockElement === element) {
- //gained
- this.hasLock = true;
- this.blocker.style.display = "none";
- if (this.game.state == GameState.INITIALIZED || this.game.state == GameState.PAUSED) {
- this.game.start();
- }
- console.log("gained");
- }
- else {
- //lost
- this.hasLock = false;
- this.blocker.style.display = '-webkit-box';
- this.blocker.style.display = '-moz-box';
- this.blocker.style.display = 'box';
- this.instructions.style.display = "";
- if (this.game.state == GameState.STARTED) {
- this.game.pause();
- }
- console.log("lost");
- }
- };
- PointerLock.prototype.onError = function (event) {
- this.instructions.style.display = "";
- };
- PointerLock.prototype.onClick = function (event) {
- var element = document.body;
- element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
- this.instructions.style.display = "none";
- element.requestPointerLock();
+ document.addEventListener('pointerlockchange', this.onChange, false);
+ document.addEventListener('mozpointerlockchange', this.onChange, false);
+ document.addEventListener('webkitpointerlockchange', this.onChange, false);
+ document.addEventListener('pointerlockerror', this.onError, false);
+ document.addEventListener('mozpointerlockerror', this.onError, false);
+ document.addEventListener('webkitpointerlockerror', this.onError, false);
+ this.blocker.addEventListener("click", this.onClick, false);
};
return PointerLock;
}());
@@ -128,7 +128,7 @@ var Keyboard = (function () {
String.fromCharCode(keyCode);
};
/*
- Credit to: https://github.com/stemkoski
+ Credit to: https://github.com/stemkoski
*/
Keyboard.k = {
8: "backspace", 9: "tab", 13: "enter", 16: "shift",
@@ -141,12 +141,9 @@ var Keyboard = (function () {
};
return Keyboard;
}());
-var MouseButton;
-(function (MouseButton) {
- MouseButton[MouseButton["LEFT"] = 0] = "LEFT";
- MouseButton[MouseButton["RIGHT"] = 1] = "RIGHT";
- MouseButton[MouseButton["MIDDLE"] = 2] = "MIDDLE";
-})(MouseButton || (MouseButton = {}));
+/**
+ *
+ */
var Mouse = (function () {
function Mouse(player) {
var _this = this;
@@ -184,6 +181,9 @@ var Mouse = (function () {
};
return Mouse;
}());
+/**
+ *
+ */
var Morph = (function (_super) {
__extends(Morph, _super);
function Morph(level, material, mass) {
@@ -223,6 +223,25 @@ var Morph = (function (_super) {
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, level, Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x303030
+ })), 0);
+ this.pos = pos;
+ this.dir = dir;
+ this.position.copy(pos);
+ this.setLinearVelocity(this.dir);
+ }
+ return Projectile;
+}(Morph));
+/**
+ *
+ */
var Enemy = (function (_super) {
__extends(Enemy, _super);
function Enemy() {
@@ -243,6 +262,7 @@ var Player = (function (_super) {
this.camera = new Vector3(0, 10, 10);
this.heading = 0;
this.speed = 25;
+ this.projectiles = [];
}
Player.prototype.jump = function () {
this.applyCentralImpulse(new Vector3(0, 8, 0));
@@ -251,6 +271,9 @@ var Player = (function (_super) {
this.heading -= xMovement * 0.002;
};
Player.prototype.click = function (button) {
+ if (button == THREE.MOUSE.LEFT) {
+ this.projectiles.push(new Projectile(this.position, this.getDirection(), this.level));
+ }
};
Player.prototype.getDirection = function () {
return this.forward.clone().applyAxisAngle(this.upward, this.heading);
@@ -260,16 +283,18 @@ var Player = (function (_super) {
};
return Player;
}(Morph));
-var World = (function () {
- function World(player, scene, camera) {
+var World = (function (_super) {
+ __extends(World, _super);
+ function World(player, camera) {
+ _super.call(this);
player.position.set(0, 2, 0);
player.castShadow = true;
- scene.add(player);
- //scene.add(camera);
+ this.add(player);
+ //this.add(camera);
var enemy = new Enemy();
enemy.position.set(0, 5, 0);
enemy.castShadow = true;
- scene.add(enemy);
+ this.add(enemy);
var light = new THREE.DirectionalLight(0xFFFFFF);
light.position.set(20, 40, -15);
light.target.position.copy(player.position);
@@ -282,15 +307,15 @@ var World = (function () {
light.shadow.camera.far = 200;
light.shadow.bias = -.0001;
light.shadow.mapSize.width = light.shadow.mapSize.height = 2048;
- scene.add(light);
+ this.add(light);
var groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
var groundMaterial = Physijs.createMaterial(new THREE.MeshBasicMaterial({ color: 0xdadada }), 1, 1);
var ground = new Physijs.BoxMesh(groundGeometry, groundMaterial, 0);
- scene.add(ground);
ground.receiveShadow = true;
+ this.add(ground);
}
return World;
-}());
+}(Physijs.Scene));
var GameState;
(function (GameState) {
GameState[GameState["INITIALIZED"] = 0] = "INITIALIZED";
@@ -319,12 +344,10 @@ var Game = (function () {
this.camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 1, 1000);
}
Game.prototype.init = function () {
- //init scene
- this.scene = new Physijs.Scene;
- this.scene.setGravity(new THREE.Vector3(0, -40, 0));
//init player and world
this.player = new Player();
- this.world = new World(this.player, this.scene, this.camera);
+ this.world = new World(this.player, this.camera);
+ this.world.setGravity(new THREE.Vector3(0, -40, 0));
this.player.setDamping(0.05, 0.05);
//init camera
this.camera.position.addVectors(this.player.position, this.player.camera);
@@ -344,7 +367,7 @@ var Game = (function () {
*/
Game.prototype.render = function () {
//console.log("render");
- this.renderer.render(this.scene, this.camera);
+ this.renderer.render(this.world, this.camera);
};
/**
* Update logic based on @param delta.
@@ -353,8 +376,10 @@ var Game = (function () {
Game.prototype.tick = function (delta) {
this.ticks++;
this.keyboard.update();
+ //camera
this.camera.position.addVectors(this.player.position, this.player.getCamera());
this.camera.lookAt(this.player.position);
+ //player movement
var forward = this.player.getDirection();
forward.setLength(this.player.speed);
var right = forward.clone().cross(this.player.upward);
@@ -371,20 +396,25 @@ var Game = (function () {
if (this.keyboard.pressed("A")) {
this.player.applyCentralForce(right.negate());
}
+ //clamp speed, TODO into a method
+ var velocity = this.player.getLinearVelocity().clampLength(-20, 20);
+ this.player.setLinearVelocity(velocity);
+ //morph!
if (this.keyboard.down("Q")) {
this.player.shrink();
}
else if (this.keyboard.down("E")) {
this.player.grow();
}
- //console.log(this.player.getLinearVelocity().length());
- var velocity = this.player.getLinearVelocity().clampLength(-20, 20);
- this.player.setLinearVelocity(velocity);
+ //jump!
if (this.keyboard.down("space")) {
console.log("jump");
this.player.jump();
}
- this.scene.simulate(delta, 1);
+ while (this.player.projectiles.length > 0) {
+ this.world.add(this.player.projectiles.pop());
+ }
+ this.world.simulate(delta, 1);
};
Game.prototype.run = function (timestamp) {
var _this = this;
diff --git a/game.js.map b/game.js.map
index b8a7a56..d478e10 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":"AAAA,8CAA8C;AAC9C,6CAA6C;AAC7C,iDAAiD;AACjD,YAAY,CAAC;;;;;;AAEb,IAAO,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAO,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAO,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAEjC,WAAW;AACX,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,4BAA4B,CAAC;AACtD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;AAGjC;IAGI,qBAAoB,IAAS,EAAU,OAAmB,EAAU,YAAwB;QAHhG,iBA4DC;QAzDuB,SAAI,GAAJ,IAAI,CAAK;QAAU,YAAO,GAAP,OAAO,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAY;QAF5F,YAAO,GAAW,KAAK,CAAC;QAqBxB,aAAQ,GAAG,UAAC,KAAK;YACb,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,IAAI,GAAG,GAAO,QAAQ,CAAC;YAEvB,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,KAAK,OAAO,IAAI,GAAG,CAAC,qBAAqB,KAAK,OAAO,IAAI,GAAG,CAAC,wBAAwB,KAAK,OAAO,CAAC,CAAC,CAAC;gBAC1H,QAAQ;gBACR,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBACpC,EAAE,CAAC,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,WAAW,IAAI,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClF,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,MAAM;gBACN,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC3C,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;gBACxC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAEnC,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACrC,EAAE,CAAC,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvC,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACL,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAK;YACZ,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACzC,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAK;YACZ,IAAI,OAAO,GAAO,QAAQ,CAAC,IAAI,CAAC;YAChC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC;YAC7H,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAEzC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjC,CAAC,CAAC;IAvDF,CAAC;IAED,0BAAI,GAAJ;QACI,IAAI,eAAe,GAAG,oBAAoB,IAAI,QAAQ,IAAI,uBAAuB,IAAI,QAAQ,IAAI,0BAA0B,IAAI,QAAQ,CAAC;QACxI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC;QACX,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrE,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxE,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE3E,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtE,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;IAwCL,kBAAC;AAAD,CAAC,AA5DD,IA4DC;AAED;IAeI;QAfJ,iBAkFC;QArEW,WAAM,GAAG,EAAE,CAAC;QA8BpB,cAAS,GAAG,UAAC,KAAmB;YAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAC,CAAC;QAC9F,CAAC,CAAC;QAEF,YAAO,GAAG,UAAC,KAAmB;YAC1B,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;QACzC,CAAC,CAAC;IApCF,CAAC;IAED,yBAAM,GAAN;QACI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1B,4DAA4D;YAC5D,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9C,CAAC;YACD,IAAI,CACJ,CAAC;gBACG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;YAClC,CAAC;YAED,iDAAiD;YACjD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,QAAQ,CAAC,CAAC,sBAAsB;YACpC,CAAC;YAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;QACnC,CAAC;IACL,CAAC;IAcD,uBAAI,GAAJ,UAAK,GAAG;QACJ,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,0BAAO,GAAP,UAAQ,GAAG;QACP,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAE,GAAF,UAAG,GAAG;QACF,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,2BAAQ,GAAR;QACI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,6BAAU,GAAV;QACI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,gBAAO,GAAd,UAAe,OAAO;QAClB,MAAM,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAE;YAClC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAhFD;;OAEG;IACI,UAAC,GAAG;QACP,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;QAClD,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO;QAC7C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM;QACnD,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM;QAC7C,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;KAC1C,CAAC;IAsEN,eAAC;AAAD,CAAC,AAlFD,IAkFC;AAED;;GAEG;AACH;IAOI,eAAoB,MAAa;QAPrC,iBA2CC;QApCuB,WAAM,GAAN,MAAM,CAAO;QAJjC,cAAS,GAAU,CAAC,CAAC;QACrB,cAAS,GAAU,CAAC,CAAC;QACb,YAAO,GAAG,EAAE,CAAC;QAKrB,gBAAW,GAAG,UAAC,KAAgB;YAC3B,KAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,KAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YACjC,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,gBAAW,GAAG,UAAC,KAAgB;YAC3B,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAClC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,cAAS,GAAG,UAAC,KAAgB;YACzB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QACvC,CAAC,CAAC;IAjBF,CAAC;IAmBD,uBAAO,GAAP,UAAQ,MAAa;QACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,wBAAQ,GAAR;QACI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,0BAAU,GAAV;QACI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAEL,YAAC;AAAD,CAAC,AA3CD,IA2CC;AAED;;GAEG;AACH;IAAoB,yBAAkB;IAGlC,eAAmB,KAAY,EAAE,QAAwB,EAAE,IAAY;QACnE,kBAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QADtC,UAAK,GAAL,KAAK,CAAO;IAE/B,CAAC;IAEM,sBAAgB,GAAvB,UAAwB,KAAY;QAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACf,KAAK,CAAC;gBACF,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC3C,KAAK,CAAC;gBACF,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,EAAE;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,KAAK,EAAE;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C;gBACI,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC/C,CAAC;IACL,CAAC;IAEO,8BAAc,GAAtB;QACI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,sBAAM,GAAN;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,oBAAI,GAAJ;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAvCM,YAAM,GAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAyC5C,YAAC;AAAD,CAAC,AA1CD,CAAoB,OAAO,CAAC,UAAU,GA0CrC;AAED;;GAEG;AACH;IAAyB,8BAAK;IAE1B,oBAAoB,GAAW,EAAU,GAAW,EAAE,KAAY;QAC9D,kBAAM,KAAK,EACL,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACjD,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC,EACH,CAAC,CAAC,CAAC;QALO,QAAG,GAAH,GAAG,CAAQ;QAAU,QAAG,GAAH,GAAG,CAAQ;QAMhD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACL,iBAAC;AAAD,CAAC,AAXD,CAAyB,KAAK,GAW7B;AAED;;GAEG;AACH;IAAoB,yBAAK;IAErB;QACI,kBAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAC3B,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACxB,KAAK,EAAE,QAAQ;SAClB,CAAC,EACF,EAAE,EACF,EAAE,CACL,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IACL,YAAC;AAAD,CAAC,AAXD,CAAoB,KAAK,GAWxB;AAED;IAAqB,0BAAK;IAYtB;QAEI,kBAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAC3B,IAAI,KAAK,CAAC,iBAAiB,CAAC;YACxB,KAAK,EAAE,QAAQ;SAClB,CAAC,EACF,CAAC,EACD,GAAG,CACF,EACD,GAAG,CAAC,CAAC;QAjBb,YAAO,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,WAAM,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,WAAM,GAAW,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,YAAO,GAAU,CAAC,CAAC;QACnB,UAAK,GAAU,EAAE,CAAC;QAElB,gBAAW,GAAgB,EAAE,CAAC;IAY9B,CAAC;IAED,qBAAI,GAAJ;QACI,IAAI,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,uBAAM,GAAN,UAAO,SAAgB;QACnB,IAAI,CAAC,OAAO,IAAI,SAAS,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,sBAAK,GAAL,UAAM,MAAa;QACf,EAAE,CAAA,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,6BAAY,GAAZ;QACI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,0BAAS,GAAT;QACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IACL,aAAC;AAAD,CAAC,AA7CD,CAAqB,KAAK,GA6CzB;AAED;IAAoB,yBAAa;IAE7B,eAAY,MAAa,EAAE,MAAmB;QAC1C,iBAAO,CAAC;QAER,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjB,mBAAmB;QAEnB,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAGhB,IAAI,KAAK,GAAO,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAC/B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CACvC,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,EAC9C,CAAC,EACD,CAAC,CACJ,CAAC;QAEF,IAAI,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAGrB,CAAC;IAEL,YAAC;AAAD,CAAC,AA7CD,CAAoB,OAAO,CAAC,KAAK,GA6ChC;AAED,IAAK,SAKJ;AALD,WAAK,SAAS;IACV,uDAAW,CAAA;IACX,+CAAO,CAAA;IACP,6CAAM,CAAA;IACN,+CAAO,CAAA;AACX,CAAC,EALI,SAAS,KAAT,SAAS,QAKb;AAED;IAoBI;QApBJ,iBAsLC;QA3KW,UAAK,GAAU,CAAC,CAAC;QACjB,UAAK,GAAU,CAAC,CAAC;QACjB,cAAS,GAAU,CAAC,CAAC;QACrB,aAAQ,GAAU,IAAI,GAAG,EAAE,CAAC;QAC5B,WAAM,GAAU,EAAE,CAAC;QAMvB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;YACpC,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAM,OAAA,KAAI,CAAC,cAAc,EAAE,EAArB,CAAqB,EAAE,KAAK,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,mBAAI,GAAJ;QACI,uBAAuB;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEnC,aAAa;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEzC,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;IACvC,CAAC;IAGD,6BAAc,GAAd;QACI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,qBAAM,GAAN;QACI,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,mBAAI,GAAJ,UAAK,KAAY;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEvB,QAAQ;QACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEzC,iBAAiB;QACjB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,kCAAkC;QAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,QAAQ;QACR,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,OAAO;QACP,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QAGD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,kBAAG,GAAH,UAAI,SAAU;QAAd,iBA4BC;QA3BG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACb,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnB,qBAAqB,CAAC,cAAM,OAAA,KAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC5B,EAAE,CAAC,CAAC,EAAE,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC1B,0BAA0B;gBAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACf,KAAK,CAAC;YACV,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnB,qBAAqB,CAAC,cAAM,OAAA,KAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,oBAAK,GAAL;QACI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEtB,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,oBAAK,GAAL;QACI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAExB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,mBAAI,GAAJ;QACI,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM;IACV,CAAC;IACL,WAAC;AAAD,CAAC,AAtLD,IAsLC;AAED,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClB,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,GAAG;IACZ,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,oCAAoC;IACpC,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC"} \ No newline at end of file
diff --git a/game.ts b/game.ts
index b36e331..caa773a 100644
--- a/game.ts
+++ b/game.ts
@@ -11,30 +11,30 @@ import Geometry = THREE.Geometry;
Physijs.scripts.worker = "physi_js/physijs_worker.js";
Physijs.scripts.ammo = "ammo.js";
+
class PointerLock {
hasLock:boolean = false;
constructor(private game:Game, private blocker:HTMLElement, private instructions:HTMLElement) {
}
-
gain() {
let havePointerLock = 'pointerLockElement' in document || 'mozPointerLockElement' in document || 'webkitPointerLockElement' in document;
if (!havePointerLock) {
return;
}
- document.addEventListener('pointerlockchange', (event) => this.onChange(event), false);
- document.addEventListener('mozpointerlockchange', (event) => this.onChange(event), false);
- document.addEventListener('webkitpointerlockchange', (event) => this.onChange(event), false);
+ document.addEventListener('pointerlockchange', this.onChange, false);
+ document.addEventListener('mozpointerlockchange', this.onChange, false);
+ document.addEventListener('webkitpointerlockchange', this.onChange, false);
- document.addEventListener('pointerlockerror', (event) => this.onError(event), false);
- document.addEventListener('mozpointerlockerror', (event) => this.onError(event), false);
- document.addEventListener('webkitpointerlockerror', (event) => this.onError(event), false);
+ document.addEventListener('pointerlockerror', this.onError, false);
+ document.addEventListener('mozpointerlockerror', this.onError, false);
+ document.addEventListener('webkitpointerlockerror', this.onError, false);
- this.blocker.addEventListener("click", (event) => this.onClick(event), false)
+ this.blocker.addEventListener("click",this.onClick, false)
}
- onChange(event) {
+ onChange = (event) => {
let element = document.body;
let doc:any = document;
@@ -59,24 +59,24 @@ class PointerLock {
}
console.log("lost");
}
- }
+ };
- onError(event) {
+ onError = (event) => {
this.instructions.style.display = "";
- }
+ };
- onClick(event) {
+ onClick = (event) => {
let element:any = document.body;
element.requestPointerLock = element.requestPointerLock || element.mozRequestPointerLock || element.webkitRequestPointerLock;
this.instructions.style.display = "none";
element.requestPointerLock();
- }
+ };
}
class Keyboard {
/*
- Credit to: https://github.com/stemkoski
+ Credit to: https://github.com/stemkoski
*/
static k = {
8: "backspace", 9: "tab", 13: "enter", 16: "shift",
@@ -93,7 +93,7 @@ class Keyboard {
}
- update() {
+ update():void {
for (var key in this.status) {
// insure that every keypress has "down" status exactly once
if (!this.status[key].updatedPreviously) {
@@ -141,12 +141,12 @@ class Keyboard {
return (this.status[key] && this.status[key].up);
}
- register() {
+ register():void {
document.addEventListener("keydown", this.onKeyDown, false);
document.addEventListener("keyup", this.onKeyUp, false);
}
- unregister() {
+ unregister():void {
document.removeEventListener("keydown", this.onKeyDown, false);
document.removeEventListener("keyup", this.onKeyUp, false);
}
@@ -158,12 +158,9 @@ class Keyboard {
}
}
-enum MouseButton{
- LEFT,
- RIGHT,
- MIDDLE
-}
-
+/**
+ *
+ */
class Mouse {
x:number;
y:number;
@@ -191,7 +188,7 @@ class Mouse {
this.buttons[event.button] = false;
};
- pressed(button:MouseButton):boolean {
+ pressed(button:number):boolean {
return this.buttons[button];
}
@@ -209,7 +206,9 @@ class Mouse {
}
-
+/**
+ *
+ */
class Morph extends Physijs.SphereMesh {
static levels:number[] = [4, 6, 12, 20];
@@ -234,7 +233,7 @@ class Morph extends Physijs.SphereMesh {
}
}
- private updateGeometry() {
+ private updateGeometry():void {
this.geometry = Morph.generateGeometry(this.level);
}
@@ -254,8 +253,26 @@ class Morph extends Physijs.SphereMesh {
}
-class Enemy extends Morph {
+/**
+ *
+ */
+class Projectile extends Morph {
+ constructor(private pos:Vector3, private dir:Vector3, level:number) {
+ super(level,
+ Physijs.createMaterial(new THREE.MeshBasicMaterial({
+ color: 0x303030
+ })),
+ 0);
+ this.position.copy(pos);
+ this.setLinearVelocity(this.dir);
+ }
+}
+
+/**
+ *
+ */
+class Enemy extends Morph {
constructor() {
super(0, Physijs.createMaterial(
@@ -278,6 +295,7 @@ class Player extends Morph {
heading:number = 0;
speed:number = 25;
+ projectiles:Projectile[] = [];
constructor() {
@@ -300,7 +318,9 @@ class Player extends Morph {
}
click(button:number):void {
-
+ if(button == THREE.MOUSE.LEFT) {
+ this.projectiles.push(new Projectile(this.position, this.getDirection(), this.level));
+ }
}
getDirection():Vector3 {
@@ -312,21 +332,21 @@ class Player extends Morph {
}
}
-class World {
-
+class World extends Physijs.Scene{
- constructor(player:Player, scene:Physijs.Scene, camera:THREE.Camera) {
+ constructor(player:Player, camera:THREE.Camera) {
+ super();
player.position.set(0, 2, 0);
player.castShadow = true;
- scene.add(player);
+ this.add(player);
- //scene.add(camera);
+ //this.add(camera);
let enemy = new Enemy();
enemy.position.set(0, 5, 0);
enemy.castShadow = true;
- scene.add(enemy);
+ this.add(enemy);
let light:any = new THREE.DirectionalLight(0xFFFFFF);
@@ -341,7 +361,7 @@ class World {
light.shadow.camera.far = 200;
light.shadow.bias = -.0001;
light.shadow.mapSize.width = light.shadow.mapSize.height = 2048;
- scene.add(light);
+ this.add(light);
let groundGeometry = new THREE.BoxGeometry(1000, 1, 1000);
let groundMaterial = Physijs.createMaterial(
@@ -351,8 +371,9 @@ class World {
);
let ground = new Physijs.BoxMesh(groundGeometry, groundMaterial, 0);
- scene.add(ground);
ground.receiveShadow = true;
+ this.add(ground);
+
}
@@ -366,18 +387,16 @@ enum GameState {
}
class Game {
- renderer:THREE.WebGLRenderer;
+ private renderer:THREE.WebGLRenderer;
+ private camera:THREE.PerspectiveCamera;
- camera:THREE.PerspectiveCamera;
- scene:Physijs.Scene;
- player:Player;
+ private player:Player;
+ private world:World;
- world:World;
- state:GameState;
-
- keyboard:Keyboard;
- mouse:Mouse;
+ private keyboard:Keyboard;
+ private mouse:Mouse;
+ state:GameState;
private ticks:number = 0;
private delta:number = 0;
private lastFrame:number = 0;
@@ -403,14 +422,11 @@ class Game {
}
init():void {
- //init scene
- this.scene = new Physijs.Scene;
- this.scene.setGravity(new THREE.Vector3(0, -40, 0));
-
//init player and world
this.player = new Player();
- this.world = new World(this.player, this.scene, this.camera);
+ this.world = new World(this.player, this.camera);
+ this.world.setGravity(new THREE.Vector3(0, -40, 0));
this.player.setDamping(0.05, 0.05);
//init camera
@@ -437,7 +453,7 @@ class Game {
*/
render():void {
//console.log("render");
- this.renderer.render(this.scene, this.camera);
+ this.renderer.render(this.world, this.camera);
}
/**
@@ -448,9 +464,11 @@ class Game {
this.ticks++;
this.keyboard.update();
+ //camera
this.camera.position.addVectors(this.player.position, this.player.getCamera());
this.camera.lookAt(this.player.position);
+ //player movement
let forward = this.player.getDirection();
forward.setLength(this.player.speed);
let right = forward.clone().cross(this.player.upward);
@@ -468,26 +486,29 @@ class Game {
if (this.keyboard.pressed("A")) {
this.player.applyCentralForce(right.negate());
}
+ //clamp speed, TODO into a method
+ let velocity = this.player.getLinearVelocity().clampLength(-20, 20);
+ this.player.setLinearVelocity(velocity);
+ //morph!
if (this.keyboard.down("Q")) {
this.player.shrink();
} else if (this.keyboard.down("E")) {
this.player.grow();
}
- //console.log(this.player.getLinearVelocity().length());
-
- let velocity = this.player.getLinearVelocity().clampLength(-20, 20);
- this.player.setLinearVelocity(velocity);
-
-
+ //jump!
if (this.keyboard.down("space")) {
console.log("jump");
this.player.jump();
}
+ while (this.player.projectiles.length > 0) {
+ this.world.add(this.player.projectiles.pop());
+ }
+
- this.scene.simulate(delta, 1);
+ this.world.simulate(delta, 1);
}
run(timestamp?):void {