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 (88 loc) 3.47 kB
'use strict'; var _ = require('lodash'), utils = require('./../utils'), driver = utils.getRuntimeDriver(), C = driver.constants; var runtimeData, intents, register, globals; exports.make = function (_runtimeData, _intents, _register, _globals) { runtimeData = _runtimeData; intents = _intents; register = _register; globals = _globals; if (globals.Store) { return; } var Store = register.wrapFn(function (object) { Object.entries(object.store).forEach(([resourceType, resourceAmount]) => { if (resourceAmount) { this[resourceType] = resourceAmount; } }); Object.defineProperties(this, { getCapacity: { value: function getCapacity(resource) { if (!resource) { return object.storeCapacityResource ? null : object.storeCapacity || null; } return utils.capacityForResource(object, resource) || null; } }, getUsedCapacity: { value: function getUsedCapacity(resource) { if (!resource) { if (!!object.storeCapacityResource && utils.capacityForResource(object, resource) === 0) { return null; } if (this._sum === undefined) { Object.defineProperty(this, '_sum', { value: _.sum(object.store) }); } return this._sum; } return object.store[resource] || (!!object.storeCapacityResource && utils.capacityForResource(object, resource) === 0 ? null : 0); } }, getFreeCapacity: { value: function getFreeCapacity(resource) { if (utils.capacityForResource(object, resource) === 0) { return null; } if (!object.storeCapacity) { return this.getCapacity(resource) - this.getUsedCapacity(resource); } const capacity = this.getCapacity(resource); if (!capacity) { return null; } if (object.storeCapacityResource) { return capacity - this.getUsedCapacity(resource); } if (this._sum === undefined) { Object.defineProperty(this, '_sum', { value: _.sum(object.store) }); } return capacity - this._sum; } }, toString: { value: function toString() { return `[store]`; } } }); return new Proxy(this, { get(target, name) { if (target[name] !== undefined) { return target[name]; } if (C.RESOURCES_ALL.indexOf(name) !== -1) { return 0; } } }); }); Object.defineProperty(globals, 'Store', { enumerable: true, value: Store }); }; //# sourceMappingURL=../sourcemaps/game/store.js.map