1 #ifndef MINE_H
2 #define MINE_H
3 
4 #include "spaceObject.h"
5 
6 class Mine : public SpaceObject, public Updatable
7 {
8     constexpr static float blastRange = 1000.0f;
9     constexpr static float trigger_range = 600.0f;
10     constexpr static float triggerDelay = 1.0f;
11     constexpr static float damageAtCenter = 160.0f;
12     constexpr static float damageAtEdge = 30.0f;
13 
14     ScriptSimpleCallback on_destruction;
15 
16 public:
17     P<SpaceObject> owner;
18     bool triggered;       //Only valid on server.
19     float triggerTimeout; //Only valid on server.
20     float ejectTimeout;   //Only valid on server.
21     float particleTimeout;
22 
23     Mine();
24     virtual ~Mine();
25 
26     virtual void draw3D() override;
27     virtual void draw3DTransparent() override;
28     virtual void drawOnRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override;
29     virtual void drawOnGMRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override;
30     virtual void update(float delta) override;
31 
32     virtual void collide(Collisionable* target, float force) override;
33     void eject();
34     void explode();
35     void onDestruction(ScriptSimpleCallback callback);
36 
37     P<SpaceObject> getOwner();
38     virtual std::unordered_map<string, string> getGMInfo() override;
getExportLine()39     virtual string getExportLine() override { return "Mine():setPosition(" + string(getPosition().x, 0) + ", " + string(getPosition().y, 0) + ")"; }
40 
41 private:
42     const MissileWeaponData& data;
43 };
44 
45 #endif//MINE_H
46