File indexing completed on 2024-04-21 04:02:12
0001 /* 0002 SPDX-FileCopyrightText: 2008-2009 Stefan Majewsky <majewsky@gmx.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDIAMOND_GAMESTATE_H 0008 #define KDIAMOND_GAMESTATE_H 0009 0010 #include <QObject> 0011 0012 namespace KDiamond 0013 { 0014 0015 class GameStatePrivate; 0016 0017 //base duration of a game in seconds 0018 const int GameDuration = 200; 0019 0020 enum Mode { 0021 NormalGame, 0022 UntimedGame 0023 }; 0024 enum State { 0025 Playing, 0026 Paused, 0027 Finished 0028 }; 0029 0030 class GameState : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 GameState(); 0035 ~GameState() override; 0036 0037 Mode mode() const; 0038 State state() const; 0039 int leftTime() const; 0040 int points() const; 0041 0042 void setMode(Mode mode); 0043 void setState(State state); 0044 public Q_SLOTS: 0045 void addPoints(int removedDiamonds); 0046 void removePoints(int points); 0047 void resetCascadeCounter(); 0048 void startNewGame(); 0049 void update(bool forceRecalculation = false); 0050 Q_SIGNALS: 0051 void message(const QString &text); //text == QString() means: hide the message popup 0052 void stateChanged(KDiamond::State state); //warning: moc needs the full identifier of KDiamond::State 0053 void pointsChanged(int points); 0054 void leftTimeChanged(int seconds); 0055 protected: 0056 void timerEvent(QTimerEvent *event) override; 0057 private: 0058 GameStatePrivate *p; 0059 }; 0060 0061 } 0062 0063 #endif // KDIAMOND_GAMESTATE_H