From 8bd2bc91cc7e97f233031a42ccfda92af5e8bb96 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Sun, 10 Sep 2017 21:47:58 +0200 Subject: Implement map zooming --- src/util/tile-calculations.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/util/tile-calculations.js') diff --git a/src/util/tile-calculations.js b/src/util/tile-calculations.js index 71442941..260f28e6 100644 --- a/src/util/tile-calculations.js +++ b/src/util/tile-calculations.js @@ -208,3 +208,44 @@ export function findTileWithPosition(tiles, positionX, positionY) { return null; } + +export function calculateRoomListBounds(rooms) { + const min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE}; + const max = {x: -1, y: -1}; + + rooms.forEach((room) => { + room.tiles.forEach((tile) => { + if (tile.positionX < min.x) { + min.x = tile.positionX; + } + if (tile.positionY < min.y) { + min.y = tile.positionY; + } + + if (tile.positionX > max.x) { + max.x = tile.positionX; + } + if (tile.positionY > max.y) { + max.y = tile.positionY; + } + }); + }); + + max.x++; + max.y++; + + const center = { + x: min.x + (max.x - min.x) / 2.0, + y: min.y + (max.y - min.y) / 2.0 + }; + + return { + min, + center, + max + }; +} + +export function calculateRoomBounds(room) { + return calculateRoomListBounds([room]); +} -- cgit v1.2.3