sqwarmed/sdk_src/game/shared/swarm/asw_campaign_info.h

85 lines
2.8 KiB
C++

#ifndef _INCLUDED_ASW_CAMPAIGN_INFO_H
#define _INCLUDED_ASW_CAMPAIGN_INFO_H
#ifdef _WIN32
#pragma once
#endif
// maximum number of missions that can be in a campaign
#define ASW_MAX_CAMPAIGN_MISSIONS 255
class KeyValues;
// this class contains information about the current campaign
class CASW_Campaign_Info
{
public:
CASW_Campaign_Info();
virtual ~CASW_Campaign_Info();
// Initialises all campaign info from a keyvalues file
bool LoadCampaign(const char *szCampaignName);
void ClearCampaign();
// adds a one way link from start mission to end mission
void AddMissionLink(int iStartMission, int iEndMission);
// name given to this campaign
string_t m_CampaignName;
// intro/outro map names
string_t m_IntroMap;
string_t m_OutroMap;
// texture used behind the campaign dots and links
string_t m_CampaignTextureName;
string_t m_CampaignTextureLayer1;
string_t m_CampaignTextureLayer2;
string_t m_CampaignTextureLayer3;
string_t m_CustomCreditsFile;
int m_iGalaxyX;
int m_iGalaxyY;
int m_iSearchLightX[4];
int m_iSearchLightY[4];
int m_iSearchLightAngle[4];
void GetGalaxyPos(int &x, int &y);
// details on a particular mission in the campaign
struct CASW_Campaign_Mission_t
{
int m_iMissionIndex;
string_t m_MissionName; // human readable name for this mission
string_t m_MapName; // name of the .bsp file to load for this mission
int m_iLocationX; // it's position on the mission texture (number goes from 0 to 1023)
int m_iLocationY;
int m_iDifficultyMod;
CUtlVector<int> m_Links; // list of mission indices, showing links from this mission to others
string_t m_LinksString; // temp var holding the m_Links in human readable format (from the campaign script file)
string_t m_LocationDescription; // short description of the location like, shown in the upper right of the campaign screen
string_t m_Briefing; // short mission description shown in the briefing box of the campaign screen
string_t m_ThreatString; // string to describe the overall threat level of this mission
bool m_bAlwaysVisible;
bool m_bNeedsMoreThanOneMarine;
};
// Array of missions that make up our campaign. Entry [0] is our starting point and isn't a proper mission.
CASW_Campaign_Mission_t *m_pMission[ASW_MAX_CAMPAIGN_MISSIONS];
CASW_Campaign_Mission_t* GetMission(int iMissionIndex);
CASW_Campaign_Mission_t* GetMissionByMissionName(const char *szMissionName);
CASW_Campaign_Mission_t* GetMissionByMapName(const char *szMissionName);
int m_iNumMissions;
int GetNumMissions() { return m_iNumMissions; }
bool AreMissionsLinked(int i, int j);
void DebugInfo();
KeyValues *m_CampaignKeyValues;
bool IsJacobCampaign();
char m_szCampaignFilename[64];
};
#endif // _INCLUDED_ASW_CAMPAIGN_INFO_H