@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
JavaScript
;
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