Skip to content

Commit 980caa2

Browse files
feat: add image asset dumper/loader for multiplayer (#8)
1 parent bb6257f commit 980caa2

File tree

5 files changed

+1198
-3
lines changed

5 files changed

+1198
-3
lines changed

iw3-xenon.vcxproj

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
<ProgramDatabaseFile Condition="'$(Configuration)'=='Debug'">$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
5555
<OptimizeReferences Condition="'$(Configuration)'=='Release'">true</OptimizeReferences>
5656
<SetChecksum Condition="'$(Configuration)'=='Release'">true</SetChecksum>
57+
<AdditionalDependencies>d3d9ltcg.lib;xgraphics.lib</AdditionalDependencies>
5758
<AdditionalOptions>/DLL /ENTRY:"_DllMainCRTStartup" /ALIGN:128,4096 %(AdditionalOptions)</AdditionalOptions>
5859
</Link>
5960
<Deploy>

src/filesystem.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
#include <string>
44
#include <direct.h>
55
#include <fstream>
6+
#include <vector>
67

78
#include "xboxkrnl.h"
9+
#include "filesystem.h"
810

911
namespace filesystem
1012
{
@@ -99,4 +101,31 @@ namespace filesystem
99101
file.close();
100102
return content;
101103
}
104+
105+
std::vector<std::string> list_files_in_directory(const std::string &directory)
106+
{
107+
std::vector<std::string> filenames;
108+
WIN32_FIND_DATAA findFileData;
109+
HANDLE hFind = FindFirstFileA((directory + "\\*").c_str(), &findFileData);
110+
111+
if (hFind == INVALID_HANDLE_VALUE)
112+
{
113+
xbox::DbgPrint("ERROR: Directory '%s' does not exist or cannot be accessed.\n", directory.c_str());
114+
return filenames; // Return empty vector
115+
}
116+
117+
do
118+
{
119+
// Ignore "." and ".." and only include regular files (not directories)
120+
if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
121+
{
122+
std::string filename(findFileData.cFileName);
123+
filenames.push_back(filename);
124+
}
125+
} while (FindNextFileA(hFind, &findFileData) != 0);
126+
127+
FindClose(hFind);
128+
129+
return filenames;
130+
}
102131
}

src/filesystem.h

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#include <cstdint>
22
#include <string>
3+
#include <vector>
34

45
namespace filesystem
56
{
67
void create_nested_dirs(const char *path);
78
int write_file_to_disk(const char *file_path, const char *data, size_t data_size);
89
bool file_exists(const std::string &file_path);
910
std::string read_file_to_string(const std::string &file_path);
11+
std::vector<std::string> list_files_in_directory(const std::string &directory);
1012
}

0 commit comments

Comments
 (0)