summaryrefslogtreecommitdiff
path: root/src/components/map/groups/RoomGroup.js
blob: b6c285e9b11affb098f4912dd871e523c85a23d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import React from "react";
import {Group} from "react-konva";
import GrayContainer from "../../../containers/map/GrayContainer";
import TileContainer from "../../../containers/map/TileContainer";
import Shapes from "../../../shapes/index";
import {deriveWallLocations} from "../../../util/tile-calculations";
import WallSegment from "../elements/WallSegment";

const RoomGroup = ({room, interactionLevel, onClick}) => {
    return (
        <Group
            onClick={onClick}
        >
            {(() => {
                if (interactionLevel.mode === "OBJECT" && interactionLevel.roomId === room.id) {
                    return [
                        room.tiles
                            .filter(tile => tile.id !== interactionLevel.tileId)
                            .map(tile => <TileContainer key={tile.id} tile={tile}/>),
                        <GrayContainer key={-1}/>,
                        room.tiles
                            .filter(tile => tile.id === interactionLevel.tileId)
                            .map(tile => <TileContainer key={tile.id} tile={tile}/>)
                    ];
                } else {
                    return room.tiles.map(tile => (
                        <TileContainer key={tile.id} tile={tile}/>
                    ));
                }
            })()}
            {deriveWallLocations(room).map((wallSegment, index) => (
                <WallSegment key={index} wallSegment={wallSegment}/>
            ))}
        </Group>
    );
};

RoomGroup.propTypes = {
    room: Shapes.Room,
};

export default RoomGroup;