Files
funnygame/fpc/public/helper.h
2025-07-30 23:53:26 +03:00

76 lines
1.6 KiB
C++

#ifndef HELPER_H
#define HELPER_H
#include "apktool.h"
#include "tier1/utlstring.h"
#include "target.h"
#define FPC_TEMPORAL_DIRNAME ".fpc"
struct BaseProject_t
{
public:
CUtlString m_szName;
unsigned int GenerateProjectHash( void );
};
struct CPUProject_t : public BaseProject_t
{
public:
Target_t m_target = Target_t::DefaultTarget();
};
struct ShaderProject_t : public BaseProject_t
{
public:
EShaderTarget m_eTarget;
};
//-----------------------------------------------------------------------------
// File system.
//-----------------------------------------------------------------------------
#define FILE_SYSTEM_2_INTERFACE_NAME "FileSystem2_001"
abstract_class IFileSystem2
{
public:
// Returns a directory of fpc executable
virtual char *OwnDirectory() = 0;
// Returns directory of build.cpp
virtual char *BuildDirectory() = 0;
virtual void MakeDirectory( const char *psz ) = 0;
virtual void CopyFile( const char *szDestination, const char *szOrigin ) = 0;
virtual void CopyDirectory( const char *szDestination, const char *szOrigin ) = 0;
virtual bool ShouldRecompile( const char *szSource, const char *szOutput ) = 0;
};
extern IFileSystem2 *filesystem2;
//-----------------------------------------------------------------------------
// Build stage.
//-----------------------------------------------------------------------------
class CBuildStage
{
public:
CBuildStage( CUtlString sz, int(*pMainFn)() );
CUtlString m_sz;
int(*m_pMainFn)();
};
#define DECLARE_BUILD_STAGE(sz) \
int __build_stage_##sz(); \
CBuildStage __##sz##_build_stage(#sz, __build_stage_##sz); \
int __build_stage_##sz()
CUtlVector<CBuildStage*>& BuildStages();
#endif