summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eblomfel@trolltech.com>2009-07-28 09:38:19 (GMT)
committerEskil Abrahamsen Blomfeldt <eblomfel@trolltech.com>2009-07-28 09:43:12 (GMT)
commitd22d08f3f8a70edfc66c0f6c2fd952688b64fcc2 (patch)
treea83a08e5f8b8b7384a2dfc09d1954cb960e62565
parente498880396d44c90e46308e2fa5903b51f9f4132 (diff)
downloadQt-d22d08f3f8a70edfc66c0f6c2fd952688b64fcc2.zip
Qt-d22d08f3f8a70edfc66c0f6c2fd952688b64fcc2.tar.gz
Qt-d22d08f3f8a70edfc66c0f6c2fd952688b64fcc2.tar.bz2
Remove tank game example
After discussions with product management, it was considered best that this example be removed until it can be improved. There are some bugs an irregularities that should be cleaned up, and the theme should be made less violent. Reviewed-by: Volker Hilsheimer
-rw-r--r--doc/src/examples.qdoc1
-rw-r--r--doc/src/examples/tankgame.qdoc117
-rw-r--r--examples/statemachine/statemachine.pro4
-rw-r--r--examples/statemachine/tankgame/gameitem.cpp129
-rw-r--r--examples/statemachine/tankgame/gameitem.h66
-rw-r--r--examples/statemachine/tankgame/gameovertransition.cpp80
-rw-r--r--examples/statemachine/tankgame/gameovertransition.h63
-rw-r--r--examples/statemachine/tankgame/main.cpp53
-rw-r--r--examples/statemachine/tankgame/mainwindow.cpp342
-rw-r--r--examples/statemachine/tankgame/mainwindow.h93
-rw-r--r--examples/statemachine/tankgame/plugin.h62
-rw-r--r--examples/statemachine/tankgame/rocketitem.cpp101
-rw-r--r--examples/statemachine/tankgame/rocketitem.h66
-rw-r--r--examples/statemachine/tankgame/tankgame.pro19
-rw-r--r--examples/statemachine/tankgame/tankitem.cpp302
-rw-r--r--examples/statemachine/tankgame/tankitem.h109
-rw-r--r--examples/statemachine/tankgameplugins/random_ai/random_ai.pro13
-rw-r--r--examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.cpp78
-rw-r--r--examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.h105
-rw-r--r--examples/statemachine/tankgameplugins/seek_ai/seek_ai.cpp89
-rw-r--r--examples/statemachine/tankgameplugins/seek_ai/seek_ai.h249
-rw-r--r--examples/statemachine/tankgameplugins/seek_ai/seek_ai.pro13
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai/spin_ai.cpp70
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai/spin_ai.h92
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai/spin_ai.pro13
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.cpp70
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.h92
-rw-r--r--examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.pro13
-rw-r--r--examples/statemachine/tankgameplugins/tankgameplugins.pro11
29 files changed, 1 insertions, 2514 deletions
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
index 2861c90..e85acd1 100644
--- a/doc/src/examples.qdoc
+++ b/doc/src/examples.qdoc
@@ -324,7 +324,6 @@
\o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
\o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
\o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
- \o \l{statemachine/tankgame}{Tank Game}\raisedaster
\endlist
\section1 Threads
diff --git a/doc/src/examples/tankgame.qdoc b/doc/src/examples/tankgame.qdoc
deleted file mode 100644
index 536e582..0000000
--- a/doc/src/examples/tankgame.qdoc
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example statemachine/tankgame
- \title Tank Game Example
-
- The Tank Game example is part of the in \l{The State Machine Framework}. It shows how to use
- parallel states to implement artificial intelligence controllers that run in parallel, and error
- states to handle run-time errors in parts of the state graph created by external plugins.
-
- \image tankgame-example.png
-
- In this example we write a simple game. The application runs a state machine with two main
- states: A "stopped" state and a "running" state. The user can load plugins from the disk by
- selecting the "Add tank" menu item.
-
- When the "Add tank" menu item is selected, the "plugins" subdirectory in the example's
- directory is searched for compatible plugins. If any are found, they will be listed in a
- dialog box created using QInputDialog::getItem().
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 1
-
- If the user selects a plugin, the application will construct a TankItem object, which inherits
- from QGraphicsItem and QObject, and which implements an agreed-upon interface using the
- meta-object mechanism.
-
- \snippet examples/statemachine/tankgame/tankitem.h 0
-
- The tank item will be passed to the plugin's create() function. This will in turn return a
- QState object which is expected to implement an artificial intelligence which controls the
- tank and attempts to destroy other tanks it detects.
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 2
-
- Each returned QState object becomes a descendant of a \c region in the "running" state, which is
- defined as a parallel state. This means that entering the "running" state will cause each of the
- plugged-in QState objects to be entered simultaneously, allowing the tanks to run independently
- of each other.
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 0
-
- The maximum number of tanks on the map is four, and when this number is reached, the
- "Add tank" menu item should be disabled. This is implemented by giving the "stopped" state two
- children which define whether the map is full or not.
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 5
-
- To make sure that we go into the correct child state when returning from the "running" state
- (if the "Stop game" menu item is selected while the game is running) we also give the "stopped"
- state a history state which we make the initial state of "stopped" state.
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 3
-
- Since part of the state graph is defined by external plugins, we have no way of controlling
- whether they contain errors. By default, run-time errors are handled in the state machine by
- entering a top level state which prints out an error message and never exits. If we were to
- use this default behavior, a run-time error in any of the plugins would cause the "running"
- state to exit, and thus all the other tanks to stop running as well. A better solution would
- be if the broken plugin was disabled and the rest of the tanks allowed to continue as before.
-
- This is done by setting the error state of the plugin's top-most state to a special error state
- defined specifically for the plugin in question.
-
- \snippet examples/statemachine/tankgame/mainwindow.cpp 4
-
- If a run-time error occurs in \c pluginState or any of its descendants, the state machine will
- search the hierarchy of ancestors until it finds a state whose error state is different from
- \c null. (Note that if we are worried that a plugin could inadvertedly be overriding our
- error state, we could search the descendants of \c pluginState and verify that their error
- states are set to \c null before accepting the plugin.)
-
- The specialized \c errorState sets the "enabled" property of the tank item in question to false,
- causing it to be painted with a red cross over it to indicate that it is no longer running.
- Since the error state is a child of the same region in the parallel "running" state as
- \c pluginState, it will not exit the "running" state, and the other tanks will continue running
- without disruption.
-
-*/
diff --git a/examples/statemachine/statemachine.pro b/examples/statemachine/statemachine.pro
index 5074a3c..ea3e7a8 100644
--- a/examples/statemachine/statemachine.pro
+++ b/examples/statemachine/statemachine.pro
@@ -4,9 +4,7 @@ SUBDIRS = \
factorial \
pingpong \
trafficlight \
- twowaybutton \
- tankgame \
- tankgameplugins
+ twowaybutton
# install
target.path = $$[QT_INSTALL_EXAMPLES]/statemachine
diff --git a/examples/statemachine/tankgame/gameitem.cpp b/examples/statemachine/tankgame/gameitem.cpp
deleted file mode 100644
index 94affb4..0000000
--- a/examples/statemachine/tankgame/gameitem.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "gameitem.h"
-
-#include <QGraphicsScene>
-#include <QDebug>
-
-GameItem::GameItem(QObject *parent) : QObject(parent)
-{
-}
-
-QPointF GameItem::tryMove(const QPointF &requestedPosition, QLineF *collidedLine,
- QGraphicsItem **collidedItem) const
-{
- QLineF movementPath(pos(), requestedPosition);
-
- qreal cannonLength = 0.0;
- {
- QPointF p1 = boundingRect().center();
- QPointF p2 = QPointF(boundingRect().right() + 10.0, p1.y());
-
- cannonLength = QLineF(mapToScene(p1), mapToScene(p2)).length();
- }
-
- movementPath.setLength(movementPath.length() + cannonLength);
-
- QRectF boundingRectPath(QPointF(qMin(movementPath.x1(), movementPath.x2()), qMin(movementPath.y1(), movementPath.y2())),
- QPointF(qMax(movementPath.x1(), movementPath.x2()), qMax(movementPath.y1(), movementPath.y2())));
-
- QList<QGraphicsItem *> itemsInRect = scene()->items(boundingRectPath, Qt::IntersectsItemBoundingRect);
-
- QPointF nextPoint = requestedPosition;
- QRectF sceneRect = scene()->sceneRect();
-
- foreach (QGraphicsItem *item, itemsInRect) {
- if (item == static_cast<const QGraphicsItem *>(this))
- continue;
-
- QPolygonF mappedBoundingRect = item->mapToScene(item->boundingRect());
- for (int i=0; i<mappedBoundingRect.size(); ++i) {
- QPointF p1 = mappedBoundingRect.at(i == 0 ? mappedBoundingRect.size()-1 : i-1);
- QPointF p2 = mappedBoundingRect.at(i);
-
- QLineF rectLine(p1, p2);
- QPointF intersectionPoint;
- QLineF::IntersectType intersectType = movementPath.intersect(rectLine, &intersectionPoint);
-
- if (intersectType == QLineF::BoundedIntersection) {
- movementPath.setP2(intersectionPoint);
- movementPath.setLength(movementPath.length() - cannonLength);
- nextPoint = movementPath.p2();
-
- if (collidedLine != 0)
- *collidedLine = rectLine;
-
- if (collidedItem != 0)
- *collidedItem = item;
- }
- }
- }
-
-
- // Don't go outside of map
- if (nextPoint.x() < sceneRect.left()) {
- nextPoint.rx() = sceneRect.left();
- if (collidedLine != 0)
- *collidedLine = QLineF(scene()->sceneRect().topLeft(), scene()->sceneRect().bottomLeft());
- }
-
- if (nextPoint.x() > sceneRect.right()) {
- nextPoint.rx() = sceneRect.right();
- if (collidedLine != 0)
- *collidedLine = QLineF(scene()->sceneRect().topRight(), scene()->sceneRect().bottomRight());
- }
-
- if (nextPoint.y() < sceneRect.top()) {
- nextPoint.ry() = sceneRect.top();
- if (collidedLine != 0)
- *collidedLine = QLineF(scene()->sceneRect().topLeft(), scene()->sceneRect().topRight());
- }
-
- if (nextPoint.y() > sceneRect.bottom()) {
- nextPoint.ry() = sceneRect.bottom();
- if (collidedLine != 0)
- *collidedLine = QLineF(scene()->sceneRect().bottomLeft(), scene()->sceneRect().bottomRight());
- }
-
- return nextPoint;
-}
-
diff --git a/examples/statemachine/tankgame/gameitem.h b/examples/statemachine/tankgame/gameitem.h
deleted file mode 100644
index af012bb..0000000
--- a/examples/statemachine/tankgame/gameitem.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef GAMEITEM_H
-#define GAMEITEM_H
-
-#include <QGraphicsItem>
-
-QT_BEGIN_NAMESPACE
-class QLineF;
-QT_END_NAMESPACE
-class GameItem: public QObject, public QGraphicsItem
-{
- Q_OBJECT
-public:
- enum { Type = UserType + 1 };
- int type() const { return Type; }
-
- GameItem(QObject *parent = 0);
-
- virtual void idle(qreal elapsed) = 0;
-
-protected:
- QPointF tryMove(const QPointF &requestedPosition, QLineF *collidedLine = 0,
- QGraphicsItem **collidedItem = 0) const;
-};
-
-#endif
diff --git a/examples/statemachine/tankgame/gameovertransition.cpp b/examples/statemachine/tankgame/gameovertransition.cpp
deleted file mode 100644
index 634fbce..0000000
--- a/examples/statemachine/tankgame/gameovertransition.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "gameovertransition.h"
-#include "tankitem.h"
-
-#include <QSignalEvent>
-#include <QSignalMapper>
-
-GameOverTransition::GameOverTransition(QAbstractState *targetState)
- : QSignalTransition(new QSignalMapper(), SIGNAL(mapped(QObject*)))
-{
- setTargetState(targetState);
-
- QSignalMapper *mapper = qobject_cast<QSignalMapper *>(senderObject());
- mapper->setParent(this);
-}
-
-void GameOverTransition::addTankItem(TankItem *tankItem)
-{
- m_tankItems.append(tankItem);
-
- QSignalMapper *mapper = qobject_cast<QSignalMapper *>(senderObject());
- mapper->setMapping(tankItem, tankItem);
- connect(tankItem, SIGNAL(aboutToBeDestroyed()), mapper, SLOT(map()));
-}
-
-bool GameOverTransition::eventTest(QEvent *e)
-{
- bool ret = QSignalTransition::eventTest(e);
-
- if (ret) {
- QSignalEvent *signalEvent = static_cast<QSignalEvent *>(e);
- QObject *sender = qvariant_cast<QObject *>(signalEvent->arguments().at(0));
- TankItem *tankItem = qobject_cast<TankItem *>(sender);
- m_tankItems.removeAll(tankItem);
-
- return m_tankItems.size() <= 1;
- } else {
- return false;
- }
-}
diff --git a/examples/statemachine/tankgame/gameovertransition.h b/examples/statemachine/tankgame/gameovertransition.h
deleted file mode 100644
index e918359..0000000
--- a/examples/statemachine/tankgame/gameovertransition.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef GAMEOVERTRANSITION_H
-#define GAMEOVERTRANSITION_H
-
-#include <QSignalTransition>
-
-class TankItem;
-class GameOverTransition: public QSignalTransition
-{
- Q_OBJECT
-public:
- GameOverTransition(QAbstractState *targetState);
-
- void addTankItem(TankItem *tankItem);
-
-protected:
- bool eventTest(QEvent *event);
-
-private:
- QList<TankItem *> m_tankItems;
-};
-
-#endif
diff --git a/examples/statemachine/tankgame/main.cpp b/examples/statemachine/tankgame/main.cpp
deleted file mode 100644
index 85e2747..0000000
--- a/examples/statemachine/tankgame/main.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include "mainwindow.h"
-
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
-
- MainWindow mainWindow;
- mainWindow.show();
-
- return app.exec();
-}
diff --git a/examples/statemachine/tankgame/mainwindow.cpp b/examples/statemachine/tankgame/mainwindow.cpp
deleted file mode 100644
index 596cdfe..0000000
--- a/examples/statemachine/tankgame/mainwindow.cpp
+++ /dev/null
@@ -1,342 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mainwindow.h"
-#include "tankitem.h"
-#include "rocketitem.h"
-#include "plugin.h"
-#include "gameovertransition.h"
-
-#include <QStateMachine>
-#include <QGraphicsView>
-#include <QAction>
-#include <QMenuBar>
-#include <QState>
-#include <QHistoryState>
-#include <QTimer>
-#include <QFileDialog>
-#include <QPluginLoader>
-#include <QApplication>
-#include <QInputDialog>
-#include <QMessageBox>
-
-MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent), m_scene(0), m_machine(0), m_runningState(0), m_started(false)
-{
- init();
-}
-
-MainWindow::~MainWindow()
-{
-}
-
-void MainWindow::addWall(const QRectF &wall)
-{
- QGraphicsRectItem *item = new QGraphicsRectItem;
- item->setRect(wall);
- item->setBrush(Qt::darkGreen);
- item->setPen(QPen(Qt::black, 0));
-
- m_scene->addItem(item);
-}
-
-void MainWindow::init()
-{
- setWindowTitle("Pluggable Tank Game");
-
- QGraphicsView *view = new QGraphicsView(this);
- view->setRenderHints(QPainter::Antialiasing);
- setCentralWidget(view);
-
- m_scene = new QGraphicsScene(this);
- view->setScene(m_scene);
-
- QRectF sceneRect = QRectF(-200.0, -200.0, 400.0, 400.0);
- m_scene->setSceneRect(sceneRect);
-
- {
- TankItem *item = new TankItem(this);
-
- item->setPos(m_scene->sceneRect().topLeft() + QPointF(30.0, 30.0));
- item->setDirection(45.0);
- item->setColor(Qt::red);
-
- m_spawns.append(item);
- }
-
- {
- TankItem *item = new TankItem(this);
-
- item->setPos(m_scene->sceneRect().topRight() + QPointF(-30.0, 30.0));
- item->setDirection(135.0);
- item->setColor(Qt::green);
-
- m_spawns.append(item);
- }
-
- {
- TankItem *item = new TankItem(this);
-
- item->setPos(m_scene->sceneRect().bottomRight() + QPointF(-30.0, -30.0));
- item->setDirection(225.0);
- item->setColor(Qt::blue);
-
- m_spawns.append(item);
- }
-
- {
- TankItem *item = new TankItem(this);
-
- item->setPos(m_scene->sceneRect().bottomLeft() + QPointF(30.0, -30.0));
- item->setDirection(315.0);
- item->setColor(Qt::yellow);
-
- m_spawns.append(item);
- }
-
- QPointF centerOfMap = sceneRect.center();
-
- addWall(QRectF(centerOfMap + QPointF(-50.0, -60.0), centerOfMap + QPointF(50.0, -50.0)));
- addWall(QRectF(centerOfMap - QPointF(-50.0, -60.0), centerOfMap - QPointF(50.0, -50.0)));
- addWall(QRectF(centerOfMap + QPointF(-50.0, -50.0), centerOfMap + QPointF(-40.0, 50.0)));
- addWall(QRectF(centerOfMap - QPointF(-50.0, -50.0), centerOfMap - QPointF(-40.0, 50.0)));
-
- addWall(QRectF(sceneRect.topLeft() + QPointF(sceneRect.width() / 2.0 - 5.0, -10.0),
- sceneRect.topLeft() + QPointF(sceneRect.width() / 2.0 + 5.0, 100.0)));
- addWall(QRectF(sceneRect.bottomLeft() + QPointF(sceneRect.width() / 2.0 - 5.0, 10.0),
- sceneRect.bottomLeft() + QPointF(sceneRect.width() / 2.0 + 5.0, -100.0)));
- addWall(QRectF(sceneRect.topLeft() + QPointF(-10.0, sceneRect.height() / 2.0 - 5.0),
- sceneRect.topLeft() + QPointF(100.0, sceneRect.height() / 2.0 + 5.0)));
- addWall(QRectF(sceneRect.topRight() + QPointF(10.0, sceneRect.height() / 2.0 - 5.0),
- sceneRect.topRight() + QPointF(-100.0, sceneRect.height() / 2.0 + 5.0)));
-
-
- QAction *addTankAction = menuBar()->addAction("&Add tank");
- QAction *runGameAction = menuBar()->addAction("&Run game");
- runGameAction->setObjectName("runGameAction");
- QAction *stopGameAction = menuBar()->addAction("&Stop game");
- menuBar()->addSeparator();
- QAction *quitAction = menuBar()->addAction("&Quit");
-
- connect(addTankAction, SIGNAL(triggered()), this, SLOT(addTank()));
- connect(quitAction, SIGNAL(triggered()), this, SLOT(close()));
-
- m_machine = new QStateMachine(this);
- QState *stoppedState = new QState(m_machine);
- stoppedState->setObjectName("stoppedState");
- stoppedState->assignProperty(runGameAction, "enabled", true);
- stoppedState->assignProperty(stopGameAction, "enabled", false);
- stoppedState->assignProperty(this, "started", false);
- m_machine->setInitialState(stoppedState);
-
-//! [5]
- QState *spawnsAvailable = new QState(stoppedState);
- spawnsAvailable->assignProperty(addTankAction, "enabled", true);
-
- QState *noSpawnsAvailable = new QState(stoppedState);
- noSpawnsAvailable->assignProperty(addTankAction, "enabled", false);
-//! [5]
- spawnsAvailable->setObjectName("spawnsAvailable");
- noSpawnsAvailable->setObjectName("noSpawnsAvailable");
-
- spawnsAvailable->addTransition(this, SIGNAL(mapFull()), noSpawnsAvailable);
-
-//! [3]
- QHistoryState *hs = new QHistoryState(stoppedState);
- hs->setDefaultState(spawnsAvailable);
-//! [3]
- hs->setObjectName("hs");
-
- stoppedState->setInitialState(hs);
-
-//! [0]
- m_runningState = new QState(QState::ParallelStates, m_machine);
-//! [0]
- m_runningState->setObjectName("runningState");
- m_runningState->assignProperty(addTankAction, "enabled", false);
- m_runningState->assignProperty(runGameAction, "enabled", false);
- m_runningState->assignProperty(stopGameAction, "enabled", true);
-
- QState *gameOverState = new QState(m_machine);
- gameOverState->setObjectName("gameOverState");
- gameOverState->assignProperty(stopGameAction, "enabled", false);
- connect(gameOverState, SIGNAL(entered()), this, SLOT(gameOver()));
-
- stoppedState->addTransition(runGameAction, SIGNAL(triggered()), m_runningState);
- m_runningState->addTransition(stopGameAction, SIGNAL(triggered()), stoppedState);
-
- m_gameOverTransition = new GameOverTransition(gameOverState);
- m_runningState->addTransition(m_gameOverTransition);
-
- QTimer *timer = new QTimer(this);
- timer->setInterval(100);
- connect(timer, SIGNAL(timeout()), this, SLOT(runStep()));
- connect(m_runningState, SIGNAL(entered()), timer, SLOT(start()));
- connect(m_runningState, SIGNAL(exited()), timer, SLOT(stop()));
-
- m_machine->start();
- m_time.start();
-}
-
-void MainWindow::runStep()
-{
- if (!m_started) {
- m_time.restart();
- m_started = true;
- } else {
- int elapsed = m_time.elapsed();
- if (elapsed > 0) {
- m_time.restart();
- qreal elapsedSecs = elapsed / 1000.0;
- QList<QGraphicsItem *> items = m_scene->items();
- foreach (QGraphicsItem *item, items) {
- if (GameItem *gameItem = qgraphicsitem_cast<GameItem *>(item))
- gameItem->idle(elapsedSecs);
- }
- }
- }
-}
-
-void MainWindow::gameOver()
-{
- QList<QGraphicsItem *> items = m_scene->items();
-
- TankItem *lastTankStanding = 0;
- foreach (QGraphicsItem *item, items) {
- if (GameItem *gameItem = qgraphicsitem_cast<GameItem *>(item)) {
- if ((lastTankStanding = qobject_cast<TankItem *>(gameItem)) != 0)
- break;
- }
- }
-
- QMessageBox::information(this, "Game over!",
- QString::fromLatin1("The tank played by '%1' has won!").arg(lastTankStanding->objectName()));
-}
-
-void MainWindow::addRocket()
-{
- TankItem *tankItem = qobject_cast<TankItem *>(sender());
- if (tankItem != 0) {
- RocketItem *rocketItem = new RocketItem;
-
- QPointF s = tankItem->mapToScene(QPointF(tankItem->boundingRect().right() + 10.0,
- tankItem->boundingRect().center().y()));
- rocketItem->setPos(s);
- rocketItem->setDirection(tankItem->direction());
- m_scene->addItem(rocketItem);
- }
-}
-
-void MainWindow::addTank()
-{
- Q_ASSERT(!m_spawns.isEmpty());
-
- QDir pluginsDir(qApp->applicationDirPath());
-#if defined(Q_OS_WIN)
- if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
- pluginsDir.cdUp();
-#elif defined(Q_OS_MAC)
- if (pluginsDir.dirName() == "MacOS") {
- pluginsDir.cdUp();
- pluginsDir.cdUp();
- pluginsDir.cdUp();
- }
-#endif
-
- pluginsDir.cd("plugins");
-
- QStringList itemNames;
- QList<Plugin *> items;
- foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
- QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
- QObject *possiblePlugin = loader.instance();
- if (Plugin *plugin = qobject_cast<Plugin *>(possiblePlugin)) {
- QString objectName = possiblePlugin->objectName();
- if (objectName.isEmpty())
- objectName = fileName;
-
- itemNames.append(objectName);
- items.append(plugin);
- }
- }
-
- if (items.isEmpty()) {
- QMessageBox::information(this, "No tank types found", "Please build the errorstateplugins directory");
- return;
- }
-
- bool ok;
-//! [1]
- QString selectedName = QInputDialog::getItem(this, "Select a tank type", "Tank types",
- itemNames, 0, false, &ok);
-//! [1]
-
- if (ok && !selectedName.isEmpty()) {
- int idx = itemNames.indexOf(selectedName);
- if (Plugin *plugin = idx >= 0 ? items.at(idx) : 0) {
- TankItem *tankItem = m_spawns.takeLast();
- tankItem->setObjectName(selectedName);
- tankItem->setToolTip(selectedName);
- m_scene->addItem(tankItem);
- connect(tankItem, SIGNAL(cannonFired()), this, SLOT(addRocket()));
- if (m_spawns.isEmpty())
- emit mapFull();
-
- m_gameOverTransition->addTankItem(tankItem);
-
- QState *region = new QState(m_runningState);
- region->setObjectName(QString::fromLatin1("region%1").arg(m_spawns.size()));
-//! [2]
- QState *pluginState = plugin->create(region, tankItem);
-//! [2]
- region->setInitialState(pluginState);
-
- // If the plugin has an error it is disabled
-//! [4]
- QState *errorState = new QState(region);
- errorState->setObjectName(QString::fromLatin1("errorState%1").arg(m_spawns.size()));
- errorState->assignProperty(tankItem, "enabled", false);
- pluginState->setErrorState(errorState);
-//! [4]
- }
- }
-}
-
diff --git a/examples/statemachine/tankgame/mainwindow.h b/examples/statemachine/tankgame/mainwindow.h
deleted file mode 100644
index d42b7ac..0000000
--- a/examples/statemachine/tankgame/mainwindow.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-#include <QTime>
-
-QT_BEGIN_NAMESPACE
-class QGraphicsScene;
-class QStateMachine;
-class QState;
-QT_END_NAMESPACE
-class GameOverTransition;
-class TankItem;
-
-class MainWindow: public QMainWindow
-{
- Q_OBJECT
- Q_PROPERTY(bool started READ started WRITE setStarted)
-public:
- MainWindow(QWidget *parent = 0);
- ~MainWindow();
-
- void setStarted(bool b) { m_started = b; }
- bool started() const { return m_started; }
-
-public slots:
- void addTank();
- void addRocket();
- void runStep();
- void gameOver();
-
-signals:
- void mapFull();
-
-private:
- void init();
- void addWall(const QRectF &wall);
-
- QGraphicsScene *m_scene;
-
- QStateMachine *m_machine;
- QState *m_runningState;
- GameOverTransition *m_gameOverTransition;
-
- QList<TankItem *> m_spawns;
- QTime m_time;
-
- bool m_started : 1;
-};
-
-#endif
-
diff --git a/examples/statemachine/tankgame/plugin.h b/examples/statemachine/tankgame/plugin.h
deleted file mode 100644
index 97e4640..0000000
--- a/examples/statemachine/tankgame/plugin.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PLUGIN_H
-#define PLUGIN_H
-
-#include <QtPlugin>
-
-QT_BEGIN_NAMESPACE
-class QState;
-QT_END_NAMESPACE
-class Plugin
-{
-public:
- virtual ~Plugin() {}
-
- virtual QState *create(QState *parentState, QObject *tank) = 0;
-};
-
-QT_BEGIN_NAMESPACE
-Q_DECLARE_INTERFACE(Plugin, "TankPlugin")
-QT_END_NAMESPACE
-
-#endif
diff --git a/examples/statemachine/tankgame/rocketitem.cpp b/examples/statemachine/tankgame/rocketitem.cpp
deleted file mode 100644
index d286e5d..0000000
--- a/examples/statemachine/tankgame/rocketitem.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "rocketitem.h"
-#include "tankitem.h"
-
-#include <QPainter>
-#include <QGraphicsScene>
-
-#include <math.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-RocketItem::RocketItem(QObject *parent)
- : GameItem(parent), m_direction(0.0), m_distance(300.0)
-{
-}
-
-QRectF RocketItem::boundingRect() const
-{
- return QRectF(-1.0, -1.0, 2.0, 2.0);
-}
-
-void RocketItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
-{
- painter->setBrush(Qt::black);
- painter->drawEllipse(boundingRect());
-}
-
-void RocketItem::idle(qreal elapsed)
-{
- qreal dist = elapsed * speed();
-
- m_distance -= dist;
- if (m_distance < 0.0) {
- scene()->removeItem(this);
- delete this;
- return;
- }
-
- qreal a = m_direction * M_PI / 180.0;
-
- qreal yd = dist * sin(a);
- qreal xd = dist * sin(M_PI / 2.0 - a);
-
- QPointF requestedPosition = pos() + QPointF(xd, yd);
- QGraphicsItem *collidedItem = 0;
- QPointF nextPosition = tryMove(requestedPosition, 0, &collidedItem);
- if (requestedPosition == nextPosition) {
- setPos(nextPosition);
- } else {
- if (GameItem *gameItem = qgraphicsitem_cast<GameItem *>(collidedItem)) {
- TankItem *tankItem = qobject_cast<TankItem *>(gameItem);
- if (tankItem != 0)
- tankItem->hitByRocket();
- }
-
- scene()->removeItem(this);
- delete this;
- }
-}
diff --git a/examples/statemachine/tankgame/rocketitem.h b/examples/statemachine/tankgame/rocketitem.h
deleted file mode 100644
index a485d03..0000000
--- a/examples/statemachine/tankgame/rocketitem.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef ROCKETITEM_H
-#define ROCKETITEM_H
-
-#include "gameitem.h"
-
-class RocketItem: public GameItem
-{
- Q_OBJECT
-public:
- RocketItem(QObject *parent = 0);
-
- virtual void idle(qreal elapsed);
- qreal speed() const { return 100.0; }
- void setDirection(qreal direction) { m_direction = direction; }
-
-protected:
- virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
- QRectF boundingRect() const;
-
-private:
- qreal m_direction;
- qreal m_distance;
-};
-
-#endif
diff --git a/examples/statemachine/tankgame/tankgame.pro b/examples/statemachine/tankgame/tankgame.pro
deleted file mode 100644
index 59415be..0000000
--- a/examples/statemachine/tankgame/tankgame.pro
+++ /dev/null
@@ -1,19 +0,0 @@
-HEADERS += mainwindow.h \
- plugin.h \
- tankitem.h \
- rocketitem.h \
- gameitem.h \
- gameovertransition.h
-SOURCES += main.cpp \
- mainwindow.cpp \
- tankitem.cpp \
- rocketitem.cpp \
- gameitem.cpp \
- gameovertransition.cpp
-CONFIG += console
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tankgame.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame
-INSTALLS += target sources
diff --git a/examples/statemachine/tankgame/tankitem.cpp b/examples/statemachine/tankgame/tankitem.cpp
deleted file mode 100644
index 192b272..0000000
--- a/examples/statemachine/tankgame/tankitem.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "tankitem.h"
-
-#include <QPainter>
-#include <QGraphicsScene>
-#include <QDebug>
-
-#include <math.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-class Action
-{
-public:
- Action(TankItem *item) : m_item(item)
- {
- }
-
- TankItem *item() const { return m_item; }
- void setItem(TankItem *item) { m_item = item; }
-
- virtual bool apply(qreal timeDelta) = 0;
-
-private:
- TankItem *m_item;
-};
-
-class MoveAction: public Action
-{
-public:
- MoveAction(TankItem *item, qreal distance)
- : Action(item), m_distance(distance)
- {
- m_reverse = m_distance < 0.0;
- }
-
- bool apply(qreal timeDelta)
- {
- qreal dist = timeDelta * item()->speed() * (m_reverse ? -1.0 : 1.0);
-
- bool done = false;
- if (qAbs(m_distance) < qAbs(dist)) {
- done = true;
- dist = m_distance;
- }
- m_distance -= dist;
-
- qreal a = item()->direction() * M_PI / 180.0;
-
- qreal yd = dist * sin(a);
- qreal xd = dist * sin(M_PI / 2.0 - a);
-
- item()->setPos(item()->pos() + QPointF(xd, yd));
- return !done;
- }
-
-private:
- qreal m_distance;
- bool m_reverse;
-};
-
-class TurnAction: public Action
-{
-public:
- TurnAction(TankItem *item, qreal distance)
- : Action(item), m_distance(distance)
- {
- m_reverse = m_distance < 0.0;
- }
-
- bool apply(qreal timeDelta)
- {
- qreal dist = timeDelta * item()->angularSpeed() * (m_reverse ? -1.0 : 1.0);
- bool done = false;
- if (qAbs(m_distance) < qAbs(dist)) {
- done = true;
- dist = m_distance;
- }
- m_distance -= dist;
-
- item()->setDirection(item()->direction() + dist);
- return !done;
- }
-
-private:
- qreal m_distance;
- bool m_reverse;
-};
-
-TankItem::TankItem(QObject *parent)
- : GameItem(parent), m_currentAction(0), m_currentDirection(0.0), m_enabled(true)
-{
- connect(this, SIGNAL(cannonFired()), this, SIGNAL(actionCompleted()));
-}
-
-void TankItem::idle(qreal elapsed)
-{
- if (m_enabled) {
- if (m_currentAction != 0) {
- if (!m_currentAction->apply(elapsed)) {
- setAction(0);
- emit actionCompleted();
- }
-
- QGraphicsItem *item = 0;
- qreal distance = distanceToObstacle(&item);
- if (TankItem *tankItem = qgraphicsitem_cast<TankItem *>(item))
- emit tankSpotted(tankItem->direction(), distance);
- }
- }
-}
-
-void TankItem::hitByRocket()
-{
- emit aboutToBeDestroyed();
- deleteLater();
-}
-
-void TankItem::setAction(Action *newAction)
-{
- if (m_currentAction != 0)
- delete m_currentAction;
-
- m_currentAction = newAction;
-}
-
-void TankItem::fireCannon()
-{
- emit cannonFired();
-}
-
-void TankItem::moveForwards(qreal length)
-{
- setAction(new MoveAction(this, length));
-}
-
-void TankItem::moveBackwards(qreal length)
-{
- setAction(new MoveAction(this, -length));
-}
-
-void TankItem::turn(qreal degrees)
-{
- setAction(new TurnAction(this, degrees));
-}
-
-void TankItem::turnTo(qreal degrees)
-{
- setAction(new TurnAction(this, degrees - direction()));
-}
-
-void TankItem::stop()
-{
- setAction(0);
-}
-
-QVariant TankItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
-{
- if (change == ItemPositionChange && scene()) {
- QPointF requestedPosition = value.toPointF();
- QLineF collidedLine;
- QPointF nextPoint = tryMove(requestedPosition, &collidedLine);
- if (nextPoint != requestedPosition)
- emit collision(collidedLine);
- return nextPoint;
- } else {
- return QGraphicsItem::itemChange(change, value);
- }
-}
-
-
-void TankItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
-{
- QRectF brect = boundingRect();
-
- painter->setBrush(m_color);
- painter->setPen(Qt::black);
-
- // body
- painter->drawRect(brect.adjusted(0.0, 4.0, -2.0, -4.0));
-
- // cannon
- QRectF cannonBase = brect.adjusted(10.0, 6.0, -12.0, -6.0);
- painter->drawEllipse(cannonBase);
-
- painter->drawRect(QRectF(QPointF(cannonBase.center().x(), cannonBase.center().y() - 2.0),
- QPointF(brect.right(), cannonBase.center().y() + 2.0)));
-
- // left track
- painter->setBrush(QBrush(Qt::black, Qt::VerPattern));
- QRectF leftTrackRect = QRectF(brect.topLeft(), QPointF(brect.right() - 2.0, brect.top() + 4.0));
- painter->fillRect(leftTrackRect, Qt::darkYellow);
- painter->drawRect(leftTrackRect);
-
- // right track
- QRectF rightTrackRect = QRectF(QPointF(brect.left(), brect.bottom() - 4.0),
- QPointF(brect.right() - 2.0, brect.bottom()));
- painter->fillRect(rightTrackRect, Qt::darkYellow);
- painter->drawRect(rightTrackRect);
-
- if (!m_enabled) {
- painter->setPen(QPen(Qt::red, 5));
-
- painter->drawEllipse(brect);
-
- QPainterPath path;
- path.addEllipse(brect);
- painter->setClipPath(path);
- painter->drawLine(brect.topRight(), brect.bottomLeft());
- }
-}
-
-QRectF TankItem::boundingRect() const
-{
- return QRectF(-20.0, -10.0, 40.0, 20.0);
-}
-
-qreal TankItem::direction() const
-{
- return m_currentDirection;
-}
-
-void TankItem::setDirection(qreal newDirection)
-{
- int fullRotations = int(newDirection) / 360;
- newDirection -= fullRotations * 360.0;
-
- qreal diff = newDirection - m_currentDirection;
- m_currentDirection = newDirection;
- rotate(diff);
-}
-
-qreal TankItem::distanceToObstacle(QGraphicsItem **obstacle) const
-{
- qreal dist = sqrt(pow(scene()->sceneRect().width(), 2) + pow(scene()->sceneRect().height(), 2));
-
- qreal a = m_currentDirection * M_PI / 180.0;
-
- qreal yd = dist * sin(a);
- qreal xd = dist * sin(M_PI / 2.0 - a);
-
- QPointF requestedPosition = pos() + QPointF(xd, yd);
- QGraphicsItem *collidedItem = 0;
- QPointF nextPosition = tryMove(requestedPosition, 0, &collidedItem);
- if (collidedItem != 0) {
- if (obstacle != 0)
- *obstacle = collidedItem;
-
- QPointF d = nextPosition - pos();
- return sqrt(pow(d.x(), 2) + pow(d.y(), 2));
- } else {
- return 0.0;
- }
-}
-
-qreal TankItem::distanceToObstacle() const
-{
- return distanceToObstacle(0);
-}
-
diff --git a/examples/statemachine/tankgame/tankitem.h b/examples/statemachine/tankgame/tankitem.h
deleted file mode 100644
index a2f72de..0000000
--- a/examples/statemachine/tankgame/tankitem.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TANKITEM_H
-#define TANKITEM_H
-
-#include "gameitem.h"
-
-#include <QColor>
-
-class Action;
-class TankItem: public GameItem
-{
- Q_OBJECT
- Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
- Q_PROPERTY(qreal direction READ direction WRITE turnTo)
- Q_PROPERTY(qreal distanceToObstacle READ distanceToObstacle)
-public:
- TankItem(QObject *parent = 0);
-
- void setColor(const QColor &color) { m_color = color; }
- QColor color() const { return m_color; }
-
- void idle(qreal elapsed);
- void setDirection(qreal newDirection);
-
- qreal speed() const { return 90.0; }
- qreal angularSpeed() const { return 90.0; }
-
- QRectF boundingRect() const;
-
- void hitByRocket();
-
- void setEnabled(bool b) { m_enabled = b; }
- bool enabled() const { return m_enabled; }
-
- qreal direction() const;
- qreal distanceToObstacle() const;
- qreal distanceToObstacle(QGraphicsItem **item) const;
-
-//! [0]
-signals:
- void tankSpotted(qreal direction, qreal distance);
- void collision(const QLineF &collidedLine);
- void actionCompleted();
- void cannonFired();
- void aboutToBeDestroyed();
-
-public slots:
- void moveForwards(qreal length = 10.0);
- void moveBackwards(qreal length = 10.0);
- void turn(qreal degrees = 30.0);
- void turnTo(qreal degrees = 0.0);
- void stop();
- void fireCannon();
-//! [0]
-
-protected:
- virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
- QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value);
-
-private:
- void setAction(Action *newAction);
-
- Action *m_currentAction;
- qreal m_currentDirection;
- QColor m_color;
- bool m_enabled;
-};
-
-#endif
diff --git a/examples/statemachine/tankgameplugins/random_ai/random_ai.pro b/examples/statemachine/tankgameplugins/random_ai/random_ai.pro
deleted file mode 100644
index 5bc0b26..0000000
--- a/examples/statemachine/tankgameplugins/random_ai/random_ai.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TEMPLATE = lib
-CONFIG += plugin
-INCLUDEPATH += ../..
-HEADERS = random_ai_plugin.h
-SOURCES = random_ai_plugin.cpp
-TARGET = $$qtLibraryTarget(random_ai)
-DESTDIR = ../../tankgame/plugins
-
-#! [0]
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame/plugins
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS random_ai.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins/random_ai \ No newline at end of file
diff --git a/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.cpp b/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.cpp
deleted file mode 100644
index ddfd1c5..0000000
--- a/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "random_ai_plugin.h"
-
-#include <QState>
-#include <QTime>
-#include <QtPlugin>
-
-QState *RandomAiPlugin::create(QState *parentState, QObject *tank)
-{
- qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
-
- QState *topLevel = new QState(parentState);
-
- QState *selectNextActionState = new SelectActionState(topLevel);
- topLevel->setInitialState(selectNextActionState);
-
- QState *fireState = new RandomDistanceState(topLevel);
- connect(fireState, SIGNAL(distanceComputed(qreal)), tank, SLOT(fireCannon()));
- selectNextActionState->addTransition(selectNextActionState, SIGNAL(fireSelected()), fireState);
-
- QState *moveForwardsState = new RandomDistanceState(topLevel);
- connect(moveForwardsState, SIGNAL(distanceComputed(qreal)), tank, SLOT(moveForwards(qreal)));
- selectNextActionState->addTransition(selectNextActionState, SIGNAL(moveForwardsSelected()), moveForwardsState);
-
- QState *moveBackwardsState = new RandomDistanceState(topLevel);
- connect(moveBackwardsState, SIGNAL(distanceComputed(qreal)), tank, SLOT(moveBackwards(qreal)));
- selectNextActionState->addTransition(selectNextActionState, SIGNAL(moveBackwardsSelected()), moveBackwardsState);
-
- QState *turnState = new RandomDistanceState(topLevel);
- connect(turnState, SIGNAL(distanceComputed(qreal)), tank, SLOT(turn(qreal)));
- selectNextActionState->addTransition(selectNextActionState, SIGNAL(turnSelected()), turnState);
-
- topLevel->addTransition(tank, SIGNAL(actionCompleted()), selectNextActionState);
-
- return topLevel;
-}
-
-Q_EXPORT_PLUGIN2(random_ai, RandomAiPlugin)
diff --git a/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.h b/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.h
deleted file mode 100644
index 4c3fc0f..0000000
--- a/examples/statemachine/tankgameplugins/random_ai/random_ai_plugin.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef RANDOM_AI_PLUGIN_H
-#define RANDOM_AI_PLUGIN_H
-
-#include <QObject>
-#include <QState>
-
-#include <tankgame/plugin.h>
-
-class SelectActionState: public QState
-{
- Q_OBJECT
-public:
- SelectActionState(QState *parent = 0) : QState(parent)
- {
- }
-
-signals:
- void fireSelected();
- void moveForwardsSelected();
- void moveBackwardsSelected();
- void turnSelected();
-
-protected:
- void onEntry(QEvent *)
- {
- int rand = qrand() % 4;
- switch (rand) {
- case 0: emit fireSelected(); break;
- case 1: emit moveForwardsSelected(); break;
- case 2: emit moveBackwardsSelected(); break;
- case 3: emit turnSelected(); break;
- };
- }
-};
-
-class RandomDistanceState: public QState
-{
- Q_OBJECT
-public:
- RandomDistanceState(QState *parent = 0) : QState(parent)
- {
- }
-
-signals:
- void distanceComputed(qreal distance);
-
-protected:
- void onEntry(QEvent *)
- {
- emit distanceComputed(qreal(qrand() % 180));
- }
-};
-
-class RandomAiPlugin: public QObject, public Plugin
-{
- Q_OBJECT
- Q_INTERFACES(Plugin)
-public:
- RandomAiPlugin() { setObjectName("Random"); }
-
- virtual QState *create(QState *parentState, QObject *tank);
-};
-
-#endif // RANDOM_AI_PLUGIN_H
diff --git a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.cpp b/examples/statemachine/tankgameplugins/seek_ai/seek_ai.cpp
deleted file mode 100644
index 79d7d0c..0000000
--- a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "seek_ai.h"
-
-QState *SeekAi::create(QState *parentState, QObject *tank)
-{
- QState *topLevel = new QState(parentState);
- topLevel->setObjectName("topLevel");
-
- QState *seek = new QState(topLevel);
- seek->setObjectName("seek");
- topLevel->setInitialState(seek);
-
- QState *lookForNearestWall = new SearchState(tank, seek);
- lookForNearestWall->setObjectName("lookForNearestWall");
- seek->setInitialState(lookForNearestWall);
-
- QState *driveToFirstObstacle = new QState(seek);
- driveToFirstObstacle->setObjectName("driveToFirstObstacle");
- lookForNearestWall->addTransition(lookForNearestWall, SIGNAL(nearestObstacleStraightAhead()),
- driveToFirstObstacle);
-
- QState *drive = new QState(driveToFirstObstacle);
- drive->setObjectName("drive");
- driveToFirstObstacle->setInitialState(drive);
- connect(drive, SIGNAL(entered()), tank, SLOT(moveForwards()));
- connect(drive, SIGNAL(exited()), tank, SLOT(stop()));
-
- // Go in loop
- QState *finishedDriving = new QState(driveToFirstObstacle);
- finishedDriving->setObjectName("finishedDriving");
- drive->addTransition(tank, SIGNAL(actionCompleted()), finishedDriving);
- finishedDriving->addTransition(drive);
-
- QState *turnTo = new QState(seek);
- turnTo->setObjectName("turnTo");
- driveToFirstObstacle->addTransition(new CollisionTransition(tank, turnTo));
-
- turnTo->addTransition(tank, SIGNAL(actionCompleted()), driveToFirstObstacle);
-
- ChaseState *chase = new ChaseState(tank, topLevel);
- chase->setObjectName("chase");
- seek->addTransition(new TankSpottedTransition(tank, chase));
- chase->addTransition(chase, SIGNAL(finished()), driveToFirstObstacle);
- chase->addTransition(new TankSpottedTransition(tank, chase));
-
- return topLevel;
-}
-
-Q_EXPORT_PLUGIN2(seek_ai, SeekAi)
diff --git a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.h b/examples/statemachine/tankgameplugins/seek_ai/seek_ai.h
deleted file mode 100644
index 1bc5b26..0000000
--- a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SEEK_AI_H
-#define SEEK_AI_H
-
-#include <tankgame/plugin.h>
-
-#include <QState>
-#include <QFinalState>
-#include <QSignalTransition>
-#include <QSignalEvent>
-#include <QVariant>
-#include <QLineF>
-#include <QDebug>
-
-class SearchState: public QState
-{
- Q_OBJECT
-public:
- SearchState(QObject *tank, QState *parentState = 0)
- : QState(parentState),
- m_tank(tank),
- m_distanceToTurn(360.0),
- m_nearestDistance(-1.0),
- m_directionOfNearestObstacle(0.0)
- {
- }
-
-public slots:
- void turnAlittle()
- {
- qreal dist = m_tank->property("distanceToObstacle").toDouble();
-
- if (m_nearestDistance < 0.0 || dist < m_nearestDistance) {
- m_nearestDistance = dist;
- m_directionOfNearestObstacle = m_tank->property("direction").toDouble();
- }
-
- m_distanceToTurn -= 10.0;
- if (m_distanceToTurn < 0.0) {
- disconnect(m_tank, SIGNAL(actionCompleted()), this, SLOT(turnAlittle()));
- connect(m_tank, SIGNAL(actionCompleted()), this, SIGNAL(nearestObstacleStraightAhead()));
- m_tank->setProperty("direction", m_directionOfNearestObstacle);
- }
-
- qreal currentDirection = m_tank->property("direction").toDouble();
- m_tank->setProperty("direction", currentDirection + 10.0);
- }
-
-signals:
- void nearestObstacleStraightAhead();
-
-protected:
- void onEntry(QEvent *)
- {
- connect(m_tank, SIGNAL(actionCompleted()), this, SLOT(turnAlittle()));
- turnAlittle();
- }
-
- void onExit(QEvent *)
- {
- disconnect(m_tank, SIGNAL(actionCompleted()), this, SLOT(turnAlittle()));
- disconnect(m_tank, SIGNAL(actionCompleted()), this, SLOT(nearestObstacleStraightAhead()));
- }
-
-private:
- QObject *m_tank;
-
- qreal m_distanceToTurn;
- qreal m_nearestDistance;
- qreal m_directionOfNearestObstacle;
-};
-
-class CollisionTransition: public QSignalTransition
-{
-public:
- CollisionTransition(QObject *tank, QState *turnTo)
- : QSignalTransition(tank, SIGNAL(collision(QLineF))),
- m_tank(tank),
- m_turnTo(turnTo)
- {
- setTargetState(turnTo);
- }
-
-protected:
- bool eventTest(QEvent *event)
- {
- bool b = QSignalTransition::eventTest(event);
- if (b) {
- QSignalEvent *se = static_cast<QSignalEvent *>(event);
- m_lastLine = se->arguments().at(0).toLineF();
- }
- return b;
- }
-
- void onTransition(QEvent *)
- {
- qreal angleOfWall = m_lastLine.angle();
-
- qreal newDirection;
- if (qrand() % 2 == 0)
- newDirection = angleOfWall;
- else
- newDirection = angleOfWall - 180.0;
-
- m_turnTo->assignProperty(m_tank, "direction", newDirection);
- }
-
-private:
- QLineF m_lastLine;
- QObject *m_tank;
- QState *m_turnTo;
-};
-
-class ChaseState: public QState
-{
- class GoToLocationState: public QState
- {
- public:
- GoToLocationState(QObject *tank, QState *parentState = 0)
- : QState(parentState), m_tank(tank), m_distance(0.0)
- {
- }
-
- void setDistance(qreal distance) { m_distance = distance; }
-
- protected:
- void onEntry()
- {
- QMetaObject::invokeMethod(m_tank, "moveForwards", Q_ARG(qreal, m_distance));
- }
-
- private:
- QObject *m_tank;
- qreal m_distance;
- };
-
-public:
- ChaseState(QObject *tank, QState *parentState = 0) : QState(parentState), m_tank(tank)
- {
- QState *fireCannon = new QState(this);
- fireCannon->setObjectName("fireCannon");
- connect(fireCannon, SIGNAL(entered()), tank, SLOT(fireCannon()));
- setInitialState(fireCannon);
-
- m_goToLocation = new GoToLocationState(tank, this);
- m_goToLocation->setObjectName("goToLocation");
- fireCannon->addTransition(tank, SIGNAL(actionCompleted()), m_goToLocation);
-
- m_turnToDirection = new QState(this);
- m_turnToDirection->setObjectName("turnToDirection");
- m_goToLocation->addTransition(tank, SIGNAL(actionCompleted()), m_turnToDirection);
-
- QFinalState *finalState = new QFinalState(this);
- finalState->setObjectName("finalState");
- m_turnToDirection->addTransition(tank, SIGNAL(actionCompleted()), finalState);
- }
-
- void setDirection(qreal direction)
- {
- m_turnToDirection->assignProperty(m_tank, "direction", direction);
- }
-
- void setDistance(qreal distance)
- {
- m_goToLocation->setDistance(distance);
- }
-
-private:
- QObject *m_tank;
- GoToLocationState *m_goToLocation;
- QState *m_turnToDirection;
-
-};
-
-class TankSpottedTransition: public QSignalTransition
-{
-public:
- TankSpottedTransition(QObject *tank, ChaseState *target) : QSignalTransition(tank, SIGNAL(tankSpotted(qreal,qreal))), m_chase(target)
- {
- setTargetState(target);
- }
-
-protected:
- bool eventTest(QEvent *event)
- {
- bool b = QSignalTransition::eventTest(event);
- if (b) {
- QSignalEvent *se = static_cast<QSignalEvent *>(event);
- m_chase->setDirection(se->arguments().at(0).toDouble());
- m_chase->setDistance(se->arguments().at(1).toDouble());
- }
- return b;
- }
-
-private:
- ChaseState *m_chase;
-};
-
-class SeekAi: public QObject, public Plugin
-{
- Q_OBJECT
- Q_INTERFACES(Plugin)
-public:
- SeekAi() { setObjectName("Seek and destroy"); }
-
- virtual QState *create(QState *parentState, QObject *tank);
-};
-
-#endif
diff --git a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.pro b/examples/statemachine/tankgameplugins/seek_ai/seek_ai.pro
deleted file mode 100644
index 0d8bf2e..0000000
--- a/examples/statemachine/tankgameplugins/seek_ai/seek_ai.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TEMPLATE = lib
-CONFIG += plugin
-INCLUDEPATH += ../..
-HEADERS = seek_ai.h
-SOURCES = seek_ai.cpp
-TARGET = $$qtLibraryTarget(seek_ai)
-DESTDIR = ../../tankgame/plugins
-
-#! [0]
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame/plugins
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS seek_ai.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins/seek_ai \ No newline at end of file
diff --git a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.cpp b/examples/statemachine/tankgameplugins/spin_ai/spin_ai.cpp
deleted file mode 100644
index 4e71285..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "spin_ai.h"
-
-#include <QtPlugin>
-
-QState *SpinAi::create(QState *parentState, QObject *tank)
-{
- QState *topLevel = new QState(parentState);
- QState *spinState = new SpinState(tank, topLevel);
- topLevel->setInitialState(spinState);
-
- // When tank is spotted, fire two times and go back to spin state
- QState *fireState = new QState(topLevel);
-
- QState *fireOnce = new QState(fireState);
- fireState->setInitialState(fireOnce);
- connect(fireOnce, SIGNAL(entered()), tank, SLOT(fireCannon()));
-
- QState *fireTwice = new QState(fireState);
- connect(fireTwice, SIGNAL(entered()), tank, SLOT(fireCannon()));
-
- fireOnce->addTransition(tank, SIGNAL(actionCompleted()), fireTwice);
- fireTwice->addTransition(tank, SIGNAL(actionCompleted()), spinState);
-
- spinState->addTransition(tank, SIGNAL(tankSpotted(qreal,qreal)), fireState);
-
- return topLevel;
-}
-
-Q_EXPORT_PLUGIN2(spin_ai, SpinAi)
diff --git a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.h b/examples/statemachine/tankgameplugins/spin_ai/spin_ai.h
deleted file mode 100644
index a97024d..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SPIN_AI_H
-#define SPIN_AI_H
-
-#include <tankgame/plugin.h>
-
-#include <QObject>
-#include <QState>
-#include <QVariant>
-
-class SpinState: public QState
-{
- Q_OBJECT
-public:
- SpinState(QObject *tank, QState *parent) : QState(parent), m_tank(tank)
- {
- }
-
-public slots:
- void spin()
- {
- m_tank->setProperty("direction", m_tank->property("direction").toDouble() + 90.0);
- }
-
-protected:
- void onEntry(QEvent *)
- {
- connect(m_tank, SIGNAL(actionCompleted()), this, SLOT(spin()));
- spin();
- }
-
- void onExit(QEvent *)
- {
- disconnect(m_tank, SIGNAL(actionCompleted()), this, SLOT(spin()));
- }
-
-private:
- QObject *m_tank;
-
-};
-
-class SpinAi: public QObject, public Plugin
-{
- Q_OBJECT
- Q_INTERFACES(Plugin)
-public:
- SpinAi() { setObjectName("Spin and destroy"); }
-
- virtual QState *create(QState *parentState, QObject *tank);
-};
-
-#endif
diff --git a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.pro b/examples/statemachine/tankgameplugins/spin_ai/spin_ai.pro
deleted file mode 100644
index 8ab4da0..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai/spin_ai.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TEMPLATE = lib
-CONFIG += plugin
-INCLUDEPATH += ../..
-HEADERS = spin_ai.h
-SOURCES = spin_ai.cpp
-TARGET = $$qtLibraryTarget(spin_ai)
-DESTDIR = ../../tankgame/plugins
-
-#! [0]
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame/plugins
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS spin_ai.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins/spin_ai \ No newline at end of file
diff --git a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.cpp b/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.cpp
deleted file mode 100644
index 12a9656..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "spin_ai_with_error.h"
-
-#include <QtPlugin>
-
-QState *SpinAiWithError::create(QState *parentState, QObject *tank)
-{
- QState *topLevel = new QState(parentState);
- QState *spinState = new SpinState(tank, topLevel);
- topLevel->setInitialState(spinState);
-
- // When tank is spotted, fire two times and go back to spin state
- // (no initial state set for fireState will lead to run-time error in machine)
- QState *fireState = new QState(topLevel);
-
- QState *fireOnce = new QState(fireState);
- connect(fireOnce, SIGNAL(entered()), tank, SLOT(fireCannon()));
-
- QState *fireTwice = new QState(fireState);
- connect(fireTwice, SIGNAL(entered()), tank, SLOT(fireCannon()));
-
- fireOnce->addTransition(tank, SIGNAL(actionCompleted()), fireTwice);
- fireTwice->addTransition(tank, SIGNAL(actionCompleted()), spinState);
-
- spinState->addTransition(tank, SIGNAL(tankSpotted(qreal,qreal)), fireState);
-
- return topLevel;
-}
-
-Q_EXPORT_PLUGIN2(spin_ai_with_error, SpinAiWithError)
diff --git a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.h b/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.h
deleted file mode 100644
index f35da26..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SPIN_AI_WITH_ERROR_H
-#define SPIN_AI_WITH_ERROR_H
-
-#include <tankgame/plugin.h>
-
-#include <QObject>
-#include <QState>
-#include <QVariant>
-
-class SpinState: public QState
-{
- Q_OBJECT
-public:
- SpinState(QObject *tank, QState *parent) : QState(parent), m_tank(tank)
- {
- }
-
-public slots:
- void spin()
- {
- m_tank->setProperty("direction", m_tank->property("direction").toDouble() + 90.0);
- }
-
-protected:
- void onEntry(QEvent *)
- {
- connect(m_tank, SIGNAL(actionCompleted()), this, SLOT(spin()));
- spin();
- }
-
- void onExit(QEvent *)
- {
- disconnect(m_tank, SIGNAL(actionCompleted()), this, SLOT(spin()));
- }
-
-private:
- QObject *m_tank;
-
-};
-
-class SpinAiWithError: public QObject, public Plugin
-{
- Q_OBJECT
- Q_INTERFACES(Plugin)
-public:
- SpinAiWithError() { setObjectName("Spin and destroy with runtime error in state machine"); }
-
- virtual QState *create(QState *parentState, QObject *tank);
-};
-
-#endif
diff --git a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.pro b/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.pro
deleted file mode 100644
index 124cf98..0000000
--- a/examples/statemachine/tankgameplugins/spin_ai_with_error/spin_ai_with_error.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TEMPLATE = lib
-CONFIG += plugin
-INCLUDEPATH += ../..
-HEADERS = spin_ai_with_error.h
-SOURCES = spin_ai_with_error.cpp
-TARGET = $$qtLibraryTarget(spin_ai_with_error)
-DESTDIR = ../../tankgame/plugins
-
-#! [0]
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgame/plugins
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS spin_ai_with_error.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins/spin_ai_with_error \ No newline at end of file
diff --git a/examples/statemachine/tankgameplugins/tankgameplugins.pro b/examples/statemachine/tankgameplugins/tankgameplugins.pro
deleted file mode 100644
index a098e03..0000000
--- a/examples/statemachine/tankgameplugins/tankgameplugins.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = random_ai \
- spin_ai_with_error \
- spin_ai \
- seek_ai
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS tankgameplugins.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/statemachine/tankgameplugins
-INSTALLS += target sources