aboutsummaryrefslogtreecommitdiff
path: root/src/libparsec/include/g_extra.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libparsec/include/g_extra.h')
-rw-r--r--src/libparsec/include/g_extra.h142
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_