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