private ByteAccess LockText(uint textId, Language lang)
{
var addr = _resMan.OpenFetchRes(_textList[(int)(textId / ObjectMan.ITM_PER_SEC), (int)lang]);
if (addr == null)
{
return(null);
}
var addrOff = Header.Size;
// TODO:
//if ((textId & ITM_ID) >= _resMan->readUint32(addr))
//{
// // Workaround for missing sentences in some langages in the demo.
// switch (textId)
// {
// case 8455194:
// return const_cast<char*>(_translationId8455194[lang]);
// case 8455195:
// return const_cast<char*>(_translationId8455195[lang]);
// case 8455196:
// return const_cast<char*>(_translationId8455196[lang]);
// case 8455197:
// return const_cast<char*>(_translationId8455197[lang]);
// case 8455198:
// return const_cast<char*>(_translationId8455198[lang]);
// case 8455199:
// return const_cast<char*>(_translationId8455199[lang]);
// case 8455200:
// return const_cast<char*>(_translationId8455200[lang]);
// case 8455201:
// return const_cast<char*>(_translationId8455201[lang]);
// case 8455202:
// return const_cast<char*>(_translationId8455202[lang]);
// case 8455203:
// return const_cast<char*>(_translationId8455203[lang]);
// case 8455204:
// return const_cast<char*>(_translationId8455204[lang]);
// case 8455205:
// return const_cast<char*>(_translationId8455205[lang]);
// case 6488080:
// return const_cast<char*>(_translationId6488080[lang]);
// case 6488081:
// return const_cast<char*>(_translationId6488081[lang]);
// case 6488082:
// return const_cast<char*>(_translationId6488082[lang]);
// case 6488083:
// return const_cast<char*>(_translationId6488083[lang]);
// }
// warning("ObjectMan::lockText(%d): only %d texts in file", textId & ITM_ID, _resMan->readUint32(addr));
// return NULL;
//}
uint offset = _resMan.ReadUInt32(addr.ToUInt32((int)(addrOff + ((textId & ITM_ID) + 1) * 4)));
if (offset == 0)
{
// TODO: Workaround bug for missing sentence in some langages in Syria (see bug #1977094).
// We use the hardcoded text in this case.
//if (textId == 2950145)
// return const_cast<char*>(_translationId2950145[lang]);
// TODO: warning("ObjectMan::lockText(%d): text number has no text lines", textId);
return(null);
}
return(new ByteAccess(addr, (int)(addrOff + offset)));
}