TSAGE: Bugfixes to allow for drawing message strings that are empty

This commit is contained in:
Paul Gilbert 2011-05-03 22:24:00 +10:00
parent 73396954c9
commit 9f30ffa76f
3 changed files with 9 additions and 8 deletions

View File

@ -484,6 +484,8 @@ static GfxSurface ResizeSurface(GfxSurface &src, int xSize, int ySize, int trans
*/
void GfxSurface::copyFrom(GfxSurface &src, Rect srcBounds, Rect destBounds, Region *priorityRegion) {
GfxSurface srcImage;
if (srcBounds.isEmpty())
return;
if (srcBounds == src.getBounds())
srcImage = src;

View File

@ -404,11 +404,11 @@ byte *TLib::getSubResource(int resNum, int rlbNum, int index, uint *size, bool s
/**
* Retrieves a given message resource, and returns the specified message number
*/
Common::String TLib::getMessage(int resNum, int lineNum, bool suppressErrors) {
byte *msgData = getResource(RES_MESSAGE, resNum, 0);
bool TLib::getMessage(int resNum, int lineNum, Common::String &result, bool suppressErrors) {
byte *msgData = getResource(RES_MESSAGE, resNum, 0, true);
if (!msgData) {
if (suppressErrors)
return Common::String();
return false;
error("Unknown message %d line %d", resNum, lineNum);
}
@ -417,9 +417,9 @@ Common::String TLib::getMessage(int resNum, int lineNum, bool suppressErrors) {
while (lineNum-- > 0)
srcP += strlen(srcP) + 1;
Common::String result(srcP);
result = Common::String(srcP);
_memoryManager.deallocate(msgData);
return result;
return true;
}
/*--------------------------------------------------------------------------*/
@ -489,8 +489,7 @@ Common::String ResourceManager::getMessage(int resNum, int lineNum, bool suppres
Common::String result;
for (uint idx = 0; idx < _libList.size(); ++idx) {
result = _libList[idx]->getMessage(resNum, lineNum, true);
if (!result.empty())
if (_libList[idx]->getMessage(resNum, lineNum, result, true))
return result;
}

View File

@ -159,7 +159,7 @@ public:
byte *getResource(ResourceType resType, uint16 resNum, uint16 rlbNum, bool suppressErrors = false);
bool getPalette(int paletteNum, byte *palData, uint *startNum, uint *numEntries);
byte *getSubResource(int resNum, int rlbNum, int index, uint *size, bool suppressErrors = false);
Common::String getMessage(int resNum, int lineNum, bool suppressErrors = false);
bool getMessage(int resNum, int lineNum, Common::String &result, bool suppressErrors = false);
};
class ResourceManager {