From 2a4ee8e7843b691f0ec8348495ea560198eeef70 Mon Sep 17 00:00:00 2001 From: tobspr Date: Thu, 28 May 2020 13:49:50 +0200 Subject: [PATCH] Fix crash regarding blueprints being copied wrong --- src/js/core/config.js | 4 +-- src/js/core/polyfills.js | 38 +++++++++++++++++------- src/js/game/components/item_acceptor.js | 1 + src/js/game/hud/parts/entity_debugger.js | 3 ++ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/js/core/config.js b/src/js/core/config.js index 953af4e7..26105562 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -83,7 +83,7 @@ export const globalConfig = { debug: { /* dev:start */ - // fastGameEnter: true, + fastGameEnter: true, // noArtificialDelays: true, // disableSavegameWrite: true, // showEntityBounds: true, @@ -100,7 +100,7 @@ export const globalConfig = { // testClipping: true, // framePausesBetweenTicks: 40, // testTranslations: true, - // enableEntityInspector: true, + enableEntityInspector: true, // testAds: true, // disableMapOverview: true, disableTutorialHints: true, diff --git a/src/js/core/polyfills.js b/src/js/core/polyfills.js index 64e6c6b9..e5efca1d 100644 --- a/src/js/core/polyfills.js +++ b/src/js/core/polyfills.js @@ -49,17 +49,35 @@ function stringPolyfills() { } function objectPolyfills() { - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries - // @ts-ignore - if (!Object.entries) { - // @ts-ignore - Object.entries = function (obj) { - var ownProps = Object.keys(obj), - i = ownProps.length, - resArray = new Array(i); // preallocate the Array - while (i--) resArray[i] = [ownProps[i], obj[ownProps[i]]]; + // https://github.com/tc39/proposal-object-values-entries/blob/master/polyfill.js - return resArray; + // @ts-ignore + const reduce = Function.bind.call(Function.call, Array.prototype.reduce); + // @ts-ignore + const isEnumerable = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable); + // @ts-ignore + const concat = Function.bind.call(Function.call, Array.prototype.concat); + const keys = Reflect.ownKeys; + + // @ts-ignore + if (!Object.values) { + // @ts-ignore + Object.values = function values(O) { + return reduce( + keys(O), + (v, k) => concat(v, typeof k === "string" && isEnumerable(O, k) ? [O[k]] : []), + [] + ); + }; + } + + if (!Object.entries) { + Object.entries = function entries(O) { + return reduce( + keys(O), + (e, k) => concat(e, typeof k === "string" && isEnumerable(O, k) ? [[k, O[k]]] : []), + [] + ); }; } } diff --git a/src/js/game/components/item_acceptor.js b/src/js/game/components/item_acceptor.js index d9505d18..d370ae61 100644 --- a/src/js/game/components/item_acceptor.js +++ b/src/js/game/components/item_acceptor.js @@ -61,6 +61,7 @@ export class ItemAcceptorComponent extends Component { slotsCopy.push({ pos: slot.pos.copy(), directions: slot.directions.slice(), + filter: slot.filter, }); } diff --git a/src/js/game/hud/parts/entity_debugger.js b/src/js/game/hud/parts/entity_debugger.js index 816ce77c..1293d79b 100644 --- a/src/js/game/hud/parts/entity_debugger.js +++ b/src/js/game/hud/parts/entity_debugger.js @@ -26,6 +26,9 @@ export class HUDEntityDebugger extends BaseHUDPart { update() { const mousePos = this.root.app.mousePosition; + if (!mousePos) { + return; + } const worldPos = this.root.camera.screenToWorld(mousePos); const worldTile = worldPos.toTileSpace();