source: trunk/demos/sub-attaq/states.h@ 651

Last change on this file since 651 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 4.8 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtCore module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef STATES_H
43#define STATES_H
44
45//Qt
46#include <QtCore/QState>
47#include <QtCore/QSignalTransition>
48#include <QtCore/QPropertyAnimation>
49#include <QtGui/QKeyEventTransition>
50#include <QtCore/QSet>
51
52class GraphicsScene;
53class Boat;
54class SubMarine;
55QT_BEGIN_NAMESPACE
56class QStateMachine;
57QT_END_NAMESPACE
58
59class PlayState : public QState
60{
61public:
62 PlayState(GraphicsScene *scene, QState *parent = 0);
63 ~PlayState();
64
65 protected:
66 void onEntry(QEvent *);
67
68private :
69 GraphicsScene *scene;
70 QStateMachine *machine;
71 int currentLevel;
72 int score;
73 QState *parallelChild;
74
75 friend class UpdateScoreState;
76 friend class UpdateScoreTransition;
77 friend class WinTransition;
78 friend class CustomSpaceTransition;
79 friend class WinState;
80 friend class LostState;
81 friend class LevelState;
82};
83
84class LevelState : public QState
85{
86public:
87 LevelState(GraphicsScene *scene, PlayState *game, QState *parent = 0);
88protected:
89 void onEntry(QEvent *);
90private :
91 void initializeLevel();
92 GraphicsScene *scene;
93 PlayState *game;
94};
95
96class PauseState : public QState
97{
98public:
99 PauseState(GraphicsScene *scene, QState *parent = 0);
100
101protected:
102 void onEntry(QEvent *);
103 void onExit(QEvent *);
104private :
105 GraphicsScene *scene;
106 Boat *boat;
107};
108
109class LostState : public QState
110{
111public:
112 LostState(GraphicsScene *scene, PlayState *game, QState *parent = 0);
113
114protected:
115 void onEntry(QEvent *);
116 void onExit(QEvent *);
117private :
118 GraphicsScene *scene;
119 PlayState *game;
120};
121
122class WinState : public QState
123{
124public:
125 WinState(GraphicsScene *scene, PlayState *game, QState *parent = 0);
126
127protected:
128 void onEntry(QEvent *);
129 void onExit(QEvent *);
130private :
131 GraphicsScene *scene;
132 PlayState *game;
133};
134
135class UpdateScoreState : public QState
136{
137public:
138 UpdateScoreState(PlayState *game, QState *parent);
139private:
140 QPropertyAnimation *scoreAnimation;
141 PlayState *game;
142};
143
144//These transtion is used to update the score
145class UpdateScoreTransition : public QSignalTransition
146{
147public:
148 UpdateScoreTransition(GraphicsScene *scene, PlayState *game, QAbstractState *target);
149protected:
150 virtual bool eventTest(QEvent *event);
151private:
152 PlayState * game;
153 GraphicsScene *scene;
154};
155
156//These transtion test if we have won the game
157class WinTransition : public QSignalTransition
158{
159public:
160 WinTransition(GraphicsScene *scene, PlayState *game, QAbstractState *target);
161protected:
162 virtual bool eventTest(QEvent *event);
163private:
164 PlayState * game;
165 GraphicsScene *scene;
166};
167
168//These transtion is true if one level has been completed and the player want to continue
169 class CustomSpaceTransition : public QKeyEventTransition
170{
171public:
172 CustomSpaceTransition(QWidget *widget, PlayState *game, QEvent::Type type, int key);
173protected:
174 virtual bool eventTest(QEvent *event);
175private:
176 PlayState *game;
177 int key;
178};
179
180#endif // STATES_H
Note: See TracBrowser for help on using the repository browser.