UNPKG

@tdurtschi/bug

Version:

Bug is a simulation that models a weevil walking around in an HTML canvas.

63 lines 2.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultState = void 0; var victor_1 = __importDefault(require("victor")); var rxjs_1 = require("rxjs"); var pause_1 = require("./behaviors/pause"); var GroundWalk_1 = require("./behaviors/GroundWalk"); var stats_1 = require("../../util/stats"); var climb_1 = require("./behaviors/climb"); var BugInstinct_1 = __importDefault(require("./behaviors/BugInstinct")); exports.defaultState = function () { return ({ pos: new victor_1.default(0, 0), size: new victor_1.default(30.72, 24), direction: new victor_1.default(1, 0), speed: 1 }); }; var Bug = (function () { function Bug(id, initialState) { var _this = this; this.bugInstinct = new BugInstinct_1.default(); this.updateSpeed = 4; this.zIndexChanged = new rxjs_1.Subject(); this.behaviorQueue = []; this.queueBehavior = function (behavior) { if (behavior === undefined) { throw new Error("Behavior Undefined"); } _this.behaviorQueue.push(behavior); }; this.id = id ? id : 0; Object.assign(this, exports.defaultState(), initialState); } Bug.prototype.update = function (inputs) { if (inputs === void 0) { inputs = []; } if (this.behaviorQueue && this.behaviorQueue.length > 0) { this.behaviorQueue[0].do(inputs); } if (this.behaviorQueue && this.behaviorQueue.length === 0) { var next = this.getNextBehavior(); this.queueBehavior(next); } return this; }; Bug.prototype.getNextBehavior = function () { if (this.climbingOn) { return new climb_1.Climb(this); } else { return stats_1.randFromWeighted([1, 3]) ? new pause_1.Pause(this, stats_1.randInt(20, 40)) : new GroundWalk_1.GroundWalk(this, stats_1.normalRange(60, 140)); } }; Bug.prototype.finishBehavior = function () { this.behaviorQueue.shift(); }; return Bug; }()); exports.default = Bug; //# sourceMappingURL=bug.js.map