1 #ifndef PLANET_H 2 #define PLANET_H 3 4 #include "nebula.h" 5 #include "spaceObject.h" 6 #include "pathPlanner.h" 7 8 class Planet : public SpaceObject, public Updatable 9 { 10 public: 11 Planet(); 12 13 #if FEATURE_3D_RENDERING 14 virtual void draw3D() override; 15 virtual void draw3DTransparent() override; 16 #endif//FEATURE_3D_RENDERING 17 virtual void drawOnRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override; 18 virtual void drawOnGMRadar(sf::RenderTarget& window, sf::Vector2f draw_position, float scale, float rotation, bool long_range) override; 19 virtual void update(float delta) override; 20 virtual void collide(Collisionable* target, float force) override; canHideInNebula()21 virtual bool canHideInNebula() override { return false; } 22 23 float getPlanetRadius(); 24 float getCollisionSize(); 25 26 void setPlanetAtmosphereColor(float r, float g, float b); 27 void setPlanetAtmosphereTexture(string texture_name); 28 void setPlanetSurfaceTexture(string texture_name); 29 void setPlanetCloudTexture(string texture_name); 30 void setPlanetRadius(float size); 31 void setPlanetCloudRadius(float size); 32 void setDistanceFromMovementPlane(float distance_from_movement_plane); 33 void setAxialRotationTime(float time); 34 void setOrbit(P<SpaceObject> target, float orbit_time); 35 36 virtual string getExportLine() override; 37 38 private: 39 //Config: 40 float planet_size; 41 float cloud_size; 42 float atmosphere_size; 43 string planet_texture; 44 string cloud_texture; 45 string atmosphere_texture; 46 sf::Color atmosphere_color; 47 float distance_from_movement_plane; 48 49 float axial_rotation_time; 50 int32_t orbit_target_id; 51 float orbit_time; 52 float orbit_distance; 53 54 float collision_size; 55 56 void updateCollisionSize(); 57 }; 58 59 #endif//PLANET_H 60