aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins/objects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hopkins/objects.cpp')
-rw-r--r--engines/hopkins/objects.cpp114
1 files changed, 52 insertions, 62 deletions
diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp
index 80fb61b692..ce8e870936 100644
--- a/engines/hopkins/objects.cpp
+++ b/engines/hopkins/objects.cpp
@@ -329,10 +329,7 @@ void ObjectsManager::AFF_SPRITES() {
int v13;
int v14;
int v15;
- int v16;
int v17;
- int v18;
- int v19;
int v20;
int v21;
int y1_1;
@@ -350,7 +347,6 @@ void ObjectsManager::AFF_SPRITES() {
int v35;
int v36;
int v37;
- int v38;
uint16 arr[50];
_vm->_globals.NBTRI = 0;
@@ -538,50 +534,46 @@ void ObjectsManager::AFF_SPRITES() {
_vm->_graphicsManager.Ajoute_Segment_Vesa(_vm->_eventsManager.start_x + 164, 107, _vm->_eventsManager.start_x + 498, 320);
}
- v38 = 0;
- do {
- v16 = v38;
- 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].filename,
- _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v16].xp, _vm->_fontManager.Txt[v16].yp);
+ for (int idx = 0; idx <= 10; ++idx) {
+ if (_vm->_fontManager.Txt[idx].field0 == 1) {
+ if ((uint16)(_vm->_fontManager.Txt[idx].field3FC - 2) > 1)
+ _vm->_fontManager.BOITE(idx,
+ _vm->_fontManager.Txt[idx].fieldC, _vm->_fontManager.Txt[idx].filename,
+ _vm->_eventsManager.start_x + _vm->_fontManager.Txt[idx].xp, _vm->_fontManager.Txt[idx].yp);
else
_vm->_fontManager.BOITE(
- v38,
- _vm->_fontManager.Txt[v16].fieldC,
- _vm->_fontManager.Txt[v16].filename,
- _vm->_fontManager.Txt[v16].xp,
- _vm->_fontManager.Txt[v16].yp);
- _vm->_fontManager.ListeTxt[v38].enabled = true;
+ idx,
+ _vm->_fontManager.Txt[idx].fieldC,
+ _vm->_fontManager.Txt[idx].filename,
+ _vm->_fontManager.Txt[idx].xp,
+ _vm->_fontManager.Txt[idx].yp);
+ _vm->_fontManager.ListeTxt[idx].enabled = true;
- v17 = v38;
+ v17 = idx;
if ((uint16)(_vm->_fontManager.Txt[v17].field3FC - 2) > 1)
- _vm->_fontManager.ListeTxt[v38].xp = _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v17].xp;
+ _vm->_fontManager.ListeTxt[idx].xp = _vm->_eventsManager.start_x + _vm->_fontManager.Txt[v17].xp;
else
- _vm->_fontManager.ListeTxt[v38].xp = _vm->_fontManager.Txt[v17].xp;
+ _vm->_fontManager.ListeTxt[idx].xp = _vm->_fontManager.Txt[v17].xp;
- v18 = v38;
- v19 = v38;
- _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);
+ _vm->_fontManager.ListeTxt[idx].yp = _vm->_fontManager.Txt[idx].yp;
+ _vm->_fontManager.ListeTxt[idx].width = _vm->_fontManager.Txt[idx].width;
+ _vm->_fontManager.ListeTxt[idx].height = _vm->_fontManager.Txt[idx].height;
+
+ if (_vm->_fontManager.ListeTxt[idx].xp < _vm->_graphicsManager.min_x)
+ _vm->_fontManager.ListeTxt[idx].xp = _vm->_graphicsManager.min_x - 1;
+ if (_vm->_fontManager.ListeTxt[idx].yp < _vm->_graphicsManager.min_y)
+ _vm->_fontManager.ListeTxt[idx].yp = _vm->_graphicsManager.min_y - 1;
+
+ v20 = _vm->_fontManager.ListeTxt[idx].xp;
+ if (_vm->_fontManager.ListeTxt[idx].width + v20 > _vm->_graphicsManager.max_x)
+ _vm->_fontManager.ListeTxt[idx].width = _vm->_graphicsManager.max_x - v20;
+ v21 = _vm->_fontManager.ListeTxt[idx].yp;
+ if (_vm->_fontManager.ListeTxt[idx].height + v21 > _vm->_graphicsManager.max_y)
+ _vm->_fontManager.ListeTxt[idx].height = _vm->_graphicsManager.max_y - v21;
+ if (_vm->_fontManager.ListeTxt[idx].width <= 0 || _vm->_fontManager.ListeTxt[idx].height <= 0)
+ _vm->_fontManager.ListeTxt[idx].enabled = false;
+ }
+ }
INVENT_ANIM();
}
@@ -2611,10 +2603,9 @@ void ObjectsManager::CHARGE_ZONE(const Common::String &file) {
}
void ObjectsManager::CARRE_ZONE() {
- byte *v3;
+ int16 *dataP;
int v4;
int v5;
- byte *v6;
int v7;
int v8;
int v10;
@@ -2635,8 +2626,8 @@ void ObjectsManager::CARRE_ZONE() {
}
for (int idx = 0; idx < 400; ++idx) {
- v3 = _vm->_linesManager.LigneZone[idx].field4;
- if (v3 != g_PTRNUL) {
+ dataP = _vm->_linesManager.LigneZone[idx].zoneData;
+ if (dataP != (int16 *)g_PTRNUL) {
v4 = _vm->_linesManager.LigneZone[idx].field2;
_vm->_globals.CarreZone[v4].field0 = 1;
if (_vm->_globals.CarreZone[v4].fieldC < idx)
@@ -2645,13 +2636,12 @@ void ObjectsManager::CARRE_ZONE() {
_vm->_globals.CarreZone[v4].fieldA = idx;
v13 = 0;
- v12 = _vm->_linesManager.LigneZone[idx].field0;
+ v12 = _vm->_linesManager.LigneZone[idx].count;
if (v12 > 0) {
do {
- v5 = (int16)READ_LE_UINT16(v3);
- v6 = v3 + 2;
- v11 = (int16)READ_LE_UINT16(v6);
- v3 = v6 + 2;
+ v5 = *dataP++;
+ v11 = *dataP++;
+
if (_vm->_globals.CarreZone[v4].field2 >= v5)
_vm->_globals.CarreZone[v4].field2 = v5;
if (_vm->_globals.CarreZone[v4].field4 <= v5)
@@ -7874,13 +7864,13 @@ int ObjectsManager::colision(int a1, int a2) {
int v9 = v3 + 1;
do {
- byte *srcP = _vm->_linesManager.LigneZone[v8].field4;
- if (srcP != g_PTRNUL) {
+ int16 *srcP = _vm->_linesManager.LigneZone[v8].zoneData;
+ if (srcP != (int16 *)g_PTRNUL) {
bool flag = true;
- int v11 = (int16)READ_LE_UINT16(srcP + _vm->_linesManager.LigneZone[v8].field0 * 2);
- int dataV2 = (int16)READ_LE_UINT16(srcP + _vm->_linesManager.LigneZone[v8].field0 * 2 + 2);
- int v12 = (int16)READ_LE_UINT16(srcP + _vm->_linesManager.LigneZone[v8].field0 * 4 - 4);
- int v13 = (int16)READ_LE_UINT16(srcP + _vm->_linesManager.LigneZone[v8].field0 * 4 - 2);
+ int v11 = *(srcP + _vm->_linesManager.LigneZone[v8].count);
+ int dataV2 = *(srcP + _vm->_linesManager.LigneZone[v8].count + 1);
+ int v12 = *(srcP + _vm->_linesManager.LigneZone[v8].count * 2 - 2);
+ int v13 = *(srcP + _vm->_linesManager.LigneZone[v8].count * 2 - 1);
int v10 = v13;
if (v11 < v12 && v4 >= v11 && v5 > v13)
@@ -7894,11 +7884,11 @@ int ObjectsManager::colision(int a1, int a2) {
if (!flag) {
- if (v11 < _vm->_linesManager.LigneZone[v8].field0) {
- for (; v11 < _vm->_linesManager.LigneZone[v8].field0; ++idx) {
- int v11 = (int16)READ_LE_UINT16(srcP);
- int v12 = (int16)READ_LE_UINT16(srcP + 2);
- srcP += 4;
+ if (v11 < _vm->_linesManager.LigneZone[v8].count) {
+ for (; v11 < _vm->_linesManager.LigneZone[v8].count; ++idx) {
+ int v11 = *srcP;
+ int v12 = *(srcP + 1);
+ srcP += 2;
if ((v2 == v11 || v9 == v11) && a2 == v12)
return _vm->_linesManager.LigneZone[v8].field2;