UNPKG

@screeps/engine

Version:

This is a module for Screeps standalone server. See [main repository](https://github.com/screeps/screeps) for more info.

55 lines (43 loc) 1.73 kB
'use strict'; var utils = require('./../utils'), rooms = require('./rooms'), driver = utils.getDriver(), C = driver.constants; var runtimeData, intents, register, globals; exports.createPrototypeMaker = function (name, constructor, parent, properties, methods) { return function (_runtimeData, _intents, _register, _globals) { runtimeData = _runtimeData; intents = _intents; register = _register; globals = _globals; if (globals.Nuke) { return; } var data = function data(id) { if (!runtimeData.roomObjects[id]) { throw new Error("Could not find an object with ID " + id); } return runtimeData.roomObjects[id]; }; var _CustomObject = register.wrapFn(function (id) { var _data = data(id); if (parent) { globals[parent].call(this, id); } else { globals.RoomObject.call(this, _data.x, _data.y, _data.room); } this.id = id; }); _CustomObject.prototype = Object.create(parent ? globals[parent].prototype : globals.RoomObject.prototype); _CustomObject.prototype.constructor = _CustomObject; utils.defineGameObjectProperties(_CustomObject.prototype, data, properties); for (var method in methods) { _CustomObject.prototype[method] = register.wrapFn(methods[method]); } _CustomObject.prototype.toString = register.wrapFn(function () { return '[' + name + ' #' + this.id + ']'; }); globals[name] = _CustomObject; }; }; //# sourceMappingURL=../sourcemaps/game/custom-objects.js.map