From 9adbbfa1c3914ee0c5e0b38a5d6781f0e53d47a6 Mon Sep 17 00:00:00 2001 From: tobspr Date: Fri, 15 May 2020 19:09:29 +0200 Subject: [PATCH] Fix crash when saving due to FP imprecision --- src/js/game/components/belt.js | 2 +- src/js/game/components/item_ejector.js | 2 +- src/js/game/components/item_processor.js | 4 ++-- src/js/game/components/underground_belt.js | 2 +- src/js/game/shape_definition.js | 5 ++++- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/js/game/components/belt.js b/src/js/game/components/belt.js index 6e9569ee..339610a1 100644 --- a/src/js/game/components/belt.js +++ b/src/js/game/components/belt.js @@ -14,7 +14,7 @@ export class BeltComponent extends Component { static getSchema() { return { direction: types.string, - sortedItems: types.array(types.pair(types.ufloat, types.obj(gItemRegistry))), + sortedItems: types.array(types.pair(types.float, types.obj(gItemRegistry))), }; } diff --git a/src/js/game/components/item_ejector.js b/src/js/game/components/item_ejector.js index 95c677d3..84289ee0 100644 --- a/src/js/game/components/item_ejector.js +++ b/src/js/game/components/item_ejector.js @@ -26,7 +26,7 @@ export class ItemEjectorComponent extends Component { pos: types.vector, direction: types.enum(enumDirection), item: types.nullable(types.obj(gItemRegistry)), - progress: types.ufloat, + progress: types.float, }) ), }; diff --git a/src/js/game/components/item_processor.js b/src/js/game/components/item_processor.js index 019511c4..c2da74e1 100644 --- a/src/js/game/components/item_processor.js +++ b/src/js/game/components/item_processor.js @@ -45,12 +45,12 @@ export class ItemProcessorComponent extends Component { preferredSlot: types.nullable(types.uint), }) ), - secondsUntilEject: types.ufloat, + secondsUntilEject: types.float, itemConsumptionAnimations: types.array( types.structured({ item: types.obj(gItemRegistry), slotIndex: types.uint, - animProgress: types.ufloat, + animProgress: types.float, direction: types.enum(enumDirection), }) ), diff --git a/src/js/game/components/underground_belt.js b/src/js/game/components/underground_belt.js index c54c5a93..0215ade7 100644 --- a/src/js/game/components/underground_belt.js +++ b/src/js/game/components/underground_belt.js @@ -18,7 +18,7 @@ export class UndergroundBeltComponent extends Component { static getSchema() { return { mode: types.enum(enumUndergroundBeltMode), - pendingItems: types.array(types.pair(types.obj(gItemRegistry), types.ufloat)), + pendingItems: types.array(types.pair(types.obj(gItemRegistry), types.float)), }; } diff --git a/src/js/game/shape_definition.js b/src/js/game/shape_definition.js index 537f60b1..714bd2b2 100644 --- a/src/js/game/shape_definition.js +++ b/src/js/game/shape_definition.js @@ -140,7 +140,10 @@ export class ShapeDefinition extends BasicSerializableObject { layers.push(quads); } - return new ShapeDefinition({ layers }); + const definition = new ShapeDefinition({ layers }); + // We know the hash so save some work + definition.cachedHash = key; + return definition; } /**