1 /**************************************************************************
2 Ghosts Overboard - a game for Maemo 5
4 Copyright (C) 2011 Heli Hyvättinen
6 This file is part of Ghosts Overboard
8 Ghosts Overboard is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
21 **************************************************************************/
24 #include "orientationcontrolledgraphicspixmapobject.h"
26 #include <QGraphicsScene>
28 //OrientationControlledGraphicsPixmapObject::OrientationControlledGraphicsPixmapObject (QGraphicsItem *parent) :
29 // QObject(), QGraphicsPixmapItem (parent)
34 OrientationControlledGraphicsPixmapObject::OrientationControlledGraphicsPixmapObject(QPixmap pixmap, QGraphicsItem *parent) :
35 QObject(), QGraphicsPixmapItem (pixmap, parent)
38 connect(&rotationSensor_,SIGNAL(readingChanged()),this,SLOT(readRotationSensor()));
44 void OrientationControlledGraphicsPixmapObject::startMoving()
46 rotationSensor_.start();
47 // qDebug() << "started the sensor";
48 // qDebug() << rotationSensor_.isActive();
52 void OrientationControlledGraphicsPixmapObject::stopMoving()
54 rotationSensor_.stop();
55 // qDebug () << "trying to stop the sensor";
58 void OrientationControlledGraphicsPixmapObject::readRotationSensor()
60 if (!scene()) //no movement if this item does not belong to a scene
63 QRect sceneRectangle = scene()->sceneRect().toRect();
66 QRotationReading* pSensorData = rotationSensor_.reading();
68 int deltay = pSensorData->x(); //yes, you need the "x" value from the sensor for "y" direction in the scene...
69 int deltax = pSensorData->y(); //...and vice versa
72 // qDebug() << deltax << " " << deltay;
77 int newx = x() + deltax/15;
78 int newy = y() + deltay/15;
81 // qDebug() << sceneRectangle.left() << sceneRectangle.right();
84 setX(qBound(sceneRectangle.left(),newx,sceneRectangle.right()-pixmap().width()));
85 setY(qBound(sceneRectangle.top(),newy,sceneRectangle.bottom()-pixmap().height()));
88 //handle collisions and move back to the original position if false returned
90 if (handleCollisions() == false)
99 bool OrientationControlledGraphicsPixmapObject::handleCollisions()