diff options
-rw-r--r-- | engines/hopkins/font.cpp | 14 | ||||
-rw-r--r-- | engines/hopkins/font.h | 22 | ||||
-rw-r--r-- | engines/hopkins/objects.cpp | 86 |
3 files changed, 61 insertions, 61 deletions
diff --git a/engines/hopkins/font.cpp b/engines/hopkins/font.cpp index f8d18a24c1..9049f82eee 100644 --- a/engines/hopkins/font.cpp +++ b/engines/hopkins/font.cpp @@ -42,11 +42,11 @@ void FontManager::clearAll() { Txt[idx].field3FC = 0; Txt[idx].field3FE = 0; Txt[idx].field400 = 0; - Txt[idx].field404 = 0; - Txt[idx].field406 = 0; + Txt[idx].width = 0; + Txt[idx].height = 0; Txt[idx].field408 = 0; - ListeTxt[idx].field0 = 0; + ListeTxt[idx].enabled = false; } } @@ -90,15 +90,15 @@ void FontManager::OPTI_COUL_TXT(int idx1, int idx2, int idx3, int idx4) { COUL_TXT(idx4, 253); } -void FontManager::DOS_TEXT(int idx, int a2, const Common::String &filename, int a4, int a5, int a6, int a7, int a8, int a9, int a10) { +void FontManager::DOS_TEXT(int idx, int a2, const Common::String &filename, int xp, int yp, int a6, int a7, int a8, int a9, int a10) { if ((idx - 5) > 11) error("Attempted to display text > MAX_TEXT."); TxtItem &txt = Txt[idx - 5]; txt.field0 = 0; - txt.field4 = filename; - txt.field8 = a4; - txt.fieldA = a5; + txt.filename = filename; + txt.xp = xp; + txt.yp = yp; txt.fieldC = a2; txt.fieldE = a6; txt.field10 = a7; diff --git a/engines/hopkins/font.h b/engines/hopkins/font.h index 89f74ca673..653757a9e1 100644 --- a/engines/hopkins/font.h +++ b/engines/hopkins/font.h @@ -33,9 +33,9 @@ class HopkinsEngine; struct TxtItem { int field0; int field2; - Common::String field4; - int field8; - int fieldA; + Common::String filename; + int16 xp; + int16 yp; int fieldC; int fieldE; int field10; @@ -44,18 +44,18 @@ struct TxtItem { int field3FC; int field3FE; byte *field400; - int field404; - int field406; + int16 width; + int16 height; int field408; int field40A; }; struct ListeTxtItem { - int field0; - int x1; - int y1; - int x2; - int y2; + bool enabled; + int16 xp; + int16 yp; + int16 width; + int16 height; }; @@ -78,7 +78,7 @@ public: void TEXTE_OFF(int idx); void COUL_TXT(int idx, byte colByte); void OPTI_COUL_TXT(int idx1, int idx2, int idx3, int idx4); - void DOS_TEXT(int idx, int a2, const Common::String &filename, int a4, int a5, int a6, int a7, int a8, int a9, int a10); + void DOS_TEXT(int idx, int a2, const Common::String &filename, int xp, int yp, int a6, int a7, int a8, int a9, int a10); void BOITE(int idx, int a2, const Common::String &filename, int xp, int yp); void TEXT_NOW1(int xp, int yp, const Common::String &message, int transColour); }; diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp index 908dc4ec95..d76352ac0e 100644 --- a/engines/hopkins/objects.cpp +++ b/engines/hopkins/objects.cpp @@ -332,13 +332,13 @@ void ObjectsManager::AFF_SPRITES() { int v19; int v20; int v21; - int v23; - int v24; + int y1_1; + int y1_2; int v25; int v26; int v27; - int v28; - int v29; + int x1_1; + int x1_2; int v30; int v31; int v32; @@ -354,17 +354,17 @@ void ObjectsManager::AFF_SPRITES() { v30 = 0; do { v0 = v30; - if (_vm->_fontManager.ListeTxt[v0].field0 && _vm->_fontManager.Txt[v30].field3FC != 2) { - v1 = _vm->_fontManager.ListeTxt[v30].x1; - v28 = v1 - 2; + if (_vm->_fontManager.ListeTxt[v0].enabled && _vm->_fontManager.Txt[v30].field3FC != 2) { + v1 = _vm->_fontManager.ListeTxt[v30].xp; + x1_1 = v1 - 2; if ((int16)(v1 - 2) < _vm->_graphicsManager.min_x) - v28 = _vm->_graphicsManager.min_x; - v2 = _vm->_fontManager.ListeTxt[v30].y1; - v23 = v2 - 2; + x1_1 = _vm->_graphicsManager.min_x; + v2 = _vm->_fontManager.ListeTxt[v30].yp; + y1_1 = v2 - 2; if ((int16)(v2 - 2) < _vm->_graphicsManager.min_y) - v23 = _vm->_graphicsManager.min_y; + y1_1 = _vm->_graphicsManager.min_y; destX = v1 - 2; if (destX < _vm->_graphicsManager.min_x) destX = _vm->_graphicsManager.min_x; @@ -372,11 +372,11 @@ void ObjectsManager::AFF_SPRITES() { if (destY < _vm->_graphicsManager.min_y) destY = _vm->_graphicsManager.min_y; - _vm->_graphicsManager.SCOPY(_vm->_graphicsManager.VESA_SCREEN, v28, v23, - _vm->_fontManager.ListeTxt[v30].x2 + 4, _vm->_fontManager.ListeTxt[destX].y2 + 4, + _vm->_graphicsManager.SCOPY(_vm->_graphicsManager.VESA_SCREEN, x1_1, y1_1, + _vm->_fontManager.ListeTxt[v30].width + 4, _vm->_fontManager.ListeTxt[destX].height + 4, _vm->_graphicsManager.VESA_BUFFER, destX, destY); - _vm->_fontManager.ListeTxt[v0].field0 = 0; + _vm->_fontManager.ListeTxt[v0].enabled = false; } ++v30; } while (v30 <= 10); @@ -387,13 +387,13 @@ void ObjectsManager::AFF_SPRITES() { v5 = v31; if (_vm->_globals.Liste[v5].field0) { v6 = _vm->_globals.Liste[v5].field2; - v29 = v6 - 2; + x1_2 = v6 - 2; if ((int16)(v6 - 2) < _vm->_graphicsManager.min_x) - v29 = _vm->_graphicsManager.min_x; + x1_2 = _vm->_graphicsManager.min_x; v7 = _vm->_globals.Liste[v31].field4; - v24 = v7 - 2; + y1_2 = v7 - 2; if ((int16)(v7 - 2) < _vm->_graphicsManager.min_y) - v24 = _vm->_graphicsManager.min_y; + y1_2 = _vm->_graphicsManager.min_y; v8 = v6 - 2; if (v8 < _vm->_graphicsManager.min_x) v8 = _vm->_graphicsManager.min_x; @@ -401,7 +401,7 @@ void ObjectsManager::AFF_SPRITES() { if (v9 < _vm->_graphicsManager.min_y) v9 = _vm->_graphicsManager.min_y; - _vm->_graphicsManager.SCOPY(_vm->_graphicsManager.VESA_SCREEN, v29, v24, + _vm->_graphicsManager.SCOPY(_vm->_graphicsManager.VESA_SCREEN, x1_2, y1_2, _vm->_globals.Liste[v31].width + 4, _vm->_globals.Liste[v31].height + 4, _vm->_graphicsManager.VESA_BUFFER, v8, v9); _vm->_globals.Liste[v5].field0 = 0; @@ -541,41 +541,41 @@ void ObjectsManager::AFF_SPRITES() { if (_vm->_fontManager.Txt[v16].field0 == 1) { if ((uint16)(_vm->_fontManager.Txt[v16].field3FC - 2) > 1) _vm->_fontManager.BOITE(v38, - _vm->_fontManager.Txt[v16].fieldC, _vm->_fontManager.Txt[v16].field4, - _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v16].field8, _vm->_fontManager.Txt[v16].fieldA); + _vm->_fontManager.Txt[v16].fieldC, _vm->_fontManager.Txt[v16].filename, + _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v16].xp, _vm->_fontManager.Txt[v16].yp); else _vm->_fontManager.BOITE( v38, _vm->_fontManager.Txt[v16].fieldC, - _vm->_fontManager.Txt[v16].field4, - _vm->_fontManager.Txt[v16].field8, - _vm->_fontManager.Txt[v16].fieldA); - _vm->_fontManager.ListeTxt[v38].field0 = 1; + _vm->_fontManager.Txt[v16].filename, + _vm->_fontManager.Txt[v16].xp, + _vm->_fontManager.Txt[v16].yp); + _vm->_fontManager.ListeTxt[v38].enabled = true; v17 = v38; if ((uint16)(_vm->_fontManager.Txt[v17].field3FC - 2) > 1) - _vm->_fontManager.ListeTxt[v38].x1 = _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v17].field8; + _vm->_fontManager.ListeTxt[v38].xp = _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v17].xp; else - _vm->_fontManager.ListeTxt[v38].x1 = _vm->_fontManager.Txt[v17].field8; + _vm->_fontManager.ListeTxt[v38].xp = _vm->_fontManager.Txt[v17].xp; v18 = v38; v19 = v38; - _vm->_fontManager.ListeTxt[v18].y1 = _vm->_fontManager.Txt[v19].fieldA; - _vm->_fontManager.ListeTxt[v18].x2 = _vm->_fontManager.Txt[v19].field404; - _vm->_fontManager.ListeTxt[v18].y2 = _vm->_fontManager.Txt[v19].field406; - - if (_vm->_fontManager.ListeTxt[v38].x1 < _vm->_graphicsManager.min_x) - _vm->_fontManager.ListeTxt[v38].x1 = _vm->_graphicsManager.min_x - 1; - if (_vm->_fontManager.ListeTxt[v38].y1 < _vm->_graphicsManager.min_y) - _vm->_fontManager.ListeTxt[v38].y1 = _vm->_graphicsManager.min_y - 1; - v20 = _vm->_fontManager.ListeTxt[v38].x1; - if (_vm->_fontManager.ListeTxt[v38].x2 + v20 > _vm->_graphicsManager.max_x) - _vm->_fontManager.ListeTxt[v38].x2 = _vm->_graphicsManager.max_x - v20; - v21 = _vm->_fontManager.ListeTxt[v38].y1; - if (_vm->_fontManager.ListeTxt[v38].y2 + v21 > _vm->_graphicsManager.max_y) - _vm->_fontManager.ListeTxt[v38].y2 = _vm->_graphicsManager.max_y - v21; - if (_vm->_fontManager.ListeTxt[v38].x2 <= 0 || _vm->_fontManager.ListeTxt[v38].y2 <= 0) - _vm->_fontManager.ListeTxt[v18].field0 = 0; + _vm->_fontManager.ListeTxt[v18].yp = _vm->_fontManager.Txt[v19].yp; + _vm->_fontManager.ListeTxt[v18].width = _vm->_fontManager.Txt[v19].width; + _vm->_fontManager.ListeTxt[v18].height = _vm->_fontManager.Txt[v19].height; + + if (_vm->_fontManager.ListeTxt[v38].xp < _vm->_graphicsManager.min_x) + _vm->_fontManager.ListeTxt[v38].xp = _vm->_graphicsManager.min_x - 1; + if (_vm->_fontManager.ListeTxt[v38].yp < _vm->_graphicsManager.min_y) + _vm->_fontManager.ListeTxt[v38].yp = _vm->_graphicsManager.min_y - 1; + v20 = _vm->_fontManager.ListeTxt[v38].xp; + if (_vm->_fontManager.ListeTxt[v38].width + v20 > _vm->_graphicsManager.max_x) + _vm->_fontManager.ListeTxt[v38].width = _vm->_graphicsManager.max_x - v20; + v21 = _vm->_fontManager.ListeTxt[v38].yp; + if (_vm->_fontManager.ListeTxt[v38].height + v21 > _vm->_graphicsManager.max_y) + _vm->_fontManager.ListeTxt[v38].height = _vm->_graphicsManager.max_y - v21; + if (_vm->_fontManager.ListeTxt[v38].width <= 0 || _vm->_fontManager.ListeTxt[v38].height <= 0) + _vm->_fontManager.ListeTxt[v18].enabled = false; } ++v38; } while (v38 <= 10); |