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))); }