+/**************************************************************************
+ Ghosts Overboard - a game for Maemo 5
+
+ Copyright (C) 2011 Heli Hyvättinen
+
+ This file is part of Ghosts Overboard
+
+ Ghosts Overboard is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+**************************************************************************/
+
#include "timercontrolledgraphicspixmapobject.h"
#include <QGraphicsScene>
#include <QDebug>
QObject(), QGraphicsPixmapItem(pixmap, parent)
{
setSpeed(speed);
- direction_ = S;
+ changeDirection();
connect(&timer_,SIGNAL(timeout()),this,SLOT(move()));
}
void TimerControlledGraphicsPixmapObject::startMoving()
{
- timer_.start();
+ if (!stoppedBecauseInvalidTime_)
+ timer_.start();
}
void TimerControlledGraphicsPixmapObject::stopMoving()
void TimerControlledGraphicsPixmapObject::setSpeed(int speed)
{
- timer_.setInterval(1000/speed); //converts from pixels in second to milliseconds per pixel
+ if (speed >0)
+ {
+ timer_.setInterval(1000/speed); //converts from pixels in second to milliseconds per pixel
+ stoppedBecauseInvalidTime_ = false;
+ }
+ else
+ stoppedBecauseInvalidTime_ = true;
+ timer_.stop();
}
+
void TimerControlledGraphicsPixmapObject::move()
{
QRect sceneRectangle = scene()->sceneRect().toRect();
- if (newx < sceneRectangle.left() || newx > sceneRectangle.right()-40)
+ if (newx < sceneRectangle.left() || newx > sceneRectangle.right()-pixmap().width())
{
changeDirection();
return;
}
- if (newy < sceneRectangle.top() || newy > sceneRectangle.bottom()-40)
+ if (newy < sceneRectangle.top() || newy > sceneRectangle.bottom()-pixmap().height())
{
changeDirection();
return; //the old x and y values remain intact
void TimerControlledGraphicsPixmapObject::changeDirection()
{
- qDebug () << "Supposed to change direction";
+ // qDebug () << "Supposed to change direction";
int direction = (qrand()%8);
- qDebug() << direction;
+ // qDebug() << direction;
switch (direction)
{