Exemple #1
0
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;
}