File indexing completed on 2024-12-01 06:50:35

0001 /*
0002     SPDX-FileCopyrightText: 2007-2008 Thomas Gallinari <tg8187@yahoo.fr>
0003     SPDX-FileCopyrightText: 2007-2008 Gaƫl Courcelle <gael.courcelle@gmail.com>
0004     SPDX-FileCopyrightText: 2007-2008 Alexia Allanic <alexia_allanic@yahoo.fr>
0005     SPDX-FileCopyrightText: 2007-2008 Johann Hingue <yoan1703@hotmail.fr>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef BONUS_H
0011 #define BONUS_H
0012 
0013 #include "element.h"
0014 
0015 /**
0016  * @brief This class represents a Bonus for the Player.
0017  */
0018 class Bonus : public Element {
0019     Q_OBJECT
0020 public:
0021     /**
0022       * Creates a new Bonus instance.
0023       * @param p_x the initial x-coordinate
0024       * @param p_y the initial y-coordinate
0025       * @param p_arena a reference to the Arena the Bonus will be on
0026       * @param bonusType the Bonus Type
0027       */
0028     Bonus(qreal p_x, qreal p_y, Arena* p_arena, Granatier::Bonus::Type bonusType);
0029 
0030     /**
0031       * Deletes the Bonus instance.
0032       */
0033     ~Bonus() override;
0034 
0035     /**
0036       * Computes an action on a collision with the Player.
0037       * @param p_player the Player instance that collides with the Bonus
0038       */
0039     void doActionOnCollision(Player* p_player) override;
0040 
0041     Granatier::Bonus::Type getBonusType() const;
0042 
0043     void setTaken();
0044 
0045     bool isTaken() const;
0046 
0047     void setDestroyed();
0048 
0049     bool isDestroyed() const;
0050 
0051 private:
0052     /** The Bonus type */
0053     Granatier::Bonus::Type m_bonusType;
0054 
0055     bool m_taken;
0056     bool m_destroyed;
0057 };
0058 
0059 #endif
0060