summaryrefslogtreecommitdiff
path: root/src/components/map
diff options
context:
space:
mode:
authorGeorgios Andreadis <g.andreadis@student.tudelft.nl>2017-08-22 10:48:01 +0200
committerGeorgios Andreadis <g.andreadis@student.tudelft.nl>2017-09-23 10:05:44 +0200
commit602c3eb9327a3681f5a220e13b8291bb60643cd7 (patch)
tree08bbcad1460419af12c59ecf60d102af161bf57f /src/components/map
parent193e7b32d5e3d356021a5bb8f777fec3bdc413e7 (diff)
Add tile rendering logic
Diffstat (limited to 'src/components/map')
-rw-r--r--src/components/map/MapConstants.js4
-rw-r--r--src/components/map/elements/MapTile.js24
-rw-r--r--src/components/map/elements/RoomTile.js20
-rw-r--r--src/components/map/elements/TileObject.js25
-rw-r--r--src/components/map/groups/RackGroup.js17
-rw-r--r--src/components/map/groups/TileGroup.js29
6 files changed, 95 insertions, 24 deletions
diff --git a/src/components/map/MapConstants.js b/src/components/map/MapConstants.js
index 74779c94..3c613da3 100644
--- a/src/components/map/MapConstants.js
+++ b/src/components/map/MapConstants.js
@@ -2,5 +2,9 @@ export const MAP_SIZE = 50;
export const TILE_SIZE_IN_PIXELS = 50;
export const MAP_SIZE_IN_PIXELS = MAP_SIZE * TILE_SIZE_IN_PIXELS;
+export const OBJECT_MARGIN_IN_PIXELS = 5;
+export const OBJECT_SIZE_IN_PIXELS = 40;
+
export const GRID_LINE_WIDTH_IN_PIXELS = 2;
export const ROOM_BORDER_WIDTH_IN_PIXELS = 5;
+export const OBJECT_BORDER_WIDTH_IN_PIXELS = 5;
diff --git a/src/components/map/elements/MapTile.js b/src/components/map/elements/MapTile.js
deleted file mode 100644
index b0f4959d..00000000
--- a/src/components/map/elements/MapTile.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import PropTypes from "prop-types";
-import React from "react";
-import {Group, Rect} from "react-konva";
-import {TILE_SIZE_IN_PIXELS} from "../MapConstants";
-
-const MapTile = () => (
- <Group>
- <Rect
- x={this.props.tileX * TILE_SIZE_IN_PIXELS}
- y={this.props.tileY * TILE_SIZE_IN_PIXELS}
- width={TILE_SIZE_IN_PIXELS}
- height={TILE_SIZE_IN_PIXELS}
- fill={this.props.fillColor}
- />
- </Group>
-);
-
-MapTile.propTypes = {
- tileX: PropTypes.number.isRequired,
- tileY: PropTypes.number.isRequired,
- fillColor: PropTypes.string.isRequired,
-};
-
-export default MapTile;
diff --git a/src/components/map/elements/RoomTile.js b/src/components/map/elements/RoomTile.js
new file mode 100644
index 00000000..aa837def
--- /dev/null
+++ b/src/components/map/elements/RoomTile.js
@@ -0,0 +1,20 @@
+import React from "react";
+import {Rect} from "react-konva";
+import {ROOM_DEFAULT_COLOR} from "../../../colors/index";
+import Shapes from "../../../shapes/index";
+
+const RoomTile = ({tile}) => (
+ <Rect
+ x={tile.positionX * TILE_SIZE_IN_PIXELS}
+ y={tile.positionY * TILE_SIZE_IN_PIXELS}
+ width={TILE_SIZE_IN_PIXELS}
+ height={TILE_SIZE_IN_PIXELS}
+ fill={ROOM_DEFAULT_COLOR}
+ />
+);
+
+RoomTile.propTypes = {
+ tile: Shapes.Tile,
+};
+
+export default RoomTile;
diff --git a/src/components/map/elements/TileObject.js b/src/components/map/elements/TileObject.js
new file mode 100644
index 00000000..8703011c
--- /dev/null
+++ b/src/components/map/elements/TileObject.js
@@ -0,0 +1,25 @@
+import PropTypes from "prop-types";
+import React from "react";
+import {Rect} from "react-konva";
+import {OBJECT_BORDER_COLOR, ROOM_DEFAULT_COLOR} from "../../../colors/index";
+import Shapes from "../../../shapes/index";
+import {OBJECT_BORDER_WIDTH_IN_PIXELS, OBJECT_MARGIN_IN_PIXELS} from "../MapConstants";
+
+const TileObject = ({tile, color}) => (
+ <Rect
+ x={tile.positionX * TILE_SIZE_IN_PIXELS + OBJECT_MARGIN_IN_PIXELS}
+ y={tile.positionY * TILE_SIZE_IN_PIXELS + OBJECT_MARGIN_IN_PIXELS}
+ width={TILE_SIZE_IN_PIXELS - OBJECT_MARGIN_IN_PIXELS * 2}
+ height={TILE_SIZE_IN_PIXELS - OBJECT_MARGIN_IN_PIXELS * 2}
+ fill={ROOM_DEFAULT_COLOR}
+ stroke={OBJECT_BORDER_COLOR}
+ strokeWidth={OBJECT_BORDER_WIDTH_IN_PIXELS}
+ />
+);
+
+TileObject.propTypes = {
+ tile: Shapes.Tile,
+ color: PropTypes.string.isRequired,
+};
+
+export default TileObject;
diff --git a/src/components/map/groups/RackGroup.js b/src/components/map/groups/RackGroup.js
new file mode 100644
index 00000000..9bc28331
--- /dev/null
+++ b/src/components/map/groups/RackGroup.js
@@ -0,0 +1,17 @@
+import React from "react";
+import {Group} from "react-konva";
+import {RACK_BACKGROUND_COLOR} from "../../../colors/index";
+import Shapes from "../../../shapes/index";
+import TileObject from "../elements/TileObject";
+
+const RackGroup = ({tile}) => (
+ <Group>
+ <TileObject tile={tile} color={RACK_BACKGROUND_COLOR}/>
+ </Group>
+);
+
+RackGroup.propTypes = {
+ tile: Shapes.Tile,
+};
+
+export default RackGroup;
diff --git a/src/components/map/groups/TileGroup.js b/src/components/map/groups/TileGroup.js
new file mode 100644
index 00000000..7493f953
--- /dev/null
+++ b/src/components/map/groups/TileGroup.js
@@ -0,0 +1,29 @@
+import React from "react";
+import {Group} from "react-konva";
+import Shapes from "../../../shapes/index";
+import RoomTile from "../elements/RoomTile";
+import RackGroup from "./RackGroup";
+
+const TileGroup = ({tile}) => {
+ let tileObject;
+ switch (tile.objectType) {
+ case "RACK":
+ tileObject = <RackGroup tile={tile}/>;
+ break;
+ default:
+ tileObject = null;
+ }
+
+ return (
+ <Group>
+ <RoomTile tile={tile}/>
+ {tileObject}
+ </Group>
+ );
+};
+
+TileGroup.propTypes = {
+ tile: Shapes.Tile,
+};
+
+export default TileGroup;