1 /*
2     SPDX-FileCopyrightText: 2003 Russell Steffen <rsteffen@bayarea.net>
3     SPDX-FileCopyrightText: 2003 Stephan Zehetner <s.zehetner@nevox.org>
4     SPDX-FileCopyrightText: 2006 Dmitry Suzdalev <dimsuz@gmail.com>
5     SPDX-FileCopyrightText: 2006 Inge Wallin <inge@lysator.liu.se>
6     SPDX-FileCopyrightText: 2006 Pierre Ducroquet <pinaraf@gmail.com>
7 
8     SPDX-License-Identifier: GPL-2.0-or-later
9 */
10 
11 #ifndef KONQUEST_PLANET_H
12 #define KONQUEST_PLANET_H
13 
14 #include <QObject>
15 #include "fleet.h"
16 
17 class Sector;
18 class Player;
19 struct GameOptions;
20 
21 //**************************************************************
22 // class Planet
23 //**************************************************************
24 
25 class Planet : public QObject
26 {
27     Q_OBJECT
28 
29 public:
30     Planet( const QString &planetName, Sector *sector,
31             Player *initialOwner, int newProd,
32             double newKillP );
33 
34     // FIXME: Nobody inherits Planet.  Why virtual?  /iw
35     ~Planet() override;
36 
37     static Planet *createPlayerPlanet( Sector *sector,
38                                        Player *initialOwner, const QString &planetName );
39     static Planet *createNeutralPlanet( Sector *sector,
40                                         Player *initialOwner, const QString &planetName );
41 
sector()42     Sector        *sector()     const { return m_sector; }
player()43     Player        *player()     const { return m_owner; }
name()44     const QString &name()       const { return m_name; }
fleet()45     DefenseFleet  &fleet()            { return m_homeFleet; }
46 
killPercentage()47     double         killPercentage() const { return m_killPercentage; }
setKillPercentage(double value)48     void           setKillPercentage(double value) { m_killPercentage = value; }
49 
production()50     int            production() const { return m_productionRate; }
setProduction(int value)51     void           setProduction(int value)
52     {
53        m_originalProductionRate = m_productionRate = value;
54     }
55 
planetLook()56     int            planetLook() const { return m_planetLook; }
ships()57     int            ships()      const { return m_showCurShips ? m_homeFleet.shipCount() : m_oldShips; }
58 
showOldShips()59     void  showOldShips() { m_showCurShips=false; }
60     void  conquer( AttackFleet *conqueringFleet );
setOwner(Player * player)61     void  setOwner(Player* player) { m_owner = player; }
62     void  turn(const GameOptions &);
63 
64     //void select() { Q_ASSERT(false); }
65 Q_SIGNALS:
66     void  update();
67 
68 private:
69     QString       m_name;
70     Player       *m_owner;
71     Sector       *m_sector;
72     DefenseFleet  m_homeFleet;
73 
74     double        m_killPercentage;
75     int           m_productionRate, m_originalProductionRate;
76     int           m_planetLook;
77     int           m_oldShips;
78     bool          m_showCurShips;
79     bool          m_justconquered;
80 };
81 
82 #endif // KONQUEST_PLANET_H
83