UNPKG

@screeps/engine

Version:

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

104 lines (80 loc) 4.19 kB
'use strict'; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var utils = require('./../utils'), rooms = require('./rooms'), driver = utils.getDriver(), C = driver.constants, _ = require('lodash'); var runtimeData, intents, register, globals; exports.make = function (_runtimeData, _intents, _register, _globals) { runtimeData = _runtimeData; intents = _intents; register = _register; globals = _globals; if (globals.Flag) { return; } var Flag = register.wrapFn(function (name, color, secondaryColor, roomName, x, y) { globals.RoomObject.call(this, Number(x), Number(y), roomName); this.name = name; this.color = Number(color); this.secondaryColor = Number(secondaryColor || color); }); Flag.prototype = Object.create(globals.RoomObject.prototype); Flag.prototype.constructor = Flag; Object.defineProperty(Flag.prototype, 'memory', { get: function get() { if (_.isUndefined(globals.Memory.flags) || globals.Memory.flags === 'undefined') { globals.Memory.flags = {}; } if (!_.isObject(globals.Memory.flags)) { return undefined; } return globals.Memory.flags[this.name] = globals.Memory.flags[this.name] || {}; }, set: function set(value) { if (_.isUndefined(globals.Memory.flags) || globals.Memory.flags === 'undefined') { globals.Memory.flags = {}; } if (!_.isObject(globals.Memory.flags)) { throw new Error('Could not set flag memory'); } globals.Memory.flags[this.name] = value; } }); Flag.prototype.toString = register.wrapFn(function () { return '[flag ' + this.name + ']'; }); Flag.prototype.remove = register.wrapFn(function () { intents.pushByName('room', 'removeFlag', { roomName: this.pos.roomName, name: this.name }); return C.OK; }); Flag.prototype.setPosition = register.wrapFn(function (firstArg, secondArg) { var _utils$fetchXYArgumen = utils.fetchXYArguments(firstArg, secondArg, globals), _utils$fetchXYArgumen2 = _slicedToArray(_utils$fetchXYArgumen, 3), x = _utils$fetchXYArgumen2[0], y = _utils$fetchXYArgumen2[1], roomName = _utils$fetchXYArgumen2[2]; roomName = roomName || this.pos.roomName; if (_.isUndefined(x) || _.isUndefined(y)) { return C.ERR_INVALID_TARGET; } intents.pushByName('room', 'removeFlag', { roomName: this.pos.roomName, name: this.name }); intents.pushByName('room', 'createFlag', { roomName: roomName, x: x, y: y, name: this.name, color: this.color, secondaryColor: this.secondaryColor }); return C.OK; }); Flag.prototype.setColor = register.wrapFn(function (color, secondaryColor) { if (!_.contains(C.COLORS_ALL, color)) { return C.ERR_INVALID_ARGS; } secondaryColor = secondaryColor || color; if (!_.contains(C.COLORS_ALL, secondaryColor)) { return C.ERR_INVALID_ARGS; } intents.pushByName('room', 'removeFlag', { roomName: this.pos.roomName, name: this.name }); intents.pushByName('room', 'createFlag', { roomName: this.pos.roomName, x: this.pos.x, y: this.pos.y, name: this.name, color: color, secondaryColor: secondaryColor }); return C.OK; }); globals.Flag = Flag; }; //# sourceMappingURL=../sourcemaps/game/flags.js.map