File indexing completed on 2024-10-06 03:46:39
0001 /* 0002 SPDX-FileCopyrightText: 2003 Russell Steffen <rsteffen@bayarea.net> 0003 SPDX-FileCopyrightText: 2003 Stephan Zehetner <s.zehetner@nevox.org> 0004 SPDX-FileCopyrightText: 2006 Dmitry Suzdalev <dimsuz@gmail.com> 0005 SPDX-FileCopyrightText: 2006 Inge Wallin <inge@lysator.liu.se> 0006 SPDX-FileCopyrightText: 2006 Pierre Ducroquet <pinaraf@gmail.com> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef KONQUEST_FLEET_H 0012 #define KONQUEST_FLEET_H 0013 0014 #include <QObject> 0015 0016 class Player; 0017 class Planet; 0018 0019 //********************************************************** 0020 // class Fleet 0021 // +--- class AttackFleet 0022 // +--- class DefenseFleet 0023 //********************************************************** 0024 0025 class Fleet : public QObject 0026 { 0027 public: 0028 0029 explicit Fleet( long long initialShipCount ); 0030 ~Fleet() override {} 0031 0032 long long shipCount() const { return m_shipCount; } 0033 void removeShips( long long lostShips ); 0034 0035 protected: 0036 long long m_shipCount; 0037 }; 0038 0039 0040 class AttackFleet : public Fleet 0041 { 0042 public: 0043 AttackFleet( Planet *src, Planet *dest, long long initialCount, int arrivalTurn ); 0044 0045 Player *owner; 0046 Planet *source; 0047 Planet *destination; 0048 int arrivalTurn; 0049 }; 0050 0051 0052 class DefenseFleet : public Fleet 0053 { 0054 Q_OBJECT 0055 0056 public: 0057 DefenseFleet( Planet *newHome, long long initialCount ); 0058 0059 void absorb( AttackFleet *fleet ); 0060 void become( AttackFleet *fleet ); 0061 0062 void addShips( long long newShips ); 0063 0064 AttackFleet *spawnAttackFleet( Planet *destination, long long shipCount, int arrivalTurn ); 0065 0066 Planet *home; 0067 Q_SIGNALS: 0068 void update(); 0069 }; 0070 0071 typedef QList<AttackFleet *> AttackFleetList; 0072 0073 #endif // KONQUEST_FLEET_H