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.
62 lines
1.5 KiB
62 lines
1.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#ifndef MODLIST_H |
|
#define MODLIST_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Handles parsing of half-life directory for mod info |
|
//----------------------------------------------------------------------------- |
|
class CModList |
|
{ |
|
public: |
|
CModList(); |
|
|
|
int GetIndex( const CGameID &iAppID ) const; |
|
void AddVGUIListener( vgui::VPANEL panel ); |
|
|
|
// returns number of mods |
|
int ModCount(); |
|
|
|
// returns the full name of the mod, index valid in range [0, ModCount) |
|
const char *GetModName( int index ); |
|
|
|
// returns mod directory string |
|
const char *GetModDir( int index ); |
|
|
|
const CGameID &GetAppID( int index ) const; |
|
|
|
// returns the mod name for the associated gamedir |
|
const char *GetModNameForModDir( const CGameID &iAppID ); |
|
|
|
private: |
|
struct mod_t |
|
{ |
|
char description[64]; |
|
char gamedir[64]; |
|
CGameID m_GameID; |
|
int m_InternalAppId; |
|
bool operator==( const mod_t& rhs ) const { return rhs.m_GameID == m_GameID; } |
|
}; |
|
|
|
static int ModNameCompare( const mod_t *pLeft, const mod_t *pRight ); |
|
void ParseInstalledMods(); |
|
void ParseSteamMods(); |
|
int LoadAppConfiguration( uint32 nAppID ); |
|
|
|
CUtlVector<mod_t> m_ModList; |
|
CUtlVector<vgui::VPANEL> m_VGUIListeners; |
|
}; |
|
|
|
// singleton accessor |
|
extern CModList &ModList(); |
|
|
|
|
|
#endif // MODLIST_H
|
|
|