mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 14:53:52 +00:00
46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "IGpFileSystem.h"
|
|
|
|
#include "GpCoreDefs.h"
|
|
#include "GpWindows.h"
|
|
|
|
#include <string>
|
|
|
|
class GpFileSystem_Win32 final : public IGpFileSystem
|
|
{
|
|
public:
|
|
GpFileSystem_Win32();
|
|
|
|
bool FileExists(PortabilityLayer::VirtualDirectory_t virtualDirectory, const char *path) override;
|
|
bool FileLocked(PortabilityLayer::VirtualDirectory_t virtualDirectory, const char *path, bool &exists) override;
|
|
GpIOStream *OpenFileNested(PortabilityLayer::VirtualDirectory_t virtualDirectory, char const* const* paths, size_t numPaths, bool writeAccess, GpFileCreationDisposition_t createDisposition) override;
|
|
bool DeleteFile(PortabilityLayer::VirtualDirectory_t virtualDirectory, const char *path, bool &existed) override;
|
|
IGpDirectoryCursor *ScanDirectoryNested(PortabilityLayer::VirtualDirectory_t virtualDirectory, char const* const* paths, size_t numPaths) override;
|
|
|
|
bool ValidateFilePath(const char *path, size_t sz) const override;
|
|
bool ValidateFilePathUnicodeChar(uint32_t ch) const override;
|
|
|
|
void SetDelayCallback(DelayCallback_t delayCallback) override;
|
|
|
|
const wchar_t *GetBasePath() const;
|
|
|
|
static GpFileSystem_Win32 *GetInstance();
|
|
|
|
private:
|
|
bool ResolvePath(PortabilityLayer::VirtualDirectory_t virtualDirectory, char const* const* paths, size_t numPaths, wchar_t *outPath);
|
|
|
|
std::wstring m_prefsDir;
|
|
std::wstring m_scoresDir;
|
|
std::wstring m_packagedDir;
|
|
std::wstring m_housesDir;
|
|
std::wstring m_logsDir;
|
|
std::wstring m_userHousesDir;
|
|
std::wstring m_userSavesDir;
|
|
std::wstring m_resourcesDir;
|
|
std::wstring m_fontCacheDir;
|
|
wchar_t m_executablePath[MAX_PATH];
|
|
|
|
static GpFileSystem_Win32 ms_instance;
|
|
};
|