summaryrefslogtreecommitdiffhomepage
path: root/Stars45/Sensor.h
diff options
context:
space:
mode:
authorFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2011-12-08 14:53:40 +0000
committerFWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544>2011-12-08 14:53:40 +0000
commite33e19d0587146859d48a134ec9fd94e7b7ba5cd (patch)
tree69d048c8801858d2756ab3a487090a7a1b74bf14 /Stars45/Sensor.h
downloadstarshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.zip
starshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.tar.gz
starshatter-e33e19d0587146859d48a134ec9fd94e7b7ba5cd.tar.bz2
Initial upload
Diffstat (limited to 'Stars45/Sensor.h')
-rw-r--r--Stars45/Sensor.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/Stars45/Sensor.h b/Stars45/Sensor.h
new file mode 100644
index 0000000..5bb4dc0
--- /dev/null
+++ b/Stars45/Sensor.h
@@ -0,0 +1,86 @@
+/* Project Starshatter 4.5
+ Destroyer Studios LLC
+ Copyright © 1997-2004. All Rights Reserved.
+
+ SUBSYSTEM: Stars.exe
+ FILE: Sensor.h
+ AUTHOR: John DiCamillo
+
+
+ OVERVIEW
+ ========
+ Integrated (Passive and Active) Sensor Package class
+*/
+
+#ifndef Sensor_h
+#define Sensor_h
+
+#include "Types.h"
+#include "SimObject.h"
+#include "System.h"
+#include "Geometry.h"
+#include "List.h"
+
+// +--------------------------------------------------------------------+
+
+class Shot;
+class Contact;
+
+// +--------------------------------------------------------------------+
+
+class Sensor : public System, public SimObserver
+{
+public:
+ enum Mode {
+ PAS, STD, ACM, GM, // fighter modes
+ PST, CST // starship modes
+ };
+
+ Sensor();
+ Sensor(const Sensor& rhs);
+ virtual ~Sensor();
+
+ virtual void ExecFrame(double seconds);
+ virtual SimObject* LockTarget(int type=SimObject::SIM_SHIP,
+ bool closest=false,
+ bool hostile=false);
+ virtual SimObject* LockTarget(SimObject* candidate);
+ virtual bool IsTracking(SimObject* tgt);
+ virtual void DoEMCON(int emcon);
+
+ virtual void ClearAllContacts();
+
+ virtual Mode GetMode() const { return mode; }
+ virtual void SetMode(Mode m);
+ virtual double GetBeamLimit() const;
+ virtual double GetBeamRange() const;
+ virtual void IncreaseRange();
+ virtual void DecreaseRange();
+ virtual void AddRange(double r);
+
+ Contact* FindContact(Ship* s);
+ Contact* FindContact(Shot* s);
+
+ // borrow this sensor for missile seeker
+ SimObject* AcquirePassiveTargetForMissile();
+ SimObject* AcquireActiveTargetForMissile();
+
+ // SimObserver:
+ virtual bool Update(SimObject* obj);
+ virtual const char* GetObserverName() const;
+
+protected:
+ void ProcessContact(Ship* contact, double az1, double az2);
+ void ProcessContact(Shot* contact, double az1, double az2);
+
+ Mode mode;
+ int nsettings;
+ int range_index;
+ float range_settings[8];
+ SimObject* target;
+
+ List<Contact> contacts;
+};
+
+#endif Sensor_h
+