diff options
author | Travis Howell | 2008-03-26 01:57:26 +0000 |
---|---|---|
committer | Travis Howell | 2008-03-26 01:57:26 +0000 |
commit | defe50eada0f5b7d6d7d8c2551e633450d0883a9 (patch) | |
tree | 1736557470fa725806046b015a24dddf38df81b0 | |
parent | 171a4d1bdb86df0debecf32244014ab6d858a6a0 (diff) | |
download | scummvm-rg350-defe50eada0f5b7d6d7d8c2551e633450d0883a9.tar.gz scummvm-rg350-defe50eada0f5b7d6d7d8c2551e633450d0883a9.tar.bz2 scummvm-rg350-defe50eada0f5b7d6d7d8c2551e633450d0883a9.zip |
Always ignore invalid characters, when using charset data.
svn-id: r31236
-rw-r--r-- | engines/agos/charset-fontdata.cpp | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/engines/agos/charset-fontdata.cpp b/engines/agos/charset-fontdata.cpp index 6d281cf914..bdcf07eb01 100644 --- a/engines/agos/charset-fontdata.cpp +++ b/engines/agos/charset-fontdata.cpp @@ -1580,41 +1580,49 @@ void AGOSEngine::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { if (getGameType() == GType_FF || getGameType() == GType_PP) { dst = getBackGround() + y * _dxSurfacePitch + x + window->textColumnOffset; h = 13; - w = feebleFontSize[chr - 0x20]; + w = feebleFontSize[chr - 32]; - src = feeble_windowFont + (chr - 0x20) * 13; + // Ignore invalid characters + if (chr - 32 > 195) + return; + + src = feeble_windowFont + (chr - 32) * 13; } else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) { dst = (byte *)screen->pixels + y * _dxSurfacePitch + x + window->textColumnOffset; h = 8; w = 6; + // Ignore invalid characters + if (chr - 32 > 98) + return; + switch (_language) { case Common::CZ_CZE: - src = czech_simonFont + (chr - 0x20) * 8; + src = czech_simonFont + (chr - 32) * 8; break; case Common::RU_RUS: - src = russian_simonFont + (chr - 0x20) * 8; + src = russian_simonFont + (chr - 32) * 8; break; case Common::PL_POL: - src = polish_simonFont + (chr - 0x20) * 8; + src = polish_simonFont + (chr - 32) * 8; break; case Common::HB_ISR: - src = hebrew_simonFont + (chr - 0x20) * 8; + src = hebrew_simonFont + (chr - 32) * 8; break; case Common::ES_ESP: - src = spanish_simonFont + (chr - 0x20) * 8; + src = spanish_simonFont + (chr - 32) * 8; break; case Common::IT_ITA: - src = italian_simonFont + (chr - 0x20) * 8; + src = italian_simonFont + (chr - 32) * 8; break; case Common::FR_FRA: - src = french_simonFont + (chr - 0x20) * 8; + src = french_simonFont + (chr - 32) * 8; break; case Common::DE_DEU: - src = german_simonFont + (chr - 0x20) * 8; + src = german_simonFont + (chr - 32) * 8; break; case Common::EN_ANY: - src = english_simonFont + (chr - 0x20) * 8; + src = english_simonFont + (chr - 32) * 8; break; default: error("windowDrawChar: Unknown language %d\n", _language); @@ -1624,22 +1632,26 @@ void AGOSEngine::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { h = 8; w = 6; + // Ignore invalid characters + if (chr - 32 > 98) + return; + // TODO: Add font tables for German switch (_language) { case Common::ES_ESP: - src = spanish_commonFont + (chr - 0x20) * 8; + src = spanish_commonFont + (chr - 32) * 8; break; case Common::IT_ITA: - src = italian_commonFont + (chr - 0x20) * 8; + src = italian_commonFont + (chr - 32) * 8; break; case Common::FR_FRA: - src = french_commonFont + (chr - 0x20) * 8; + src = french_commonFont + (chr - 32) * 8; break; case Common::DE_DEU: - src = english_commonFont + (chr - 0x20) * 8; + src = english_commonFont + (chr - 32) * 8; break; case Common::EN_ANY: - src = english_commonFont + (chr - 0x20) * 8; + src = english_commonFont + (chr - 32) * 8; break; default: error("windowDrawChar: Unknown language %d\n", _language); |