Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

planet.h

Go to the documentation of this file.
00001 /*
00002          _/_/_/     _/_/_/   _/_/_/_/    _/_/_/    _/    _/  _/_/_/_/ _/_/_/_/    _/_/_/   _/_/_/_/
00003         _/    _/  _/    _/  _/     _/  _/     _/  _/    _/  _/       _/     _/  _/    _/  _/     _/
00004        _/    _/  _/    _/  _/     _/  _/     _/  _/    _/  _/       _/     _/  _/    _/  _/     _/
00005       _/_/_/    _/    _/  _/_/_/_/   _/     _/  _/    _/  _/_/_/   _/_/_/_/   _/    _/  _/_/_/_/
00006      _/     _/ _/    _/  _/  _/     _/     _/  _/    _/  _/       _/  _/     _/    _/  _/  _/
00007     _/     _/ _/    _/  _/   _/    _/   _/_/  _/    _/  _/       _/   _/    _/    _/  _/   _/
00008    _/     _/ _/    _/  _/    _/     _/_/_/   _/    _/  _/       _/    _/   _/    _/  _/    _/
00009   _/_/_/_/   _/_/_/   _/     _/         _/   _/_/_/   _/_/_/_/ _/     _/   _/_/_/   _/     _/
00010 
00011   \author Hannosset Christophe
00012   \date 11 - Nov - 2003
00013 */
00014 
00015 #if !defined( __PLANET_H__ )
00016 #define __PLANET_H__
00017 
00018 class Planet : public HPaint    {
00019 private:
00020 
00021         int id;
00022 
00023         XRect   area;
00024 
00025 protected:
00026 
00027         friend class Colony;
00028         friend class StarSystem;
00029         friend class Galaxy;
00030 
00031         int     ore , energy , soil , fauna , flora , lithium , deuterium;
00032 
00033         StarSystem      *&ss;
00034         
00035         Colony  *colony;
00036 
00037         double  humidity , surfaceTemperature , gravity , atmPressure , sunEnergy , water;
00038         double  humidityTerraformedDelta , surfaceTemperatureTerraformedDelta , pressureTerraformedDelta;
00039 
00040 public:
00041 
00042         const int       planetType;
00043         const int       planetSize;
00044         const string planetName;
00045         const int planetNo;
00046 
00047         static vector<Planet *> allPlanets;
00048 
00049         Planet( StarSystem *&aSs , const string &aPlanetName , const int aPLanetType , const int aPlanetSize , const int aPlanetNo );
00050 
00051         virtual ~Planet( void );
00052 
00053         const int GetPlanetSize( void ) const   {       return 1 + planetSize;  }
00054 
00055         const bool DrawPlanet( XRect *plRect );
00056 
00057         const int GetType( void ) const {       return planetType;      }
00058         const double GetSurfaceGravity( void ) const    {       return gravity; }
00059         const double GetTotalHumidity( void ) const {   return humidity + humidityTerraformedDelta;     }
00060         const double GetTotalSurfaceTemperature( void ) const   {       return surfaceTemperature + surfaceTemperatureTerraformedDelta; }
00061         const double GetTotalPressure( void ) const     {       return atmPressure + pressureTerraformedDelta;  }
00062         const double GetSoil( void ) const      {       return soil + soil * (GetTotalHumidity() + (1 - GetSunFactor())) / 200.0;       }
00063         const double GetSunFactor( void ) const {       return sunEnergy;       }       //       - sunEnergy * GetTotalHumidity() / 100.0;      }
00064         const double GetOre( void ) const       {       return ore;     }
00065         const double GetEnergy( void ) const    {       return energy;  }
00066         const double GetFauna( void ) const     {       return fauna * GetFlora() / 100.0;      }
00067         const double GetFlora( void ) const     {       return flora * (GetWater() + GetSoil()) / 200.0;        }
00068         const double GetWater( void ) const     {       return water * GetTotalPressure() / 100.0 + GetTotalHumidity() / 10.0;  }
00069         const double GetLithium( void ) const   {       return lithium + lithium * GetOre() / 100.0;    }
00070         const double GetDeuterium( void ) const {       return deuterium + deuterium * GetWater() / 100.0;      }
00071 
00073         const bool ClickedOn( const XPoint *p );
00074 
00075         void Colonize( const icstring &aSpecies , const bool aHomeWorld = false );
00076         const bool IsColonized( void ) const    {       return colony != 0;     }
00077 
00078         const bool IsCompatible( SpeciesInfo *aPi );
00079 
00080         const bool IsHomeWorldOf( const icstring &species );
00081 
00082         const bool IsPlanetName( const char *aName ) const      {       return planetName == aName;     }
00083 protected:
00084 
00085         const bool Save( ofstream *of );
00086 
00087         void Setup( void );
00088 };
00089 
00090 #endif

Generated on Fri Dec 5 04:06:00 2003 for Borqueror by doxygen 1.3.3