hl2_src-leak-2017/src/sdklauncher/ModWizard_CopyFiles.h

150 lines
4.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#ifndef MODWIZARD_COPYFILES_H
#define MODWIZARD_COPYFILES_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui_controls/WizardSubPanel.h>
#include <vgui_controls/Label.h>
#include <vgui_controls/ProgressBar.h>
#include "utlvector.h"
#include "configs.h"
// --------------------------------------------------------------------------------------------------------------------- //
// CreateModWizard sub panel 3.
// This panel asks for the directory to install in and the mod name.
// --------------------------------------------------------------------------------------------------------------------- //
namespace vgui
{
class CModWizardSubPanel_CopyFiles : public WizardSubPanel
{
public:
typedef WizardSubPanel BaseClass;
public:
CModWizardSubPanel_CopyFiles( Panel *parent, const char *panelName );
// Called to store the settings it'll use to copy all the files over.
void GetReady( const char *pOutputDirName, const char *pOutputModGamedirName, const char *modName ) ;
virtual WizardSubPanel* GetNextSubPanel();
virtual void OnDisplayAsNext();
virtual void OnTick();
protected:
class CFileCopyInfo
{
public:
CFileCopyInfo( const char *pIn, const char *pOut )
{
Q_strncpy( m_InFilename, pIn, sizeof( m_InFilename ) );
Q_strncpy( m_OutFilename, pOut, sizeof( m_OutFilename ) );
}
char m_InFilename[MAX_PATH];
char m_OutFilename[MAX_PATH];
};
protected:
bool BuildCopyFiles_R( const char *pSourceDir, const char *pMask, const char *pOutputDirName );
bool BuildCopyFilesForMappings( char **pMappings, int nMappings );
bool HandleSpecialFileCopy( CFileCopyInfo *pInfo, bool &bErrorStatus );
bool HandleReplacements_GenericVCProj( CFileCopyInfo *pInfo, bool &bErrorStatus );
virtual bool BuildCopyFilesForMod_HL2() = 0;
virtual bool BuildCopyFilesForMod_HL2MP() = 0;
virtual bool BuildCopyFilesForMod_FromScratch() = 0;
virtual bool BuildCopyFilesForMod_SourceCodeOnly() = 0;
virtual bool HandleReplacements_GameProjectFiles( CFileCopyInfo *pInfo, bool &bErrorStatus ) = 0;
virtual bool HandleReplacements_Solution( CFileCopyInfo *pInfo, bool &bErrorStatus ) = 0;
// Right now only one of these files gets modified, but keeping it here for expansion in the future.
virtual bool HandleReplacements_TemplateOptions( CFileCopyInfo *pInfo, bool &bErrorStatus ) = 0;
protected:
CUtlVector<CFileCopyInfo> m_FileCopyInfos;
int m_iCurCopyFile; // -1 at the beginning.
Label *m_pLabel;
Label *m_pFinishedLabel;
ProgressBar *m_pProgressBar;
char m_OutputDirName[MAX_PATH]; // c:\mymod
char m_OutModGamedirName[MAX_PATH]; // c:\mymod\mymod
char m_ModName[MAX_PATH]; // mymod
ModType_t m_ModType;
};
class CModWizardSubPanel_CopyFiles_Source2006 : public CModWizardSubPanel_CopyFiles
{
public:
CModWizardSubPanel_CopyFiles_Source2006( Panel *parent, const char *panelName );
private:
bool BuildCopyFilesForMod_HL2();
bool BuildCopyFilesForMod_HL2MP();
bool BuildCopyFilesForMod_FromScratch();
bool BuildCopyFilesForMod_SourceCodeOnly();
bool HandleReplacements_GameProjectFiles( CFileCopyInfo *pInfo, bool &bErrorStatus );
bool HandleReplacements_Solution( CFileCopyInfo *pInfo, bool &bErrorStatus );
bool HandleReplacements_TemplateOptions( CFileCopyInfo *pInfo, bool &bErrorStatus ) { return false; } // Ep1 will never do this.
};
class CModWizardSubPanel_CopyFiles_Source2007 : public CModWizardSubPanel_CopyFiles
{
public:
CModWizardSubPanel_CopyFiles_Source2007( Panel *parent, const char *panelName );
private:
bool BuildCopyFilesForMod_HL2();
bool BuildCopyFilesForMod_HL2MP();
bool BuildCopyFilesForMod_FromScratch();
bool BuildCopyFilesForMod_SourceCodeOnly();
bool HandleReplacements_GameProjectFiles( CFileCopyInfo *pInfo, bool &bErrorStatus );
bool HandleReplacements_Solution( CFileCopyInfo *pInfo, bool &bErrorStatus );
// Right now only one of these files gets modified, but keeping it here for expansion in the future.
bool HandleReplacements_TemplateOptions( CFileCopyInfo *pInfo, bool &bErrorStatus );
};
class CModWizardSubPanel_CopyFiles_Source2009 : public CModWizardSubPanel_CopyFiles
{
public:
CModWizardSubPanel_CopyFiles_Source2009( Panel *parent, const char *panelName );
private:
bool BuildCopyFilesForMod_HL2();
bool BuildCopyFilesForMod_HL2MP();
bool BuildCopyFilesForMod_FromScratch();
bool BuildCopyFilesForMod_SourceCodeOnly();
bool HandleReplacements_GameProjectFiles( CFileCopyInfo *pInfo, bool &bErrorStatus );
bool HandleReplacements_Solution( CFileCopyInfo *pInfo, bool &bErrorStatus );
// Right now only one of these files gets modified, but keeping it here for expansion in the future.
bool HandleReplacements_TemplateOptions( CFileCopyInfo *pInfo, bool &bErrorStatus );
};
}
#endif // MODWIZARD_COPYFILES_H