summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/WeaponGroup.h
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-04-01 21:23:39 +0200
committerAki <please@ignore.pl>2022-04-01 21:23:39 +0200
commit3c487c5cd69c53d6fea948643c0a76df03516605 (patch)
tree72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/WeaponGroup.h
parent8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff)
downloadstarshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/WeaponGroup.h')
-rw-r--r--StarsEx/WeaponGroup.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/StarsEx/WeaponGroup.h b/StarsEx/WeaponGroup.h
new file mode 100644
index 0000000..7b2b1bd
--- /dev/null
+++ b/StarsEx/WeaponGroup.h
@@ -0,0 +1,105 @@
+/* Starshatter: The Open Source Project
+ Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
+ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
+ Copyright (c) 1997-2006, Destroyer Studios LLC.
+
+ AUTHOR: John DiCamillo
+
+
+ OVERVIEW
+ ========
+ Weapon Control Category (Group) class
+*/
+
+#ifndef WeaponGroup_h
+#define WeaponGroup_h
+
+#include "Types.h"
+#include "Weapon.h"
+#include "Text.h"
+
+// +--------------------------------------------------------------------+
+
+class WeaponGroup
+{
+public:
+ static const char* TYPENAME() { return "WeaponGroup"; }
+
+ WeaponGroup(const char* name);
+ ~WeaponGroup();
+
+ void ExecFrame(double factor);
+
+ // identification:
+ const char* Name() const { return name; }
+ const char* Abbreviation() const { return abrv; }
+ void SetName(const char* n);
+ void SetAbbreviation(const char* a);
+
+ bool IsPrimary() const;
+ bool IsDrone() const;
+ bool IsDecoy() const;
+ bool IsProbe() const;
+ bool IsMissile() const;
+ bool IsBeam() const;
+ int Value() const;
+
+ // weapon list:
+ void AddWeapon(Weapon* w);
+ int NumWeapons() const;
+ List<Weapon>& GetWeapons();
+ bool Contains(const Weapon* w) const;
+
+ // weapon selection:
+ void SelectWeapon(int n);
+ void CycleWeapon();
+ Weapon* GetWeapon(int n) const;
+ Weapon* GetSelected() const;
+
+ // operations:
+ bool GetTrigger() const { return trigger; }
+ void SetTrigger(bool t=true) { trigger = t; }
+ int Ammo() const { return ammo; }
+ float Mass() const { return mass; }
+ float Resistance() const { return resist; }
+ void CheckAmmo();
+
+ void SetTarget(SimObject* t, System* sub=0);
+ SimObject* GetTarget() const;
+ System* GetSubTarget() const;
+ void DropTarget();
+ void SetFiringOrders(int o);
+ int GetFiringOrders() const { return orders; }
+ void SetControlMode(int m);
+ int GetControlMode() const { return control; }
+ void SetSweep(int s);
+ int GetSweep() const { return sweep; }
+ int Status() const;
+
+ WeaponDesign* GetDesign() const;
+ bool CanTarget(DWORD tgt_class) const;
+
+ void PowerOn();
+ void PowerOff();
+
+protected:
+ // Displayable name:
+ Text name;
+ Text abrv;
+
+ List<Weapon> weapons;
+
+ int selected;
+ bool trigger;
+ int ammo;
+
+ int orders;
+ int control;
+ int sweep;
+
+ float mass;
+ float resist;
+};
+
+#endif // WeaponGroup_h
+