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