File indexing completed on 2024-10-06 03:45:11
0001 /* 0002 SPDX-FileCopyrightText: 2007-2008 Thomas Gallinari <tg8187@yahoo.fr> 0003 SPDX-FileCopyrightText: 2007-2008 Pierre-Benoit Bessse <besse@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef KAPMANMAINWINDOW_H 0009 #define KAPMANMAINWINDOW_H 0010 0011 #include "game.h" 0012 #include "gameview.h" 0013 0014 #include <KXmlGuiWindow> 0015 #include <QGraphicsView> 0016 0017 static const int initLives = 3; 0018 0019 class KGameThemeSelector; 0020 class KGameThemeProvider; 0021 class KGameTheme; 0022 class QStatusBar; 0023 class QLabel; 0024 0025 /** 0026 * @brief This class enables to create the main window for Kapman. 0027 */ 0028 class KapmanMainWindow : public KXmlGuiWindow 0029 { 0030 Q_OBJECT 0031 0032 private: 0033 /** The GameView instance that manages the game drawing and the collisions */ 0034 GameView *m_view = nullptr; 0035 0036 /** The Game instance that manages the main loop and events */ 0037 Game *m_game = nullptr; 0038 0039 KGameThemeProvider *m_themeProvider = nullptr; 0040 KGameThemeSelector *m_themeSelector = nullptr; 0041 QStatusBar *m_statusBar = nullptr; 0042 QLabel *mLevel = nullptr; 0043 QLabel *mScore = nullptr; 0044 QLabel *mLives = nullptr; 0045 0046 public: 0047 /** 0048 * Creates a new KapmanMainWindow instance. 0049 */ 0050 KapmanMainWindow(); 0051 0052 /** 0053 * Deletes the KapmanMainWindow instance. 0054 */ 0055 ~KapmanMainWindow() override; 0056 0057 private Q_SLOTS: 0058 0059 /** 0060 * Initializes the KapmanMainWindow for a new game. 0061 * Creates a new Game instance and a new GameView instance that displays the game. 0062 */ 0063 void initGame(); 0064 0065 void handleGameOver(); 0066 0067 /** 0068 * Starts a new game. 0069 */ 0070 void newGame(); 0071 0072 /** 0073 * Shows the highscores dialog. 0074 */ 0075 void showHighscores(); 0076 0077 /** 0078 * Shows a dialog enabling to change the current level. 0079 */ 0080 void changeLevel(); 0081 0082 /** 0083 * Sets the sounds enabled / disabled. 0084 * @param p_enabled if true the sounds will be enabled, otherwise they will be disabled 0085 */ 0086 void setSoundsEnabled(bool p_enabled); 0087 0088 /** 0089 * Shows the settings dialog. 0090 */ 0091 void showSettings(); 0092 0093 /** 0094 * Loads the theme. 0095 */ 0096 void onThemeChanged(const KGameTheme *theme); 0097 0098 /** 0099 * Closes the KapmanMainWindow. 0100 */ 0101 void close(); 0102 0103 /** 0104 * Refreshes new level value on Status Bar. 0105 * @param p_level is level value 0106 */ 0107 void displayLevel(unsigned int p_level); 0108 0109 /** 0110 * Refreshes new score value on Status Bar. 0111 * @param p_score is score value 0112 */ 0113 void displayScore(unsigned int p_score); 0114 0115 /** 0116 * Refreshes new lives value on Status Bar. 0117 * @param p_lives is lives value 0118 */ 0119 void displayLives(unsigned int p_lives); 0120 0121 /** 0122 * Resets the status bar values altogether for convenience. 0123 */ 0124 void resetStatusBar(); 0125 0126 void viewFullScreen(bool fullScreen); 0127 }; 0128 0129 #endif