aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/filesystem.h
diff options
context:
space:
mode:
authorBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-07-21 16:40:01 +0100
committerBobTheBob <32057864+BobTheBob9@users.noreply.github.com>2021-07-21 16:40:01 +0100
commit8564c36b49f5f0451be5036371e421a44425b02e (patch)
treefcd1fbe100e7c8fb9ba7eee8e5923abd5ad0ba27 /NorthstarDedicatedTest/filesystem.h
parent8650a7520baec35765bc837d9313325e0c7631d3 (diff)
downloadNorthstarLauncher-8564c36b49f5f0451be5036371e421a44425b02e.tar.gz
NorthstarLauncher-8564c36b49f5f0451be5036371e421a44425b02e.zip
add some basic filesystem stuff and client/ui script callbacks
Diffstat (limited to 'NorthstarDedicatedTest/filesystem.h')
-rw-r--r--NorthstarDedicatedTest/filesystem.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/filesystem.h b/NorthstarDedicatedTest/filesystem.h
new file mode 100644
index 00000000..597a03ff
--- /dev/null
+++ b/NorthstarDedicatedTest/filesystem.h
@@ -0,0 +1,70 @@
+#pragma once
+#include "sourceinterface.h"
+
+// taken from ttf2sdk
+typedef void* FileHandle_t;
+
+#pragma pack(push,1)
+struct VPKFileEntry
+{
+ char* directory;
+ char* filename;
+ char* extension;
+ unsigned char unknown[0x38];
+};
+#pragma pack(pop)
+
+#pragma pack(push,1)
+struct VPKData
+{
+ unsigned char unknown[5];
+ char path[255];
+ unsigned char unknown2[0x134];
+ int32_t numEntries;
+ unsigned char unknown3[12];
+ VPKFileEntry* entries;
+};
+#pragma pack(pop)
+
+enum SearchPathAdd_t
+{
+ PATH_ADD_TO_HEAD, // First path searched
+ PATH_ADD_TO_TAIL, // Last path searched
+};
+
+class CSearchPath
+{
+public:
+ unsigned char unknown[0x18];
+ const char* debugPath;
+};
+
+class IFileSystem
+{
+public:
+ struct VTable
+ {
+ void* unknown[10];
+ void(*AddSearchPath) (IFileSystem* fileSystem, const char* pPath, const char* pathID, SearchPathAdd_t addType);
+ void* unknown2[84];
+ bool(*ReadFromCache) (IFileSystem* fileSystem, const char* path, void* result);
+ void* unknown3[15];
+ VPKData* (*MountVPK) (IFileSystem* fileSystem, const char* vpkPath);
+ };
+
+ struct VTable2
+ {
+ int(*Read) (IFileSystem::VTable2** fileSystem, void* pOutput, int size, FileHandle_t file);
+ void* unknown[1];
+ FileHandle_t(*Open) (IFileSystem::VTable2** fileSystem, const char* pFileName, const char* pOptions, const char* pathID, int64_t unknown);
+ void(*Close) (IFileSystem* fileSystem, FileHandle_t file);
+ void* unknown2[6];
+ bool(*FileExists)(IFileSystem::VTable2** fileSystem, const char* pFileName, const char* pPathID);
+ };
+
+ VTable* m_vtable;
+ VTable2* m_vtable2;
+};
+
+void InitialiseFilesystem(HMODULE baseAddress);
+extern SourceInterface<IFileSystem>* g_Filesystem; \ No newline at end of file