UNPKG

@tdurtschi/bug

Version:

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

52 lines 1.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var bug_ui_1 = __importDefault(require("./bug-ui")); var canvas_helpers_1 = require("../../canvas-helpers"); var Victor = require("victor"); var bugUIs = []; var GROUND_Y_OFFSET = 0.08; var CLIMBING_Y_OFFSET = 0.1; var createNewBug = function (bug) { var bugUI = new bug_ui_1.default(bug.id, bug); bugUIs[bug.id] = bugUI; return bugUI; }; var getUIBug = function (bug) { return bugUIs[bug.id] || createNewBug(bug); }; exports.default = (function (bug, ctx) { var uiBug = getUIBug(bug); uiBug.update(); var climbingYOffset = bug.climbingOn ? Math.ceil(bug.size.y * CLIMBING_Y_OFFSET) : 0; var groundYOffset = bug.climbingOn ? 0 : Math.ceil(bug.size.y * GROUND_Y_OFFSET); var XOffset = bug.size.x * -1 / 3; var direction = bug.direction, size = bug.size; var pos = new Victor(bug.pos.x, canvas_helpers_1.fixY(ctx.canvas.height, bug.pos.y)); ctx.save(); ctx.translate(pos.x, pos.y); window.DEBUG && canvas_helpers_1.circle(ctx, 5); if (direction.x > 0) { ctx.rotate(-direction.angle()); ctx.scale(-1, 1); } else { var newDir = direction.clone().multiplyScalarX(-1); ctx.rotate(newDir.angle()); } if (shouldFlipY(bug)) { ctx.scale(1, -1); } window.DEBUG && canvas_helpers_1.horizLine(ctx, size.x); ctx.drawImage(uiBug.getImage(), XOffset, -size.y + climbingYOffset + groundYOffset, size.x * 10 / 6, size.y); ctx.restore(); }); function shouldFlipY(bug) { if (bug.climbingOn && bug.climbingOn.branch.flipY) { return true; } return false; } //# sourceMappingURL=bug-renderer.js.map