File indexing completed on 2024-04-28 04:02:30
0001 /* 0002 SPDX-FileCopyrightText: 2007 Dmitry Suzdalev <dimsuz@gmail.com> 0003 SPDX-FileCopyrightText: 2010 Brian Croom <brian.s.croom@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef SCENE_H 0009 #define SCENE_H 0010 0011 // KDEGames 0012 #include <KGameRenderer> 0013 // Qt 0014 #include <QGraphicsView> 0015 #include <QGraphicsScene> 0016 0017 class MineFieldItem; 0018 class KGamePopupItem; 0019 0020 /** 0021 * Graphics scene for KMines game 0022 */ 0023 class KMinesScene : public QGraphicsScene 0024 { 0025 Q_OBJECT 0026 public: 0027 /** 0028 * Constructs scene 0029 */ 0030 explicit KMinesScene( QObject* parent ); 0031 /** 0032 * Resizes scene to given dimensions 0033 */ 0034 void resizeScene(int width, int height); 0035 /** 0036 * @return total number of mines in field 0037 */ 0038 int totalMines() const; 0039 /** 0040 * Starts new game 0041 */ 0042 void startNewGame(int rows, int cols, int numMines); 0043 /** 0044 * Toggles paused state for all cells in the field item 0045 */ 0046 void setGamePaused(bool paused); 0047 /** 0048 * Resets the scene 0049 */ 0050 void reset(); 0051 0052 KGameRenderer& renderer() {return m_renderer;} 0053 /** 0054 * Represents if the scores should be considered for the highscores 0055 */ 0056 bool canScore() const; 0057 void setCanScore(bool value); 0058 0059 Q_SIGNALS: 0060 void minesCountChanged(int); 0061 void gameOver(bool); 0062 void firstClickDone(); 0063 private Q_SLOTS: 0064 void onGameOver(bool); 0065 private: 0066 bool m_canScore; 0067 KGameRenderer m_renderer; 0068 /** 0069 * Game field graphics item 0070 */ 0071 MineFieldItem* m_fieldItem = nullptr; 0072 KGamePopupItem* m_messageItem = nullptr; 0073 KGamePopupItem* m_gamePausedMessageItem = nullptr; 0074 }; 0075 0076 class QResizeEvent; 0077 0078 class KMinesView : public QGraphicsView 0079 { 0080 Q_OBJECT 0081 public: 0082 KMinesView( KMinesScene* scene, QWidget *parent ); 0083 private: 0084 void resizeEvent( QResizeEvent *ev ) override; 0085 0086 KMinesScene* m_scene = nullptr; 0087 }; 0088 #endif