File indexing completed on 2024-11-03 03:46:17

0001 /*
0002     SPDX-FileCopyrightText: 2009 Mathias Kraus <k.hias@gmx.de>
0003     SPDX-FileCopyrightText: 2007-2008 Thomas Gallinari <tg8187@yahoo.fr>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef GAMEVIEW_H
0009 #define GAMEVIEW_H
0010 
0011 #include <QGraphicsView>
0012 
0013 class QKeyEvent;
0014 class Game;
0015 class GameScene;
0016 
0017 /**
0018  * @brief This class manages the drawing of each element of the Game instance.
0019  * It creates a GameScene instance associated to the given Game instance in order to manage the elements to be drawn at each moment of the game.
0020  */
0021 class GameView : public QGraphicsView {
0022 
0023 Q_OBJECT
0024 
0025 public:
0026 
0027     /**
0028       * Creates a new GameView instance.
0029       * @param p_scene the Game scene
0030       * @param p_game the Game instance whose elements have to be drawn
0031       */
0032     GameView(GameScene* p_scene, Game* p_game);
0033 
0034     /**
0035       * Deletes the GameView instance.
0036       */
0037     ~GameView() override;
0038 
0039     /**
0040       * Resizes the items when the view is resized.
0041       * @param p_event the resize event
0042       */
0043     void resizeEvent(QResizeEvent* p_event) override;
0044 
0045 protected:
0046 
0047     /**
0048       * Manages the player actions by hanlding the key press events.
0049       * @param p_event the key press event
0050       */
0051     void keyPressEvent(QKeyEvent* p_event) override;
0052 
0053     /**
0054       * Manages the player actions by hanlding the key release events.
0055       * @param p_event the key release event
0056       */
0057     void keyReleaseEvent(QKeyEvent* p_event) override;
0058 
0059     /**
0060       * Pauses the game on focus lost.
0061       * @param p_event the focus event
0062       */
0063     void focusOutEvent(QFocusEvent* p_event) override;
0064 
0065 Q_SIGNALS:
0066 
0067     /**
0068       * Emitted on key press event for the Game instance
0069       * @param p_event the key press event
0070       */
0071     void keyPressed(QKeyEvent* p_event);
0072 
0073     /**
0074       * Emitted on key release event for the Game instance
0075       * @param p_event the key release event
0076       */
0077     void keyReleased(QKeyEvent* p_event);
0078 };
0079 
0080 #endif
0081