mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-14 02:27:21 -07:00
Implemented PAL language support.
This commit is contained in:
parent
c66c874549
commit
bd5a563dae
7 changed files with 113 additions and 127 deletions
|
@ -12,6 +12,7 @@ REGISTER_ZFILENODE(Text, ZText);
|
|||
ZText::ZText(ZFile* nParent) : ZResource(nParent)
|
||||
{
|
||||
RegisterRequiredAttribute("CodeOffset");
|
||||
RegisterOptionalAttribute("LangOffset", "0");
|
||||
}
|
||||
|
||||
void ZText::ParseRawData()
|
||||
|
@ -20,6 +21,16 @@ void ZText::ParseRawData()
|
|||
|
||||
const auto& rawData = parent->GetRawData();
|
||||
uint32_t currentPtr = StringHelper::StrToL(registeredAttributes.at("CodeOffset").value, 16);
|
||||
uint32_t langPtr = currentPtr;
|
||||
bool isPalLang = false;
|
||||
|
||||
if (StringHelper::StrToL(registeredAttributes.at("LangOffset").value, 16) != 0)
|
||||
{
|
||||
langPtr = StringHelper::StrToL(registeredAttributes.at("LangOffset").value, 16);
|
||||
|
||||
if (langPtr != currentPtr)
|
||||
isPalLang = true;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> codeData;
|
||||
|
||||
|
@ -34,8 +45,18 @@ void ZText::ParseRawData()
|
|||
msgEntry.id = BitConverter::ToInt16BE(codeData, currentPtr + 0);
|
||||
msgEntry.textboxType = (codeData[currentPtr + 2] & 0xF0) >> 4;
|
||||
msgEntry.textboxYPos = (codeData[currentPtr + 2] & 0x0F);
|
||||
msgEntry.segmentId = (codeData[currentPtr + 4]);
|
||||
msgEntry.msgOffset = BitConverter::ToInt32BE(codeData, currentPtr + 4) & 0x00FFFFFF;
|
||||
|
||||
if (isPalLang)
|
||||
{
|
||||
msgEntry.segmentId = (codeData[langPtr + 0]);
|
||||
msgEntry.msgOffset = BitConverter::ToInt32BE(codeData, langPtr + 0) & 0x00FFFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
msgEntry.segmentId = (codeData[langPtr + 4]);
|
||||
msgEntry.msgOffset = BitConverter::ToInt32BE(codeData, langPtr + 4) & 0x00FFFFFF;
|
||||
}
|
||||
|
||||
uint32_t msgPtr = msgEntry.msgOffset;
|
||||
|
||||
unsigned char c = rawData[msgPtr];
|
||||
|
@ -82,6 +103,11 @@ void ZText::ParseRawData()
|
|||
break;
|
||||
|
||||
currentPtr += 8;
|
||||
|
||||
if (isPalLang)
|
||||
langPtr += 4;
|
||||
else
|
||||
langPtr += 8;
|
||||
}
|
||||
|
||||
int bp2 = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue