bool HouseRenderer::touchEvent(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex, bool clicked) { if (evt == Touch::TouchEvent::TOUCH_RELEASE) { // reset last floor on release prevFloor = NULL; hoverRoom = NULL; return false; } int id = getViewTileId(x, y); if (id == -1) { prevFloor = NULL; return false; } Floor* floor = house->getFloorTile(id); if (floor != prevFloor) { // same model twice, don't toggle if (hoverRoom == NULL || !hoverRoom->contains(floor)) { // not the same room, toggle room hoverRoom = house->getRoom(floor); if (prevRoom != NULL && prevRoom != hoverRoom) { for (Floor * roomTile : prevRoom->getFloor()) { roomTile->setSelected(false); } } if (hoverRoom != NULL) { for (Floor * roomTile : hoverRoom->getFloor()) { roomTile->toggleSelect(); } } } if (hoverRoom == NULL) { floor->toggleSelect(); } prevFloor = floor; } prevRoom = hoverRoom; return true; }