diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /src/libparsec/include/g_extra.h | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'src/libparsec/include/g_extra.h')
| -rw-r--r-- | src/libparsec/include/g_extra.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/libparsec/include/g_extra.h b/src/libparsec/include/g_extra.h new file mode 100644 index 0000000..e58be44 --- /dev/null +++ b/src/libparsec/include/g_extra.h @@ -0,0 +1,142 @@ +/* +* PARSEC HEADER: G_extra.h +*/ + +#ifndef _G_EXTRA_H_ +#define _G_EXTRA_H_ + +#ifdef PARSEC_CLIENT + //FIXME: move this into E_GLOBAL.H for the client + #define TheGameExtraManager (G_ExtraManager::GetExtraManager()) +#endif //PARSEC_CLIENT + +// class maintaining all EXTRA related stuff ---------------------------------- +// +class G_ExtraManager +{ +public: + + int ExtraProbability; + int MaxExtraArea; + int MinExtraDist; + int ProbHelixCannon; + int ProbLightningDevice; + int ProbPhotonCannon; + int ProbProximityMine; + int ProbMissilePack; + int ProbDumbMissPack; + int ProbHomMissPack; + int ProbSwarmMissPack; + int ProbRepairExtra; + int ProbAfterburner; + int ProbHoloDecoy; + int ProbInvisibility; + int ProbInvulnerability; + int ProbEnergyField; + int ProbLaserUpgrade; + int ProbLaserUpgrade1; + int ProbLaserUpgrade2; + int ProbEmpUpgrade1; + int ProbEmpUpgrade2; + +protected: + + G_ExtraManager(); + + // place extras after ship was shot down + void _PlaceShipExtras( int num, int objclass, ShipObject *shippo ); + + + // boost extra collected: energy boost + char* _CollectBoostEnergy( ShipObject* cur_ship, Extra1Obj* extra1po ); + + // boost extra collected: repair damage + char* _CollectBoostRepair( ShipObject* cur_ship, Extra1Obj* extra1po ); + + // package extra collected: dumb missiles + char* _CollectPackDumb( ShipObject* cur_ship, Extra2Obj* extra2po ); + + // package extra collected: guided missiles + char* _CollectPackGuide( ShipObject* cur_ship, Extra2Obj* extra2po ); + + // device extra collected: swarm missiles + char* _CollectPackSwarm( ShipObject* cur_ship, Extra2Obj* extra2po ); + + // package extra collected: proximity mines + char* _CollectPackMine( ShipObject* cur_ship, Extra2Obj* extra2po ); + + // device extra collected: helix cannon + char* _CollectDeviceHelix( ShipObject* cur_ship ); + + // device extra collected: lightning device + char* _CollectDeviceLightning( ShipObject* cur_ship ); + + // device extra collected: photon cannon + char* _CollectDevicePhoton( ShipObject* cur_ship ); + + // device extra collected: afterburner + char* _CollectDeviceAfterburner( ShipObject* cur_ship ); + + // device extra collected: invisibility + char* _CollectDeviceInvisibility( ShipObject* cur_ship ); + + // device extra collected: invulnerability + char* _CollectDeviceInvulnerability( ShipObject* cur_ship ); + + // device extra collected: decoy + char* _CollectDeviceDecoy( ShipObject* cur_ship ); + + // device extra collected: laser upgrade 1 + char* _CollectDeviceLaserUpgrade1( ShipObject* cur_ship ); + + // device extra collected: laser upgrade 2 + char* _CollectDeviceLaserUpgrade2( ShipObject* cur_ship ); + + // device extra collected: emp upgrade 1 + char* _CollectDeviceEmpUpgrade1( ShipObject* cur_ship ); + + // device extra collected: emp upgrade 2 + char* _CollectDeviceEmpUpgrade2( ShipObject* cur_ship ); + + // helper function when collecting devices + char* _CollectDevice( int nDevice, ShipObject* cur_ship ); + + // helper function when collecting specials + char* _CollectSpecial( int nSpecial, ShipObject* cur_ship ); + + // function when colliding with a mine + char* _CollisionProximityMine( Mine1Obj *minepo ); + +public: + + // SINGLETON pattern + static G_ExtraManager* GetExtraManager() + { + static G_ExtraManager _TheGameExtraManager; + return &_TheGameExtraManager; + } + + // place extras in vicinity of local ship object + void OBJ_DoExtraPlacement(); + + // create extras after ship was shot down + void OBJ_CreateShipExtras( ShipObject *shippo ); + + // fill member variables of extras + void OBJ_FillExtraMemberVars( ExtraObject* extrapo ); + + // kill extra that immediately follows passed node in list + void OBJ_KillExtra( ExtraObject* precnode, int collected ); + + // animate an extra + void OBJ_AnimateExtra( ExtraObject* extrapo ); + + + // perform action according to extra type and determine message to show + char* CollectExtra( ShipObject* cur_ship, ExtraObject* curextra ); + char* _CollectBoostEnergyField( ShipObject* cur_ship, int boost ); +}; + + + +#endif // _G_EXTRA_H_ |
