summaryrefslogtreecommitdiff
path: root/src/core/Directory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Directory.cpp')
-rw-r--r--src/core/Directory.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/core/Directory.cpp b/src/core/Directory.cpp
index d4b4279d..cc4d65d8 100644
--- a/src/core/Directory.cpp
+++ b/src/core/Directory.cpp
@@ -1,5 +1,5 @@
#include "common.h"
-#include "patcher.h"
+
#include "General.h"
#include "FileMgr.h"
#include "Directory.h"
@@ -41,9 +41,23 @@ void
CDirectory::AddItem(const DirectoryInfo &dirinfo)
{
assert(numEntries < maxEntries);
+#ifdef FIX_BUGS
+ // don't add if already exists
+ uint32 offset, size;
+ if(FindItem(dirinfo.name, offset, size))
+ return;
+#endif
entries[numEntries++] = dirinfo;
}
+void
+CDirectory::AddItem(const DirectoryInfo &dirinfo, int32 imgId)
+{
+ DirectoryInfo di = dirinfo;
+ di.offset |= imgId<<24;
+ AddItem(di);
+}
+
bool
CDirectory::FindItem(const char *name, uint32 &offset, uint32 &size)
{
@@ -57,10 +71,3 @@ CDirectory::FindItem(const char *name, uint32 &offset, uint32 &size)
}
return false;
}
-
-STARTPATCHES
- InjectHook(0x473630, &CDirectory::ReadDirFile, PATCH_JUMP);
- InjectHook(0x473690, &CDirectory::WriteDirFile, PATCH_JUMP);
- InjectHook(0x473600, &CDirectory::AddItem, PATCH_JUMP);
- InjectHook(0x4736E0, &CDirectory::FindItem, PATCH_JUMP);
-ENDPATCHES