File indexing completed on 2024-12-08 03:47:11
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_MAP_H 0012 #define KONQUEST_MAP_H 0013 0014 #include <QList> 0015 #include <QObject> 0016 0017 #include "sector.h" 0018 #include "../players/player.h" 0019 0020 0021 class Map : public QObject 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 Map(int rows, int cols); 0027 ~Map() override; 0028 0029 int rows() { return m_rows; } 0030 int columns() { return m_columns; } 0031 0032 void addPlanet(Sector *sector, Player *player, int production, double killpercentage); 0033 Planet* addPlayerPlanetSomewhere(Player *player); 0034 Planet* addNeutralPlanetSomewhere(Player *neutral); 0035 bool removePlayerPlanet(Player *player); 0036 void removePlayerPlanets(Player *player); 0037 int playerPlanetCount(Player *player); 0038 void turnOverPlayerPlanets(Player* owner, Player* newOwner); 0039 0040 void clearMap(); 0041 void resizeMap(int rows, int cols); 0042 0043 void populateMap( const QList<Player*> &players, Player *neutral, int numNeutralPlanets); 0044 0045 double distance( Planet *p1, Planet *p2 ); 0046 0047 Sector *sector(Coordinate coord) 0048 { 0049 if (coord.y() >= 0 && coord.y() < m_grid.size()) { 0050 if (coord.x() >= 0 && coord.x() < m_grid[coord.y()].size()) { 0051 return &m_grid[coord.y()][coord.x()]; 0052 } 0053 } 0054 0055 return nullptr; 0056 } 0057 0058 const QList<Planet*> planets() const; 0059 0060 protected: 0061 void childSectorUpdate(); 0062 0063 Q_SIGNALS: 0064 void update(); 0065 0066 private: 0067 Sector* findRandomFreeSector(); 0068 QString UniquePlanetName() const; 0069 0070 protected: 0071 // A map is a 2-D array of Sectors. 0072 QList<QList<Sector> > m_grid; 0073 int m_rows; // size of grid in sectors 0074 int m_columns; 0075 }; 0076 0077 #endif // KONQUEST_MAP_H