From 3f736cd3db63f106eac02f220477b4a0f3b0eceb Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Thu, 31 Aug 2017 17:59:51 +0200 Subject: Implement room creation --- src/containers/map/DatacenterContainer.js | 5 +---- src/containers/map/RoomContainer.js | 8 +++++--- src/containers/map/TileContainer.js | 13 +++++++------ src/containers/map/WallContainer.js | 14 ++++++++++++++ src/containers/map/layers/HoverTileLayer.js | 23 +++++++++++++++++++++++ 5 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 src/containers/map/WallContainer.js create mode 100644 src/containers/map/layers/HoverTileLayer.js (limited to 'src/containers/map') diff --git a/src/containers/map/DatacenterContainer.js b/src/containers/map/DatacenterContainer.js index 00b6e79f..8c80146d 100644 --- a/src/containers/map/DatacenterContainer.js +++ b/src/containers/map/DatacenterContainer.js @@ -1,16 +1,13 @@ import {connect} from "react-redux"; import DatacenterGroup from "../../components/map/groups/DatacenterGroup"; -import {denormalize} from "../../store/denormalizer"; const mapStateToProps = state => { if (state.currentDatacenterId === -1) { return {}; } - const datacenter = denormalize(state, "datacenter", state.currentDatacenterId); - return { - datacenter, + datacenter: state.objects.datacenter[state.currentDatacenterId], interactionLevel: state.interactionLevel }; }; diff --git a/src/containers/map/RoomContainer.js b/src/containers/map/RoomContainer.js index d46324b2..2d078e09 100644 --- a/src/containers/map/RoomContainer.js +++ b/src/containers/map/RoomContainer.js @@ -2,15 +2,17 @@ import {connect} from "react-redux"; import {goFromBuildingToRoom} from "../../actions/interaction-level"; import RoomGroup from "../../components/map/groups/RoomGroup"; -const mapStateToProps = state => { +const mapStateToProps = (state, ownProps) => { return { - interactionLevel: state.interactionLevel + interactionLevel: state.interactionLevel, + currentRoomInConstruction: state.currentRoomInConstruction, + room: state.objects.room[ownProps.roomId], }; }; const mapDispatchToProps = (dispatch, ownProps) => { return { - onClick: () => dispatch(goFromBuildingToRoom(ownProps.room.id)) + onClick: () => dispatch(goFromBuildingToRoom(ownProps.roomId)), }; }; diff --git a/src/containers/map/TileContainer.js b/src/containers/map/TileContainer.js index 0456c423..d00c3611 100644 --- a/src/containers/map/TileContainer.js +++ b/src/containers/map/TileContainer.js @@ -2,17 +2,18 @@ import {connect} from "react-redux"; import {goFromRoomToObject} from "../../actions/interaction-level"; import TileGroup from "../../components/map/groups/TileGroup"; -const mapStateToProps = state => { +const mapStateToProps = (state, ownProps) => { return { - interactionLevel: state.interactionLevel + interactionLevel: state.interactionLevel, + tile: state.objects.tile[ownProps.tileId], }; }; -const mapDispatchToProps = (dispatch, ownProps) => { +const mapDispatchToProps = dispatch => { return { - onClick: () => { - if (ownProps.tile.objectType) { - dispatch(goFromRoomToObject(ownProps.tile.id)) + onClick: tile => { + if (tile.objectType) { + dispatch(goFromRoomToObject(tile.id)) } } }; diff --git a/src/containers/map/WallContainer.js b/src/containers/map/WallContainer.js new file mode 100644 index 00000000..f8ccb2e9 --- /dev/null +++ b/src/containers/map/WallContainer.js @@ -0,0 +1,14 @@ +import {connect} from "react-redux"; +import WallGroup from "../../components/map/groups/WallGroup"; + +const mapStateToProps = (state, ownProps) => { + return { + tiles: state.objects.room[ownProps.roomId].tileIds.map(tileId => state.objects.tile[tileId]), + }; +}; + +const WallContainer = connect( + mapStateToProps +)(WallGroup); + +export default WallContainer; diff --git a/src/containers/map/layers/HoverTileLayer.js b/src/containers/map/layers/HoverTileLayer.js new file mode 100644 index 00000000..b8868233 --- /dev/null +++ b/src/containers/map/layers/HoverTileLayer.js @@ -0,0 +1,23 @@ +import {connect} from "react-redux"; +import {toggleTileAtLocation} from "../../../actions/topology"; +import HoverTileLayerComponent from "../../../components/map/layers/HoverTileLayerComponent"; + +const mapStateToProps = state => { + return { + currentRoomInConstruction: state.currentRoomInConstruction, + isValid: (x, y) => true, // TODO implement proper validation + }; +}; + +const mapDispatchToProps = dispatch => { + return { + onClick: (x, y) => dispatch(toggleTileAtLocation(x, y)), + }; +}; + +const HoverTileLayer = connect( + mapStateToProps, + mapDispatchToProps +)(HoverTileLayerComponent); + +export default HoverTileLayer; -- cgit v1.2.3