X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=bs%2Fplanet.h;h=c729ebf6d634e781ac76467d1d416e389f6d6dba;hb=7b5ccf741883c34b2ac96afe460a3d0eda3701bb;hp=ccb2ee40f4b5bb7a18ff3ac38bd5699be8680a0b;hpb=33b6dc7ca95a05c26a78879413395c1588066b77;p=hbs.git diff --git a/bs/planet.h b/bs/planet.h index ccb2ee4..c729ebf 100644 --- a/bs/planet.h +++ b/bs/planet.h @@ -20,7 +20,7 @@ #include "fleet.h" -typedef std::map RoidList; +typedef std::map > RoidList; /**This class is the implementation of a planet. * @@ -28,18 +28,70 @@ typedef std::map RoidList; * real life, it's a game engine, and in this engine a planet got all the * attributes that a fleet got + some additions, so I think the inheritance * is fully legal from a OOP standpoint. If it isn't, then please correct me ;) + * + * This class is doing the actual battle simulation (since battles without + * planets aren't available in this game). *@author Michael Andreen */ - -class Planet : public Fleet { +class Planet : public Fleet +{ public: Planet(); virtual ~Planet(); - unsigned score(int tick = 0); - void setScore(unsigned i); + /** The score for the current planet. + * \returns the score as an unsigned int. + * \todo add a param to specify what tick to use. + */ + unsigned planetScore() const; + + /** Sets the score for the current fleet. + * \param score this param is a unsigned int holding the score + * \todo add a param to specify what tick to use. + */ + void setPlanetScore(unsigned score); + + /** This function is used to get the number of roids of a specific type. + * \param type the for this roid (for pa: metal, crystal, eonium, uninit) + * \param tick what tick you want to get the number from. + * \returns the number of the specified type at the specified tick + */ + int roids(std::string type, int tick = 0) const; + /** Used to set the number of roid at a specific tick + * \param type the for this roid (for pa: metal, crystal, eonium, uninit) + * \param tick what tick you want to get the number from. + * \param number the number of roids you want to set. + */ + void setRoids(std::string type, int number, int tick = 0); + /** This function is used to remove a specific number of roids without + * knowing how many the total is. + * \param type the for this roid (for pa: metal, crystal, eonium, uninit) + * \param tick what tick you want to get the number from. + * \param number the number of roids you want to take. + */ + void takeRoids(std::string type, int number, int tick = 0); + + /** This function is used to start the batlle calculations on the current + * planet. It doesn't touch tick 0 on any of the fleet that fight in the + * battle, but all other ticks might be touched. + * \param friendly a vector with pointers to all friendly Fleet:s. + * \param hostile a vector with pointers to all hostile Fleet:s. + */ + void runBattle(std::vector friendly, std::vector hostile); protected: + /** This function is used to start the calculations of a single tick of the + * battle on the current planet. It's protected because it's not really meant + * to be used outside runBattle(), but I might reconsider it. + * \param friendly a pointer to the friendly fleet. + * \param hostile a pointer to the hostile fleet + * \param stealfriendly a container used to store all the stolen units the + * friendly side took this tick. + * \param stealhostile a cointainer used to store all the stole units the + * hostile side took this tick. + */ + void calcOneTick(Planet* friendly, Fleet* hostile, std::map >& stealfriendly, std::map >& stealhostile, int tick = 0); + unsigned m_iScore; RoidList m_Roids;