diff options
author | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-04-01 21:23:39 +0200 |
commit | 3c487c5cd69c53d6fea948643c0a76df03516605 (patch) | |
tree | 72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/Hangar.h | |
parent | 8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff) | |
download | starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2 |
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/Hangar.h')
-rw-r--r-- | StarsEx/Hangar.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/StarsEx/Hangar.h b/StarsEx/Hangar.h new file mode 100644 index 0000000..41f7892 --- /dev/null +++ b/StarsEx/Hangar.h @@ -0,0 +1,126 @@ +/* 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 + ======== + Everything needed to store and maintain space craft + + See Also: FlightDeck +*/ + +#ifndef Hangar_h +#define Hangar_h + +#include "Types.h" +#include "Geometry.h" +#include "SimObject.h" +#include "Text.h" + +// +--------------------------------------------------------------------+ + +class Ship; +class ShipDesign; +class FlightDeck; +class FlightDeckSlot; +class Element; +class HangarSlot; +class InboundSlot; +class CombatGroup; + +// +--------------------------------------------------------------------+ + +class Hangar : public SimObserver +{ +public: + Hangar(); + Hangar(const Hangar& rhs); + virtual ~Hangar(); + + enum HANGAR_STATE { UNAVAIL = -2, + MAINT = -1, + STORAGE = 0, + PREP, + ALERT, + QUEUED, + LOCKED, + LAUNCH, + ACTIVE, + APPROACH, + RECOVERY + }; + + enum CONSTANTS { MAX_SQUADRONS=10 }; + + virtual void ExecFrame(double seconds); + void SetShip(Ship* s) { ship = s; } + + virtual bool CreateSquadron(Text squadron, CombatGroup* g, + const ShipDesign* design, int count, int iff=-1, + int* def_load=0, int maint_count=0, int dead_count=0); + + // used only by net client to expedite creation of already active ships: + virtual bool GotoActiveFlight(int squadron, int slot, Element* elem, int* loadout); + + virtual bool GotoAlert(int squadron, int slot, FlightDeck* d, Element* elem=0, int* loadout=0, bool pkg=false, bool expedite=false); + virtual bool Ready(int squadron, int slot, FlightDeck* d); + virtual bool Launch(int squadron, int slot); + virtual bool StandDown(int squadron, int slot); + virtual bool CanStow(Ship* s); + virtual bool Stow(Ship* s); + virtual bool FindSlot(Ship* s, int& squadron, int& slot, int state=UNAVAIL); + virtual bool FindSquadronAndSlot(Ship* s, int& squadron, int& slot); + virtual bool FindAvailSlot(const ShipDesign* s, int& squadron, int& slot); + virtual bool FinishPrep(HangarSlot* slot); + virtual void SetAllIFF(int iff); + + virtual bool Update(SimObject* obj); + virtual const char* GetObserverName() const; + + // accessors: + int NumSquadrons() const { return nsquadrons; } + Text SquadronName(int n) const; + int SquadronSize(int n) const; + int SquadronIFF(int n) const; + const ShipDesign* SquadronDesign(int n) const; + + int NumShipsReady(int squadron) const; + int NumShipsMaint(int squadron) const; + int NumShipsDead(int squadron) const; + int NumSlotsEmpty() const; + + int GetActiveElements(List<Element>& active_list); + + const HangarSlot* GetSlot(int squadron, int index) const; + Ship* GetShip(const HangarSlot* s) const; + const ShipDesign* GetDesign(const HangarSlot* s) const; + FlightDeck* GetFlightDeck(const HangarSlot* s) const; + int GetFlightDeckSlot(const HangarSlot* s) const; + int GetState(const HangarSlot* s) const; + double TimeRemaining(const HangarSlot* s) const; + Element* GetPackageElement(const HangarSlot* s) const; + const int* GetLoadout(const HangarSlot* s) const; + Text StatusName(const HangarSlot* s) const; + + int PreflightQueue(FlightDeck* d) const; + DWORD GetLastPatrolLaunch() const; + void SetLastPatrolLaunch(DWORD t); + +protected: + Ship* ship; + int nsquadrons; + int nslots[MAX_SQUADRONS]; + Text names[MAX_SQUADRONS]; + HangarSlot* squadrons[MAX_SQUADRONS]; + DWORD last_patrol_launch; +}; + +// +--------------------------------------------------------------------+ + + +#endif // Hangar_h + |