@tdurtschi/bug
Version:
Bug is a simulation that models a weevil walking around in an HTML canvas.
63 lines • 2.31 kB
JavaScript
;
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