1 #ifndef WORM_HOLE_H
2 #define WORM_HOLE_H
3 
4 #include "nebula.h"
5 #include "spaceObject.h"
6 #include "pathPlanner.h"
7 
8 class WormHole : public SpaceObject, public Updatable
9 {
10     sf::Vector2f target_position = sf::Vector2f(0.0f, 0.0f);
11     float update_delta = 0.0f;
12     P<PathPlannerManager>  pathPlanner;
13 
14     int radar_visual;
15     static const int cloud_count = 5;
16     NebulaCloud clouds[cloud_count];
17 
18     ScriptSimpleCallback on_teleportation;
19 
20 public:
21     WormHole();
22 
23 #if FEATURE_3D_RENDERING
24     virtual void draw3DTransparent() override;
25 #endif//FEATURE_3D_RENDERING
26     virtual void drawOnRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override;
27     virtual void drawOnGMRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override;
28     virtual void update(float delta) override;
29     virtual void collide(Collisionable* target, float force) override;
30 
31     void setTargetPosition(sf::Vector2f v);   /* Where to jump to */
32     sf::Vector2f getTargetPosition();
33     void onTeleportation(ScriptSimpleCallback callback);
34 
getExportLine()35     virtual string getExportLine() override { return "WormHole():setPosition(" + string(getPosition().x, 0) + ", " + string(getPosition().y, 0) + "):setTargetPosition(" + string(target_position.x, 0) + ", " + string(target_position.y, 0) + ")"; }
36 };
37 
38 #endif//WORM_HOLE_H
39