aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/hopkins/font.cpp14
-rw-r--r--engines/hopkins/font.h22
-rw-r--r--engines/hopkins/objects.cpp86
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);