File indexing completed on 2024-12-08 03:48:03

0001 /* This file is part of KsirK.
0002    Copyright (C) 2008 Guillaume Pelouas <pelouas@hotmail.fr>
0003 
0004    KsirK is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU General Public
0006    License as published by the Free Software Foundation, either version 2
0007    of the License, or (at your option) any later version.
0008 
0009    This program is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    General Public License for more details.
0013 
0014    You should have received a copy of the GNU General Public License
0015    along with this program; if not, write to the Free Software
0016    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
0017    02110-1301, USA
0018 */
0019 
0020 /* begin                : Thu Nov 21 2007 */
0021 
0022 
0023 #ifndef FIGHTARENA_H
0024 #define FIGHTARENA_H
0025 
0026 #include "KsirkGlobalDefinitions.h"
0027 #include "GameLogic/onu.h"
0028 #include "GameLogic/country.h"
0029 #include "GameLogic/gameautomaton.h"
0030 #include "Sprites/backgnd.h"
0031 
0032 #include <stdlib.h>
0033 #include <QTimer>
0034 #include <QMouseEvent>
0035 #include <QGraphicsView>
0036 #include <QPixmap>
0037 #include <KConfig>
0038 #include <KConfigGroup>
0039 
0040 namespace Ksirk
0041 {
0042 
0043 namespace GameLogic
0044 {
0045   class ONU;
0046   class Country;
0047   class GameAutomaton;
0048 }
0049 
0050    /**
0051    * The FightArena class is the widget displayed while fights, and where
0052    * all the units sprites are displayed. It is linked to its parent 
0053    * widget (the main window)
0054    */
0055    class FightArena: public QGraphicsView
0056    {
0057       Q_OBJECT
0058       
0059       public:
0060       /**
0061       * Creates the frame, its timer and set some parameters
0062       * @param parent The parent widget, the main window
0063       * @param mapW The width of the arena. Will be the width given in size hint.
0064       * @param mapH The height of the arena. Will be the height given in size hint.
0065       * @param sceneArena where sprites will be added.
0066       * @param onuObject onuObject for getting map and country information
0067       * @param automaton automaton for the construction of countries
0068       */
0069       FightArena(QWidget* parent, unsigned int mapW, unsigned int mapH, QGraphicsScene* sceneArena, GameLogic::ONU* onuObject, GameLogic::GameAutomaton* automaton);
0070 
0071       /**
0072       * Destroy the frame : stops and deletes the timer
0073       */
0074       ~FightArena() override;
0075       
0076       /**
0077       * Returns the size given to the constructor.
0078       * @return The size given to the constructor.
0079       */
0080       QSize sizeHint() const override;
0081 
0082       /**
0083       * Initializes the fight arena with the two country which fight each other
0084       * @param countryA Country attacker
0085       * @param countryD Country defender
0086       * @param bg backgroud where to paint the elements
0087       */
0088       void initFightArena (GameLogic::Country* countryA, GameLogic::Country* countryD, BackGnd* bg);
0089 
0090       /**
0091         * Get the attacking arena country
0092         */
0093       inline GameLogic::Country* countryAttack () {return m_countryAttack;}
0094 
0095       /**
0096         * Get the defensing arena country
0097         */
0098       inline GameLogic::Country* countryDefense () {return m_countryDefense;}
0099 
0100       private:
0101       unsigned int m_mapW;
0102       unsigned int m_mapH;
0103 
0104       GameLogic::Country* m_countryAttack;
0105       GameLogic::Country* m_countryDefense;
0106       QGraphicsScene* m_scene;
0107       GameLogic::ONU* m_onu;
0108       GameLogic::GameAutomaton* m_automaton;
0109       QPixmap* m_bgImage;
0110    };
0111    
0112 }
0113 
0114 #endif // FIGHTARENA_H