raingame
Version:
2D game framework
103 lines (102 loc) • 4.14 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Scene = exports.MouseActions = exports.Renderer = void 0;
var StandardObject_1 = require("./src/StandardObject");
var RainImage_1 = __importDefault(require("./src/RainImage"));
var Card_1 = require("./src/Card");
var Size_1 = __importDefault(require("./src/Size"));
var Types_1 = require("./src/types/Types");
var events_1 = require("./src/events/events");
var SceneGroup_1 = __importDefault(require("./src/SceneGroup"));
var Files_1 = __importDefault(require("./src/Files"));
var Renderer = /** @class */ (function () {
function Renderer(width, height) {
if (!width || !height)
throw new Error("Renderer need set width and height");
var cav = document.createElement("canvas");
this.devicePixelRatio = window.devicePixelRatio;
cav.width = this.devicePixelRatio * width;
cav.height = this.devicePixelRatio * height;
this.size = new Size_1.default(cav.width, cav.height);
this.domElement = cav;
var ctx;
var ctxOrign = cav.getContext('2d');
if (ctxOrign) {
ctx = ctxOrign;
ctx.fillStyle = "#fff";
ctx.fillRect(0, 0, width, height);
this.ctx = ctx;
}
else {
throw new Error("browser don't support Canvas.");
}
}
Renderer.prototype.render = function (scene) {
var ctx = this.ctx;
var _a = this.size, width = _a.width, height = _a.height;
ctx.clearRect(0, 0, width, height);
scene.children = scene.children.sort(function (a, b) { return a.rank - b.rank; });
for (var index = 0; index < scene.children.length; index++) {
var element = scene.children[index];
element.rank = index;
if (element.target instanceof SceneGroup_1.default) {
element.target.children = element.target.children.sort(function (a, b) { return a.groupRank - b.groupRank; });
for (var index2 = 0; index2 < element.target.children.length; index2++) {
var childElement = element.target.children[index2];
childElement.target.render(ctx, element.target);
}
}
else if (element.target instanceof StandardObject_1.StandardObject) {
element.target.render(ctx, element.target);
}
}
};
Renderer.prototype.setSize = function (width, height) {
this.devicePixelRatio = window.devicePixelRatio;
this.domElement.width = this.devicePixelRatio * width;
this.domElement.height = this.devicePixelRatio * height;
};
Renderer.prototype.getSize = function () {
return new Size_1.default(this.size.width, this.size.height);
};
return Renderer;
}());
exports.Renderer = Renderer;
var MouseActions;
(function (MouseActions) {
MouseActions["Click"] = "click";
})(MouseActions = exports.MouseActions || (exports.MouseActions = {}));
var Scene = /** @class */ (function () {
function Scene() {
this.children = [];
}
Scene.prototype.add = function (newObj) {
var item = {
rank: this.children.length,
target: newObj
};
this.children.push(item);
};
Scene.prototype.addEvent = function (type, renderer, touchType) {
if (touchType === void 0) { touchType = Types_1.touchTypes.RANGE; }
var scene = this;
switch (type) {
case MouseActions.Click:
events_1.addClickEvent(renderer, touchType, scene);
return;
}
};
return Scene;
}());
exports.Scene = Scene;
exports.default = {
Renderer: Renderer,
Scene: Scene,
StandardObject: StandardObject_1.StandardObject,
RainImage: RainImage_1.default,
Card: Card_1.Card,
Files: Files_1.default
};