hl2_src-leak-2017/src/gameui/LoadCommentaryDialog.h

64 lines
1.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef LOADCOMMENTARYDIALOG_H
#define LOADCOMMENTARYDIALOG_H
#ifdef _WIN32
#pragma once
#endif
#include "vgui_controls/Frame.h"
#include "filesystem.h"
#include "utlvector.h"
#define COMMENTARY_MAPFILENAME_MAX_LEN MAX_PATH
#define COMMENTARY_MAPNAME_MAX_LEN 32
#define COMMENTARY_DESCRIP_MAX_LEN 512
#define MAX_LISTED_COMMENTARY_ITEMS 32
struct CommentaryItem_t
{
char szMapFileName[COMMENTARY_MAPFILENAME_MAX_LEN]; // file location of the map
char szMapName[COMMENTARY_MAPNAME_MAX_LEN]; // clean name of the map, eg "dod_kalt"
char szPrintName[COMMENTARY_MAPNAME_MAX_LEN]; // printable name "Kalt"
char szDescription[COMMENTARY_DESCRIP_MAX_LEN]; // track description "This map is fun, and people like it!"
//int iChannel; // TODO: multiple channels within a single map, loaded into separate commentary tracks
};
//-----------------------------------------------------------------------------
// Purpose: Base class for save & load game dialogs
//-----------------------------------------------------------------------------
class CLoadCommentaryDialog : public vgui::Frame
{
DECLARE_CLASS_SIMPLE( CLoadCommentaryDialog, vgui::Frame );
public:
CLoadCommentaryDialog( vgui::Panel *parent );
protected:
CUtlVector<CommentaryItem_t> m_CommentaryItems;
vgui::PanelListPanel *m_pGameList;
virtual void OnCommand( const char *command );
virtual void OnKeyCodePressed( vgui::KeyCode code );
void ScanCommentaryFiles();
void CreateCommentaryItemList();
int GetSelectedItemIndex();
void AddCommentaryItemToList( int saveIndex );
void ParseCommentaryFile( char const *pszFileName, char const *pszShortName );
static int __cdecl SaveGameSortFunc( const void *lhs, const void *rhs );
private:
MESSAGE_FUNC( OnPanelSelected, "PanelSelected" );
};
#endif // LOADCOMMENTARYDIALOG_H