You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.0 KiB
167 lines
4.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef BONUSMAPSDATABASE_H |
|
#define BONUSMAPSDATABASE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "utlvector.h" |
|
|
|
|
|
struct ChallengeDescription_t |
|
{ |
|
char szName[32]; |
|
char szComment[256]; |
|
|
|
int iType; |
|
|
|
int iBronze; |
|
int iSilver; |
|
int iGold; |
|
|
|
int iBest; |
|
}; |
|
|
|
struct BonusMapDescription_t |
|
{ |
|
bool bIsFolder; |
|
|
|
char szShortName[64]; |
|
char szFileName[128]; |
|
|
|
char szMapFileName[128]; |
|
char szChapterName[128]; |
|
char szImageName[128]; |
|
|
|
char szMapName[64]; |
|
char szComment[256]; |
|
|
|
bool bLocked; |
|
bool bComplete; |
|
|
|
CUtlVector<ChallengeDescription_t> *m_pChallenges; |
|
|
|
BonusMapDescription_t( void ) |
|
{ |
|
bIsFolder = false; |
|
|
|
szShortName[ 0 ] = '\0'; |
|
szFileName[ 0 ] = '\0'; |
|
|
|
szMapFileName[ 0 ] = '\0'; |
|
szChapterName[ 0 ] = '\0'; |
|
szImageName[ 0 ] = '\0'; |
|
|
|
szMapName[ 0 ] = '\0'; |
|
szComment[ 0 ] = '\0'; |
|
|
|
bLocked = false; |
|
bComplete = false; |
|
|
|
m_pChallenges = NULL; |
|
} |
|
}; |
|
|
|
struct BonusMapChallenge_t |
|
{ |
|
char szFileName[128]; |
|
char szMapName[32]; |
|
char szChallengeName[32]; |
|
int iBest; |
|
}; |
|
|
|
|
|
class KeyValues; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Keeps track of bonus maps on disk |
|
//----------------------------------------------------------------------------- |
|
class CBonusMapsDatabase |
|
{ |
|
|
|
public: |
|
CBonusMapsDatabase( void ); |
|
~CBonusMapsDatabase(); |
|
|
|
bool ReadBonusMapSaveData( void ); |
|
bool WriteSaveData( void ); |
|
|
|
const char * GetPath( void ) { return m_szCurrentPath; } |
|
void RootPath( void ); |
|
void AppendPath( const char *pchAppend ); |
|
void BackPath( void ); |
|
void SetPath( const char *pchPath, int iDirDepth ); |
|
|
|
void ClearBonusMapsList( void ); |
|
void ScanBonusMaps( void ); |
|
void RefreshMapData( void ); |
|
|
|
int BonusCount( void ); |
|
BonusMapDescription_t * GetBonusData( int iIndex ) { return &(m_BonusMaps[ iIndex ]); } |
|
int InvalidIndex( void ) { return m_BonusMaps.InvalidIndex(); } |
|
bool IsValidIndex( int iIndex ) { return m_BonusMaps.IsValidIndex( iIndex ); } |
|
|
|
bool GetBlink( void ); |
|
void SetBlink( bool bState ); |
|
|
|
bool BonusesUnlocked( void ); |
|
|
|
void SetCurrentChallengeNames( const char *pchFileName, const char *pchMapName, const char *pchChallengeName ); |
|
void GetCurrentChallengeNames( char *pchFileName, char *pchMapName, char *pchChallengeName ); |
|
void SetCurrentChallengeObjectives( int iBronze, int iSilver, int iGold ); |
|
void GetCurrentChallengeObjectives( int &iBronze, int &iSilver, int &iGold ); |
|
|
|
bool SetBooleanStatus( const char *pchName, const char *pchFileName, const char *pchMapName, bool bValue ); |
|
bool SetBooleanStatus( const char *pchName, int iIndex, bool bValue ); |
|
bool UpdateChallengeBest( const char *pchFileName, const char *pchMapName, const char *pchChallengeName, int iBest ); |
|
|
|
float GetCompletionPercentage( void ); |
|
|
|
int NumAdvancedComplete( void ); |
|
void NumMedals( int piNumMedals[ 3 ] ); |
|
|
|
private: |
|
|
|
void AddBonus( const char *pCurrentPath, const char *pDirFileName, bool bIsFolder ); |
|
void BuildSubdirectoryList( const char *pCurrentPath, bool bOutOfRoot ); |
|
void BuildBonusMapsList( const char *pCurrentPath, bool bOutOfRoot ); |
|
|
|
void ParseBonusMapData( char const *pszFileName, char const *pszShortName, bool bIsFolder ); |
|
|
|
private: |
|
|
|
KeyValues *m_pBonusMapsManifest; |
|
|
|
CUtlVector<BonusMapDescription_t> m_BonusMaps; |
|
|
|
KeyValues *m_pBonusMapSavedData; |
|
bool m_bSavedDataChanged; |
|
|
|
int m_iX360BonusesUnlocked; // Only used on 360 |
|
bool m_bHasLoadedSaveData; |
|
|
|
int m_iDirDepth; |
|
char m_szCurrentPath[_MAX_PATH]; |
|
float m_fCurrentCompletion; |
|
int m_iCompletableLevels; |
|
|
|
BonusMapChallenge_t m_CurrentChallengeNames; |
|
ChallengeDescription_t m_CurrentChallengeObjectives; |
|
}; |
|
|
|
|
|
void GetChallengeMedals( ChallengeDescription_t *pChallengeDescription, int &iBest, int &iEarnedMedal, int &iNext, int &iNextMedal ); |
|
CBonusMapsDatabase *BonusMapsDatabase( void ); |
|
|
|
extern const char g_pszMedalNames[4][8]; |
|
|
|
|
|
#endif // BONUSMAPSDATABASE_H
|
|
|