diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2020-05-16 13:01:58 +0200 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2020-05-16 13:01:58 +0200 |
commit | 7b89baceaa12440ca88ea6f60fa6c0cad8f337ba (patch) | |
tree | 7a936045f408d39d3ce19fd9b1abc0bc01fecb8d /src/text | |
parent | new horn (diff) | |
parent | fixed CText to be 64 bit compatible (diff) | |
download | re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar.gz re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar.bz2 re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar.lz re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar.xz re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.tar.zst re3-7b89baceaa12440ca88ea6f60fa6c0cad8f337ba.zip |
Diffstat (limited to '')
-rw-r--r-- | src/text/Text.cpp | 16 | ||||
-rw-r--r-- | src/text/Text.h | 8 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/text/Text.cpp b/src/text/Text.cpp index 549f68d9..1e58fcd1 100644 --- a/src/text/Text.cpp +++ b/src/text/Text.cpp @@ -97,7 +97,11 @@ CText::Unload(void) wchar* CText::Get(const char *key) { +#ifdef FIX_BUGS + return keyArray.Search(key, data.chars); +#else return keyArray.Search(key); +#endif } wchar UpperCaseTable[128] = { @@ -196,9 +200,11 @@ CKeyArray::Unload(void) void CKeyArray::Update(wchar *chars) { +#ifndef FIX_BUGS int i; for(i = 0; i < numEntries; i++) entries[i].value = (wchar*)((uint8*)chars + (uintptr)entries[i].value); +#endif } CKeyEntry* @@ -222,15 +228,25 @@ CKeyArray::BinarySearch(const char *key, CKeyEntry *entries, int16 low, int16 hi } wchar* +#ifdef FIX_BUGS +CKeyArray::Search(const char *key, wchar *data) +#else CKeyArray::Search(const char *key) +#endif { CKeyEntry *found; char errstr[25]; int i; +#ifdef FIX_BUGS + found = BinarySearch(key, entries, 0, numEntries-1); + if(found) + return (wchar*)((uint8*)data + found->valueOffset); +#else found = BinarySearch(key, entries, 0, numEntries-1); if(found) return found->value; +#endif sprintf(errstr, "%s missing", key); for(i = 0; i < 25; i++) WideErrorString[i] = errstr[i]; diff --git a/src/text/Text.h b/src/text/Text.h index 4255e2a5..18a904bc 100644 --- a/src/text/Text.h +++ b/src/text/Text.h @@ -9,7 +9,11 @@ void TextCopy(wchar *dst, const wchar *src); struct CKeyEntry { +#ifdef FIX_BUGS + uint32 valueOffset; +#else wchar *value; +#endif char key[8]; }; @@ -28,7 +32,11 @@ public: void Unload(void); void Update(wchar *chars); CKeyEntry *BinarySearch(const char *key, CKeyEntry *entries, int16 low, int16 high); +#ifdef FIX_BUGS + wchar *Search(const char *key, wchar *data); +#else wchar *Search(const char *key); +#endif }; class CData |