diff --git a/scripts/dungeonstate.js b/scripts/dungeonstate.js index 648e034..eb5922c 100644 --- a/scripts/dungeonstate.js +++ b/scripts/dungeonstate.js @@ -37,7 +37,10 @@ export class DungeonState { return DungeonState.startState(); } const obj = JSON.parse(s); - return new DungeonState(geo.wktToGeometry(obj.wkt), obj.doors, obj.config); + const geometry = geo.wktToGeometry(obj.wkt); + // fill in any new defaults + const config = foundry.utils.mergeObject(Dungeon.defaultConfig(), obj.config); + return new DungeonState(geometry, obj.doors, config); } /* -------------------------------------------- */ diff --git a/scripts/renderer.js b/scripts/renderer.js index cb0436f..074aa82 100644 --- a/scripts/renderer.js +++ b/scripts/renderer.js @@ -21,7 +21,7 @@ export const render = async (container, state) => { drawPolygonMask(clipMask, state.geometry); } container.addChild(clipMask); - await addTiledBackground(container, clipMask, state); + await addTiledBackground(container, clipMask, state.config, state.geometry); } // draw the dungeon geometry room(s) @@ -39,8 +39,8 @@ export const render = async (container, state) => { container.addChild(gfx); } -const addTiledBackground = async (container, mask, state) => { - const texture = await loadTexture(state.config.floorTexture); +const addTiledBackground = async (container, mask, config, geometry) => { + const texture = await loadTexture(config.floorTexture); if (!texture?.valid) { return; } @@ -64,7 +64,7 @@ const addTiledBackground = async (container, mask, state) => { [col * textureSize, (row + 1) * textureSize], [col * textureSize, row * textureSize], ]); - if (state.geometry.intersects(rect) && !state.geometry.touches(rect)) { + if (geometry.intersects(rect) && !geometry.touches(rect)) { const sprite = new PIXI.TilingSprite(texture, textureSize, textureSize); sprite.x = col * textureSize; sprite.y = row * textureSize;