123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #pragma once
- #if !defined(RM_MISSION_H_INC)
- #define RM_MISSION_H_INC
- #ifdef DEBUG_LINKING
- #pragma message("...including RM_Mission.h")
- #endif
- // maximum random choices
- #define MAX_RANDOM_CHOICES 100
- typedef vector<int> rmIntVector_t;
- class CRMMission
- {
- private:
- rmObjectiveList_t mObjectives;
- rmInstanceList_t mInstances;
- CRMInstanceFile mInstanceFile;
- CRMObjective* mCurrentObjective;
- bool mValidNodes;
- bool mValidPaths;
- bool mValidRivers;
- bool mValidWeapons;
- bool mValidAmmo;
- bool mValidObjectives;
- bool mValidInstances;
- int mTimeLimit;
- int mMaxInstancePosition;
- // npc multipliers
- float mAccuracyMultiplier;
- float mHealthMultiplier;
- // % chance that RMG pickup is actually spawned
- float mPickupHealth;
- float mPickupArmor;
- float mPickupAmmo;
- float mPickupWeapon;
- float mPickupEquipment;
- string mDescription;
- string mExitScreen;
- string mTimeExpiredScreen;
- // symmetric landscape style
- symmetry_t mSymmetric;
- // if set to 1 in the mission file, adds an extra connecting path in symmetric maps
- // to ensure both sides actually do connect
- int mBackUpPath;
- int mDefaultPadding;
- CRMAreaManager* mAreaManager;
- CRMPathManager* mPathManager;
- CRandomTerrain* mLandScape;
- public:
- CRMMission ( CRandomTerrain* );
- ~CRMMission ( );
- bool Load ( const char* name, const char* instances, const char* difficulty );
- bool Spawn ( CRandomTerrain* terrain, qboolean IsServer );
- void Preview ( const vec3_t from );
-
- CRMObjective* FindObjective ( const char* name );
- CRMObjective* GetCurrentObjective ( ) { return mCurrentObjective; }
-
- void CompleteMission (void);
- void FailedMission (bool TimeExpired);
- void CompleteObjective ( CRMObjective* ojective );
- int GetTimeLimit (void) { return mTimeLimit; }
- int GetMaxInstancePosition (void) { return mMaxInstancePosition; }
- const char* GetDescription (void) { return mDescription.c_str(); }
- const char* GetExitScreen (void) { return mExitScreen.c_str(); }
- int GetSymmetric (void) { return mSymmetric; }
- int GetBackUpPath (void) { return mBackUpPath; }
- int GetDefaultPadding (void) { return mDefaultPadding; }
- // void CreateMap ( void );
- bool DenyPickupHealth () {return mLandScape->flrand(0.0f,1.0f) > mPickupHealth;}
- bool DenyPickupArmor () {return mLandScape->flrand(0.0f,1.0f) > mPickupArmor;}
- bool DenyPickupAmmo () {return mLandScape->flrand(0.0f,1.0f) > mPickupAmmo;}
- bool DenyPickupWeapon () {return mLandScape->flrand(0.0f,1.0f) > mPickupWeapon;}
- bool DenyPickupEquipment () {return mLandScape->flrand(0.0f,1.0f) > mPickupEquipment;}
- private:
-
- // void PurgeUnlinkedTriggers ( );
- // void PurgeTrigger ( CEntity* trigger );
- void MirrorPos (vec3_t pos);
- CGPGroup* ParseRandom ( CGPGroup* random );
- bool ParseOrigin ( CGPGroup* originGroup, vec3_t origin, vec3_t lookat, int* flattenHeight );
- bool ParseNodes ( CGPGroup* group );
- bool ParsePaths ( CGPGroup *paths);
- bool ParseRivers ( CGPGroup *rivers);
- void PlaceBridges ();
- void PlaceWallInstance(CRMInstance* instance, float xpos, float ypos, float zpos, int x, int y, float angle);
- bool ParseDifficulty ( CGPGroup* difficulty, CGPGroup *parent );
- bool ParseWeapons ( CGPGroup* weapons );
- bool ParseAmmo ( CGPGroup* ammo );
- bool ParseOutfit ( CGPGroup* outfit );
- bool ParseObjectives ( CGPGroup* objectives );
- bool ParseInstance ( CGPGroup* instance );
- bool ParseInstances ( CGPGroup* instances );
- bool ParseInstancesOnPath ( CGPGroup* group );
- bool ParseWallRect ( CGPGroup* group, int side);
- // void SpawnNPCTriggers ( CCMLandScape* landscape );
- // void AttachNPCTriggers ( CCMLandScape* landscape );
- };
- #endif
|