diff options
| author | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-08-31 22:03:58 +0200 |
|---|---|---|
| committer | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-23 10:05:56 +0200 |
| commit | f22037e54016cd0a1d5636ece395c97dfa9f5e66 (patch) | |
| tree | b23febf917332cf75763a0f6780c3c3005b67869 /src/containers/map/layers/HoverTileLayer.js | |
| parent | 3f736cd3db63f106eac02f220477b4a0f3b0eceb (diff) | |
Determine hover tile validity
Diffstat (limited to 'src/containers/map/layers/HoverTileLayer.js')
| -rw-r--r-- | src/containers/map/layers/HoverTileLayer.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/containers/map/layers/HoverTileLayer.js b/src/containers/map/layers/HoverTileLayer.js index b8868233..d8a1d983 100644 --- a/src/containers/map/layers/HoverTileLayer.js +++ b/src/containers/map/layers/HoverTileLayer.js @@ -1,11 +1,31 @@ import {connect} from "react-redux"; import {toggleTileAtLocation} from "../../../actions/topology"; import HoverTileLayerComponent from "../../../components/map/layers/HoverTileLayerComponent"; +import { + deriveValidNextTilePositions, + findPositionInPositions, + findPositionInRooms +} from "../../../util/tile-calculations"; const mapStateToProps = state => { return { currentRoomInConstruction: state.currentRoomInConstruction, - isValid: (x, y) => true, // TODO implement proper validation + isValid: (x, y) => { + const newRoom = Object.assign({}, state.objects.room[state.currentRoomInConstruction]); + const oldRooms = Object.keys(state.objects.room) + .map(id => Object.assign({}, state.objects.room[id])) + .filter(room => room.id !== state.currentRoomInConstruction); + + [...oldRooms, newRoom].forEach(room => { + room.tiles = room.tileIds.map(tileId => state.objects.tile[tileId]); + }); + if (newRoom.tileIds.length === 0) { + return findPositionInRooms(oldRooms, x, y) === -1; + } + + const validNextPositions = deriveValidNextTilePositions(oldRooms, newRoom.tiles); + return findPositionInPositions(validNextPositions, x, y) !== -1; + }, }; }; |
