diff options
Diffstat (limited to 'src/text/Text.h')
-rw-r--r-- | src/text/Text.h | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/src/text/Text.h b/src/text/Text.h index ab6d1809..1174216c 100644 --- a/src/text/Text.h +++ b/src/text/Text.h @@ -26,14 +26,14 @@ public: CKeyArray(void) : entries(nil), numEntries(0) {} ~CKeyArray(void) { Unload(); } - void Load(size_t length, uint8 *data, ssize_t *offset); + void Load(size_t length, int file, size_t *offset); void Unload(void); void Update(wchar *chars); CKeyEntry *BinarySearch(const char *key, CKeyEntry *entries, int16 low, int16 high); #if defined (FIX_BUGS) || defined(FIX_BUGS_64) - wchar *Search(const char *key, wchar *data); + wchar *Search(const char *key, wchar *data, uint8 *result); #else - wchar *Search(const char *key); + wchar *Search(const char *key, uint8* result); #endif }; @@ -45,15 +45,45 @@ public: CData(void) : chars(nil), numChars(0) {} ~CData(void) { Unload(); } - void Load(size_t length, uint8 *data, ssize_t *offset); + void Load(size_t length, int file, size_t* offset); void Unload(void); }; +class CMissionTextOffsets +{ +public: + struct Entry + { + char szMissionName[8]; + uint32 offset; + }; + + enum {MAX_MISSION_TEXTS = 90}; // beware that LCS has more + + Entry data[MAX_MISSION_TEXTS]; + uint16 size; // You can make this size_t if you want to exceed 32-bit boundaries, everything else should be ready. + + CMissionTextOffsets(void) : size(0) {} + void Load(size_t table_size, int file, size_t* bytes_read, int); +}; + +struct ChunkHeader +{ + char magic[4]; + int size; +}; + class CText { CKeyArray keyArray; CData data; + CKeyArray mission_keyArray; + CData mission_data; char encoding; + bool bHasMissionTextOffsets; + bool bIsMissionTextLoaded; + char szMissionTableName[8]; + CMissionTextOffsets MissionTextOffsets; public: CText(void); void Load(void); @@ -61,6 +91,9 @@ public: wchar *Get(const char *key); wchar GetUpperCase(wchar c); void UpperCase(wchar *s); + void GetNameOfLoadedMissionText(char *outName); + void ReadChunkHeader(ChunkHeader *buf, int32 file, size_t *bytes_read); + void LoadMissionText(char *MissionTableName); }; extern CText TheText; |