1 #ifndef WARP_JAMMER_H
2 #define WARP_JAMMER_H
3 
4 #include "spaceObject.h"
5 
6 class WarpJammer : public SpaceObject
7 {
8     static PVector<WarpJammer> jammer_list;
9 
10     float range;
11     float hull;
12 
13     ScriptSimpleCallback on_destruction;
14     ScriptSimpleCallback on_taking_damage;
15 public:
16     WarpJammer();
17     ~WarpJammer();
18 
setRange(float range)19     void setRange(float range) { this->range = range; }
getRange()20     float getRange() { return range; }
21 
22     virtual void drawOnRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool long_range) override;
23 
canBeTargetedBy(P<SpaceObject> other)24     virtual bool canBeTargetedBy(P<SpaceObject> other)  override { return true; }
25     virtual void takeDamage(float damage_amount, DamageInfo info) override;
26 
27     static bool isWarpJammed(sf::Vector2f position);
28     static sf::Vector2f getFirstNoneJammedPosition(sf::Vector2f start, sf::Vector2f end);
29 
30     void onTakingDamage(ScriptSimpleCallback callback);
31     void onDestruction(ScriptSimpleCallback callback);
32 
33     virtual string getExportLine() override;
34 };
35 
36 #endif//WARP_JAMMER_H
37