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.cpp113
1 files changed, 52 insertions, 61 deletions
diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp
index 6953230adf..3877b03017 100644
--- a/engines/hopkins/objects.cpp
+++ b/engines/hopkins/objects.cpp
@@ -2867,22 +2867,16 @@ int16 *ObjectsManager::PARC_VOITURE(int x1, int y1, int x2, int y2) {
int v27;
int v28;
int v29;
- int v32;
- int16 *v33;
int v34;
int v35;
int16 *v37;
- int v39;
int16 *v41;
int16 *v45;
- int v47;
int v48;
int16 *v50;
- int v52;
int16 *v54;
int16 *v58;
int v66;
- int v67;
int v68 = 0;
int v69 = 0;
int j;
@@ -2894,7 +2888,7 @@ int16 *ObjectsManager::PARC_VOITURE(int x1, int y1, int x2, int y2) {
int clipX2 = x2;
int clipY2 = y2;
- v67 = 0;
+ int superRouteIdx = 0;
if (x2 <= 14)
clipX2 = 15;
if (y2 <= 14)
@@ -2993,20 +2987,20 @@ int16 *ObjectsManager::PARC_VOITURE(int x1, int y1, int x2, int y2) {
v29 = _vm->_globals.essai2[v27 + 1];
v66 = _vm->_globals.essai2[v27 + 2];
v27 += 4;
+
if (_vm->_linesManager.checkCollisionLine(v28, v29, &arrDataIdx[1], &arrLineIdx[1], 0, _lastLine))
break;
- v32 = v67;
- _vm->_globals.super_parcours[v32] = v28;
- _vm->_globals.super_parcours[v32 + 1] = v29;
- _vm->_globals.super_parcours[v32 + 2] = v66;
- _vm->_globals.super_parcours[v32 + 3] = 0;
-
- v33 = _vm->_globals.essai0;
- _vm->_globals.essai0[v32] = v28;
- v33[v32 + 1] = v29;
- v33[v32 + 2] = v66;
- v33[v32 + 3] = 0;
- v67 += 4;
+
+ _vm->_globals.super_parcours[superRouteIdx] = v28;
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v29;
+ _vm->_globals.super_parcours[superRouteIdx + 2] = v66;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+
+ _vm->_globals.essai0[superRouteIdx] = v28;
+ _vm->_globals.essai0[superRouteIdx + 1] = v29;
+ _vm->_globals.essai0[superRouteIdx + 2] = v66;
+ _vm->_globals.essai0[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
if (v28 == -1)
break;;
}
@@ -3017,7 +3011,7 @@ int16 *ObjectsManager::PARC_VOITURE(int x1, int y1, int x2, int y2) {
} else {
v69 = 1;
v68 = 1;
- v67 = 0;
+ superRouteIdx = 0;
}
LABEL_90:
if (v69 < v73) {
@@ -3025,12 +3019,11 @@ LABEL_90:
v35 = v68;
for (int i = _vm->_linesManager.Ligne[v69]._lineDataEndIdx; v35 < i - 2; i = _vm->_linesManager.Ligne[v69]._lineDataEndIdx) {
v37 = _vm->_linesManager.Ligne[v69]._lineData;
- v39 = v67;
- _vm->_globals.super_parcours[v39] = v37[2 * v35];
- _vm->_globals.super_parcours[v39 + 1] = v37[2 * v35 + 1];
- _vm->_globals.super_parcours[v39 + 2] = _vm->_linesManager.Ligne[v69].field6;
- _vm->_globals.super_parcours[v39 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v37[2 * v35];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v37[2 * v35 + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[v69].field6;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
++v34;
v35 = v34;
}
@@ -3038,20 +3031,20 @@ LABEL_90:
if (_vm->_linesManager.PLAN_TEST(
_vm->_linesManager.Ligne[j]._lineData[0],
_vm->_linesManager.Ligne[j]._lineData[1],
- v67, j, v73)) {
+ superRouteIdx, j, v73)) {
v69 = _vm->_linesManager.NV_LIGNEDEP;
v68 = _vm->_linesManager.NV_LIGNEOFS;
- v67 = _vm->_linesManager.NV_POSI;
+ superRouteIdx = _vm->_linesManager.NV_POSI;
goto LABEL_90;
}
if (_vm->_linesManager.Ligne[j]._lineDataEndIdx - 2 > 0) {
for (int v40 = 0; v40 < _vm->_linesManager.Ligne[j]._lineDataEndIdx - 2; v40++) {
v41 = _vm->_linesManager.Ligne[j]._lineData;
- _vm->_globals.super_parcours[v67] = v41[2 * v40];
- _vm->_globals.super_parcours[v67 + 1] = v41[2 * v40 + 1];
- _vm->_globals.super_parcours[v67 + 2] = _vm->_linesManager.Ligne[j].field6;
- _vm->_globals.super_parcours[v67 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v41[2 * v40];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v41[2 * v40 + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[j].field6;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
}
}
}
@@ -3061,33 +3054,31 @@ LABEL_90:
if (v69 > v73) {
for (int k = v68; k > 0; --k) {
v45 = _vm->_linesManager.Ligne[v69]._lineData;
- v47 = v67;
- _vm->_globals.super_parcours[v47] = v45[2 * k];
- _vm->_globals.super_parcours[v47 + 1] = v45[2 * k + 1];
- _vm->_globals.super_parcours[v47 + 2] = _vm->_linesManager.Ligne[v69].field8;
- _vm->_globals.super_parcours[v47 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v45[2 * k];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v45[2 * k + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[v69].field8;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
}
for (int l = v69 - 1; l > v73; --l) {
v48 = l;
if (_vm->_linesManager.PLAN_TEST(
_vm->_linesManager.Ligne[l]._lineData[2 * _vm->_linesManager.Ligne[v48]._lineDataEndIdx - 2],
_vm->_linesManager.Ligne[l]._lineData[2 * _vm->_linesManager.Ligne[v48]._lineDataEndIdx - 1],
- v67, l, v73)) {
+ superRouteIdx, l, v73)) {
v69 = _vm->_linesManager.NV_LIGNEDEP;
v68 = _vm->_linesManager.NV_LIGNEOFS;
- v67 = _vm->_linesManager.NV_POSI;
+ superRouteIdx = _vm->_linesManager.NV_POSI;
goto LABEL_90;
}
for (int v49 = _vm->_linesManager.Ligne[v48]._lineDataEndIdx - 2; v49 > 0; v49 --) {
v50 = _vm->_linesManager.Ligne[l]._lineData;
- v52 = v67;
- _vm->_globals.super_parcours[v52] = v50[2 * v49];
- _vm->_globals.super_parcours[v52 + 1] = v50[2 * v49 + 1];
- _vm->_globals.super_parcours[v52 + 2] = _vm->_linesManager.Ligne[l].field8;
- _vm->_globals.super_parcours[v52 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v50[2 * v49];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v50[2 * v49 + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[l].field8;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
}
}
v68 = _vm->_linesManager.Ligne[v73]._lineDataEndIdx - 1;
@@ -3097,27 +3088,27 @@ LABEL_90:
if (v68 <= v72) {
for (int v57 = v68; v57 < v72; v57++) {
v58 = _vm->_linesManager.Ligne[v73]._lineData;
- _vm->_globals.super_parcours[v67] = v58[2 * v57];
- _vm->_globals.super_parcours[v67 + 1] = v58[2 * v57 + 1];
- _vm->_globals.super_parcours[v67 + 2] = _vm->_linesManager.Ligne[v73].field6;
- _vm->_globals.super_parcours[v67 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v58[2 * v57];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v58[2 * v57 + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[v73].field6;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
}
} else {
for (int v53 = v68; v53 > v72; v53--) {
v54 = _vm->_linesManager.Ligne[v73]._lineData;
- _vm->_globals.super_parcours[v67] = v54[2 * v53];
- _vm->_globals.super_parcours[v67 + 1] = v54[2 * v53 + 1];
- _vm->_globals.super_parcours[v67 + 2] = _vm->_linesManager.Ligne[v73].field8;
- _vm->_globals.super_parcours[v67 + 3] = 0;
- v67 += 4;
+ _vm->_globals.super_parcours[superRouteIdx] = v54[2 * v53];
+ _vm->_globals.super_parcours[superRouteIdx + 1] = v54[2 * v53 + 1];
+ _vm->_globals.super_parcours[superRouteIdx + 2] = _vm->_linesManager.Ligne[v73].field8;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = 0;
+ superRouteIdx += 4;
}
}
}
- _vm->_globals.super_parcours[v67] = -1;
- _vm->_globals.super_parcours[v67 + 1] = -1;
- _vm->_globals.super_parcours[v67 + 2] = -1;
- _vm->_globals.super_parcours[v67 + 3] = -1;
+ _vm->_globals.super_parcours[superRouteIdx] = -1;
+ _vm->_globals.super_parcours[superRouteIdx + 1] = -1;
+ _vm->_globals.super_parcours[superRouteIdx + 2] = -1;
+ _vm->_globals.super_parcours[superRouteIdx + 3] = -1;
result = &_vm->_globals.super_parcours[0];
} else {
result = (int16 *)g_PTRNUL;