File indexing completed on 2024-04-21 04:04:05

0001 /* This file is part of KsirK.
0002    Copyright (C) 2002-2007 Gael de Chalendar <kleag@free.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 #ifndef CONTINENT_H
0021 #define CONTINENT_H
0022 
0023 #include "country.h"
0024 
0025 namespace Ksirk
0026 {
0027 
0028 namespace GameLogic
0029 {
0030 
0031 /**
0032   * This class represents a continent of the world. Each country belongs to 
0033   * a continent. When a player owns all the countries of a continent, he wins 
0034   * more armies. It is the basic object on which the strategies are based.
0035   * @author Gael de Chalendar (aka Kleag)
0036   */
0037 class Continent
0038 {
0039 public:
0040   /** 
0041     * The constructor-initializer.
0042     * @param myName The name of this continent.
0043     * @param myCountries The countries that will be member of this continent.
0044     * @param myBonus The bonus of armies at end of turn for the player owning 
0045     * all this continent.
0046     * @param id The unique integer id of this continent.
0047     */
0048   Continent (const QString &myName, const QList<Country*>& myCountries, const int myBonus);
0049 
0050   /** Default destructor. */
0051   virtual ~Continent();
0052 
0053   /**
0054     * Read property of m_members, the countries of this continent.
0055     */
0056   virtual const QList<Country*>& getMembers() const;
0057 
0058   /** Return the name of this continent. */
0059   virtual const QString& name() const;
0060 
0061   /** 
0062     * Return the bonus of armies at end of turn for the player owning all this 
0063     * continent.
0064     */
0065   virtual const int& getBonus() const;
0066 
0067   /** 
0068     * Returns the player that owns all the countries of this continent. 0 if 
0069     * none.
0070     */
0071   const Player* owner() const;
0072 
0073   /**
0074     * Saves a XML representation of this continent for game saving purpose
0075     * @param xmlStream The stream to write on
0076     */
0077   void saveXml(QTextStream& xmlStream);
0078 
0079   //@{
0080   /** Accessors to the unique integer identifier of this continent. */
0081 /*  inline unsigned int id() const {return m_id;}
0082   inline unsigned int id() {return m_id;}
0083   inline void id(unsigned int id) {m_id = id;}*/
0084   //@}
0085 
0086   /** Returns the list of countries of this continent owned by @ref player */
0087   QList<Country*> countriesOwnedBy(const Player* player);
0088 
0089 private: // Private attributes
0090 
0091   /** This is the list of the countries that forms this continent. This member
0092     * is constant as it will not change during the game.
0093     */
0094   QList<Country*> m_members;
0095 
0096   /** The name of the continent */
0097   const QString m_name;
0098 
0099   /** The bonus armies got by a user that owns all this continent */
0100   const int bonus;
0101 
0102   /** The unique integer identifier of this continent. */
0103 //   unsigned int m_id;
0104 };
0105 
0106 }
0107 }
0108 #endif