[Scummvm-git-logs] scummvm master -> dcd54c88213fcf1338f64299dd9256ac39ae6d29
aquadran
noreply at scummvm.org
Sun Jul 31 08:41:30 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
dcd54c8821 ICB: Avoid casting BarrierCollision class to memory. Cleanup names.
Commit: dcd54c88213fcf1338f64299dd9256ac39ae6d29
https://github.com/scummvm/scummvm/commit/dcd54c88213fcf1338f64299dd9256ac39ae6d29
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2022-07-31T10:41:26+02:00
Commit Message:
ICB: Avoid casting BarrierCollision class to memory. Cleanup names.
Changed paths:
engines/icb/barriers.cpp
engines/icb/barriers.h
engines/icb/common/px_route_barriers.h
engines/icb/function.cpp
engines/icb/game_volume.cpp
engines/icb/line_of_sight.cpp
engines/icb/line_of_sight.h
engines/icb/object_structs.h
engines/icb/prim_route_builder.cpp
engines/icb/prim_route_builder.h
engines/icb/remora.cpp
engines/icb/remora.h
engines/icb/remora_pc.cpp
engines/icb/session.h
engines/icb/tracer.cpp
engines/icb/tracer.h
diff --git a/engines/icb/barriers.cpp b/engines/icb/barriers.cpp
index 91033fbbafb..b3294394494 100644
--- a/engines/icb/barriers.cpp
+++ b/engines/icb/barriers.cpp
@@ -78,7 +78,7 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
// returns 0 no barrier found thats too near
// 1 a barrier was too close
- _route_barrier *bar;
+ RouteBarrier *bar;
PXreal pdist, dist;
uint32 j;
PXfloat barrier_tolerance = BARRIER_TOLERANCE; // 1/8 of a turn = 45 degress
@@ -105,20 +105,20 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
if (!stairs[j].live)
continue;
- if (newy != bar->bottom())
+ if (newy != bar->m_bottom)
continue; // not on our floor so continue with next
- pdist = ((newx * bar->bcm().lpx()) + (newz * bar->bcm().lpz())) - bar->bcm().linedist();
+ pdist = ((newx * bar->m_bcm.m_lpx) + (newz * bar->m_bcm.m_lpz)) - bar->m_bcm.m_linedist;
if (((PXfloat)PXfabs(pdist) < STAIR_CLOSE) || // stair
((!stairs[j].is_stair) && (!stairs[j].up) && ((PXfloat)PXfabs(pdist) < LADDER_TOP_CLOSE))) { // top of stairs
// we are near the plane so now we must check the end points
// check the left end of the line
- dist = ((newx * bar->bcm().alpx()) + (newz * bar->bcm().alpz())) - bar->bcm().alinedist();
+ dist = ((newx * BarrierCollisionMathsObject::alpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::alpz(&bar->m_bcm))) - bar->m_bcm.m_alinedist;
// check the right end
if (dist >= 0) {
- dist = ((newx * bar->bcm().blpx()) + (newz * bar->bcm().blpz())) - bar->bcm().blinedist();
+ dist = ((newx * BarrierCollisionMathsObject::blpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::blpz(&bar->m_bcm))) - bar->m_bcm.m_blinedist;
if (dist >= 0) {
// ok, its a hit
@@ -194,20 +194,20 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
int32 b = Fetch_megas_nudge_barrier_number(j);
bar = session_barriers->Fetch_barrier(b);
- pdist = ((newx * bar->bcm().lpx()) + (newz * bar->bcm().lpz())) - bar->bcm().linedist();
+ pdist = ((newx * bar->m_bcm.m_lpx) + (newz * bar->m_bcm.m_lpz)) - bar->m_bcm.m_linedist;
if ((PXfloat)PXfabs(pdist) < BARRIER_CLOSE) {
// we are near the plane so now we must check the end points
// check the left end of the line
- dist = ((newx * bar->bcm().alpx()) + (newz * bar->bcm().alpz())) - bar->bcm().alinedist();
+ dist = ((newx * BarrierCollisionMathsObject::alpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::alpz(&bar->m_bcm))) - bar->m_bcm.m_alinedist;
// check the right end
// Make barrier a bit longer to nudge player through the doorway nicely
if (dist > -bar_close) {
- dist = ((newx * bar->bcm().blpx()) + (newz * bar->bcm().blpz())) - bar->bcm().blinedist();
+ dist = ((newx * BarrierCollisionMathsObject::blpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::blpz(&bar->m_bcm))) - bar->m_bcm.m_blinedist;
// Make barrier a bit longer to nudge player through the doorway nicely
if (dist > -bar_close) {
// check angle - narrow ones are ignored
- PXfloat delta = remainder(L->pan - bar->pan(), FULL_TURN, HALF_TURN);
+ PXfloat delta = remainder(L->pan - bar->m_pan, FULL_TURN, HALF_TURN);
PXfloat delta2 = delta;
if (delta < -QUARTER_TURN)
@@ -220,7 +220,7 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
// work out pan of barrier
// we have our coordinate and a direction to shift in
- PXfloat ang = bar->pan() * TWO_PI;
+ PXfloat ang = bar->m_pan * TWO_PI;
PXfloat cang = (PXfloat)PXcos(ang);
PXfloat sang = (PXfloat)PXsin(ang);
@@ -248,7 +248,7 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
bar = session_barriers->Fetch_barrier(b);
ignoreBarrier[j] = 1;
- if ((PXfloat)PXfabs(newy - bar->bottom()) > BARRIER_TOO_HIGH)
+ if ((PXfloat)PXfabs(newy - bar->m_bottom) > BARRIER_TOO_HIGH)
continue; // ignore abars that are now too high
__barrier_result result = Check_this_barrier(bar, newx, newz, oldx, oldz, bar_close, &ignoreThis);
@@ -270,7 +270,7 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
for (j = 0; j < num_stairs; j++) {
bar = &stairs[j].bar;
- if (newy != bar->bottom())
+ if (newy != bar->m_bottom)
continue; // not on our floor so continue with next
__barrier_result result = Check_this_barrier(bar, newx, newz, oldx, oldz, bar_close, &ignoreThis);
@@ -321,11 +321,11 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
if (ignoreBarrier[j] == 1)
continue;
- hit = troute.Get_intersect(oldx, oldz, destx, destz, bar->x1(), bar->z1(), bar->x2(), bar->z2());
+ hit = troute.Get_intersect(oldx, oldz, destx, destz, bar->m_x1, bar->m_z1, bar->m_x2, bar->m_z2);
if (hit == 1) {
warning("Player crossed the line nBars %d nFortKnox %d : player %f %f -> %f %f bar: %f %f -> %f %f", nBarriers, nFortKnox, oldx, oldz, destx, destz,
- bar->x1(), bar->z1(), bar->x2(), bar->z2());
+ bar->m_x1, bar->m_z1, bar->m_x2, bar->m_z2);
break;
}
}
@@ -419,7 +419,7 @@ __barrier_result _game_session::Check_barrier_bump_and_bounce(PXreal newx, PXrea
return (__OK);
}
-__barrier_result _game_session::Check_this_barrier(_route_barrier *bar, PXreal newx, PXreal newz, PXreal /* oldx */, PXreal /* oldz */, PXreal bar_close, int32 *ignoreThis) {
+__barrier_result _game_session::Check_this_barrier(RouteBarrier *bar, PXreal newx, PXreal newz, PXreal /* oldx */, PXreal /* oldz */, PXreal bar_close, int32 *ignoreThis) {
PXfloat delta;
PXfloat delta2;
PXfloat barrier_tolerance = BARRIER_TOLERANCE; // 1/8 of a turn = 45 degress
@@ -428,24 +428,24 @@ __barrier_result _game_session::Check_this_barrier(_route_barrier *bar, PXreal n
*ignoreThis = 1;
- pdist = ((newx * bar->bcm().lpx()) + (newz * bar->bcm().lpz())) - bar->bcm().linedist();
+ pdist = ((newx * bar->m_bcm.m_lpx) + (newz * bar->m_bcm.m_lpz)) - bar->m_bcm.m_linedist;
if ((PXfloat)PXfabs(pdist) < bar_close) {
// we are near the plane so now we must check the end points
// check the left end of the line
- dist = ((newx * bar->bcm().alpx()) + (newz * bar->bcm().alpz())) - bar->bcm().alinedist();
+ dist = ((newx * BarrierCollisionMathsObject::alpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::alpz(&bar->m_bcm))) - bar->m_bcm.m_alinedist;
// check the right end
if (dist >= 0) {
- dist = ((newx * bar->bcm().blpx()) + (newz * bar->bcm().blpz())) - bar->bcm().blinedist();
+ dist = ((newx * BarrierCollisionMathsObject::blpx(&bar->m_bcm)) + (newz * BarrierCollisionMathsObject::blpz(&bar->m_bcm))) - bar->m_bcm.m_blinedist;
if (dist >= 0) {
*ignoreThis = 0;
// we are going to hit this barrier
// but, if the angle is narrow we can aquire the barriers pan and continue unmolested
- delta = remainder(L->pan - bar->pan(), FULL_TURN, HALF_TURN);
+ delta = remainder(L->pan - bar->m_pan, FULL_TURN, HALF_TURN);
delta2 = delta;
if (delta < -QUARTER_TURN)
@@ -457,9 +457,9 @@ __barrier_result _game_session::Check_this_barrier(_route_barrier *bar, PXreal n
return (__BLOCKED); // conflict, so finish
if ((delta > QUARTER_TURN) || (delta < -QUARTER_TURN)) {
- adjusted_pan = remainder(bar->pan() + HALF_TURN, FULL_TURN, HALF_TURN);
+ adjusted_pan = remainder(bar->m_pan + HALF_TURN, FULL_TURN, HALF_TURN);
} else {
- adjusted_pan = bar->pan();
+ adjusted_pan = bar->m_pan;
}
made_adjust = TRUE8;
if (adjusted_pan > L->pan) {
@@ -468,9 +468,9 @@ __barrier_result _game_session::Check_this_barrier(_route_barrier *bar, PXreal n
adjusted_pan -= REPEL_TURN;
}
if (pdist > 0)
- normalAngle = bar->pan() + QUARTER_TURN;
+ normalAngle = bar->m_pan + QUARTER_TURN;
else if (pdist < 0)
- normalAngle = bar->pan() - QUARTER_TURN;
+ normalAngle = bar->m_pan - QUARTER_TURN;
} else {
// cant adjust
return (__BLOCKED);
@@ -487,7 +487,7 @@ __barrier_result _game_session::Check_this_barrier(_route_barrier *bar, PXreal n
}
void _barrier_handler::___init() {
- _routing_slice *slice;
+ RoutingSlice *slice;
uint32 *num_bars;
uint32 len;
@@ -507,7 +507,7 @@ void _barrier_handler::___init() {
num_bars = (uint32 *)LinkedDataObject::Fetch_item_by_name(raw_barriers, "Count");
- total_barriers = *(num_bars);
+ total_barriers = READ_LE_U32(num_bars);
Tdebug("barriers.txt", "%d raw barriers", total_barriers);
@@ -535,9 +535,9 @@ void _barrier_handler::___init() {
uint32 j;
for (j = 0; j < total_slices; j++) {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, j);
- Tdebug("slice.txt", "bottom %3.1f top %3.1f", slice->bottom, slice->top);
- Tdebug("slice.txt", "%d parents", slice->num_parent_boxes);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, j);
+ Tdebug("slice.txt", "bottom %3.1f top %3.1f", FROM_LE_FLOAT32(slice->bottom), FROM_LE_FLOAT32(slice->top));
+ Tdebug("slice.txt", "%d parents", FROM_LE_32(slice->num_parent_boxes));
}
// reset prop list for each
@@ -566,9 +566,9 @@ void _barrier_handler::___init() {
if (clist[j]->num_barriers) \
for (k = 0; k < clist[j]->num_barriers; k++) { \
bar = Fetch_barrier(clist[j]->barriers[k]); \
- if (bar->bottom() == y) { \
+ if (bar->m_bottom == y) { \
if (barrier_mask) { \
- if (MS->troute.LineIntersectsRect(mask, (int32)bar->x1(), (int32)bar->z1(), (int32)bar->x2(), (int32)bar->z2())) \
+ if (MS->troute.LineIntersectsRect(mask, (int32)bar->m_x1, (int32)bar->m_z1, (int32)bar->m_x2, (int32)bar->m_z2)) \
MS->troute.Add_barrier(bar); \
} else \
MS->troute.Add_barrier(bar); \
@@ -597,9 +597,9 @@ void _barrier_handler::___init() {
void _barrier_handler::Form_parent_barrier_list(PXreal x, PXreal y, PXreal z) {
// we are routing into a room - just get the parent barriers
- _parent_box *endb;
+ ParentBox *endb;
uint32 parent_a, slice_a, k;
- _route_barrier *bar;
+ RouteBarrier *bar;
uint32 *array;
endb = Fetch_parent_box_for_xyz(x, y, z, parent_a, slice_a);
@@ -624,14 +624,14 @@ void _barrier_handler::Form_route_barrier_list(PXreal x, PXreal y, PXreal z, PXr
// it is a higher level job to divide long routes up into rect to rect chunks before calling here
// but this is quite sensible anyway as we only want to be auto-routing across tiny areas at a time
- _parent_box *startb;
- _parent_box *endb;
+ ParentBox *startb;
+ ParentBox *endb;
_rect rb; // rb meaning 'Route-Box'
uint32 j;
- _child_group *clist[MAX_child_groups_per_parent * 2];
+ ChildGroup *clist[MAX_child_groups_per_parent * 2];
uint32 total_childs = 0; // separate total for safety
int32 expanded_this_go;
- _route_barrier *bar;
+ RouteBarrier *bar;
uint32 k;
uint32 parent_a, parent_b;
uint32 slice_a, slice_b;
@@ -778,50 +778,50 @@ void _barrier_handler::Form_route_barrier_list(PXreal x, PXreal y, PXreal z, PXr
}
}
} else { // route lies within a single floor - so draw a box around it
- _route_barrier newbar;
+ RouteBarrier newbar;
// left hand barrier
- newbar.x1(startb->left);
- newbar.z1(startb->back);
- newbar.x2(startb->left);
- newbar.z2(startb->front);
+ newbar.m_x1 = startb->left;
+ newbar.m_z1 = startb->back;
+ newbar.m_x2 = startb->left;
+ newbar.m_z2 = startb->front;
MS->troute.Add_barrier(&newbar);
// right hand barrier
- newbar.x1(startb->right);
- newbar.z1(startb->back);
- newbar.x2(startb->right);
- newbar.z2(startb->front);
+ newbar.m_x1 = startb->right;
+ newbar.m_z1 = startb->back;
+ newbar.m_x2 = startb->right;
+ newbar.m_z2 = startb->front;
MS->troute.Add_barrier(&newbar);
// top barrier
- newbar.x1(startb->left);
- newbar.z1(startb->back);
- newbar.x2(startb->right);
- newbar.z2(startb->back);
+ newbar.m_x1 = startb->left;
+ newbar.m_z1 = startb->back;
+ newbar.m_x2 = startb->right;
+ newbar.m_z2 = startb->back;
MS->troute.Add_barrier(&newbar);
// bottom barrier
- newbar.x1(startb->left);
- newbar.z1(startb->front);
- newbar.x2(startb->right);
- newbar.z2(startb->front);
+ newbar.m_x1 = startb->left;
+ newbar.m_z1 = startb->front;
+ newbar.m_x2 = startb->right;
+ newbar.m_z2 = startb->front;
MS->troute.Add_barrier(&newbar);
}
}
-_parent_box *_barrier_handler::Fetch_parent_num_on_slice_y(uint32 requested_parent, PXreal y) {
+ParentBox *_barrier_handler::Fetch_parent_num_on_slice_y(uint32 requested_parent, PXreal y) {
// fetch the parent of the number passed for a given y level
// ie 0 means first, 1 means second, etc
// this is called by the plan-viewer which just keeps asking for the next one until we say there are no more
// by passing back a 0 instead of a pointer to a parent
- static _routing_slice *slice;
+ static RoutingSlice *slice;
uint32 cur_slice = 0;
// first time in so compute the slice
if (!requested_parent) {
while (1) {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
if ((y >= slice->bottom) && (y < slice->top))
break;
@@ -845,29 +845,29 @@ _parent_box *_barrier_handler::Fetch_parent_num_on_slice_y(uint32 requested_pare
// simply return the pointer
- return ((_parent_box *)(((uint8 *)slice) + slice->parent_boxes[requested_parent]));
+ return ((ParentBox *)(((uint8 *)slice) + slice->parent_boxes[requested_parent]));
}
-_route_barrier *_barrier_handler::Fetch_barrier(uint32 num) {
+RouteBarrier *_barrier_handler::Fetch_barrier(uint32 num) {
// return a pointer to numbered barrier
- _route_barrier *bar;
+ RouteBarrier *bar;
assert(num < total_barriers);
if (num >= total_barriers)
Fatal_error("illegal barrier request %d", num);
- bar = (_route_barrier *)LinkedDataObject::Fetch_item_by_name(raw_barriers, "Data");
+ bar = (RouteBarrier *)LinkedDataObject::Fetch_item_by_name(raw_barriers, "Data");
return &bar[num];
}
-_parent_box *_barrier_handler::Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXreal z, uint32 &par_num, uint32 &slice_num) {
+ParentBox *_barrier_handler::Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXreal z, uint32 &par_num, uint32 &slice_num) {
// return a pointer to the parent box of a point in world space
// returns 0 if the point does not lie within a parent box
- _routing_slice *slice = nullptr;
- _parent_box *parent = nullptr;
+ RoutingSlice *slice = nullptr;
+ ParentBox *parent = nullptr;
// find correct slice according to height
// fetch first
@@ -875,7 +875,7 @@ _parent_box *_barrier_handler::Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXre
slice_num = 0;
while (1) {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, slice_num);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, slice_num);
if ((y >= slice->bottom) && (y < slice->top))
break;
@@ -897,7 +897,7 @@ _parent_box *_barrier_handler::Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXre
Fatal_error("_barrier_handler::Fetch_parent_box_for_xyz slice has no parent boxes");
for (par_num = 0; par_num < slice->num_parent_boxes; par_num++) {
- parent = (_parent_box *)(((uint8 *)slice) + slice->parent_boxes[par_num]);
+ parent = (ParentBox *)(((uint8 *)slice) + slice->parent_boxes[par_num]);
// do we lie within the box?
if ((x > parent->left) && (x < parent->right) && (z > parent->back) && (z < parent->front)) {
@@ -914,14 +914,14 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
// this system is custom for the player object - routing megas use their own system
// this routine fecthes the 'special' player only line-of-sight barriers too
- _parent_box *par = nullptr;
- _child_group *pchild;
+ ParentBox *par = nullptr;
+ ChildGroup *pchild;
uint32 total_childs;
uint32 j, k;
uint32 *list;
- _route_barrier *bar;
+ RouteBarrier *bar;
uint32 parent_number;
- _routing_slice *slice;
+ RoutingSlice *slice;
PXreal x, y, z;
x = M->actor_xyz.x;
@@ -929,7 +929,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
z = M->actor_xyz.z;
// on previous slice?
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
if ((y >= slice->bottom) && (y < slice->top) && (M->cur_parent))
if ((x > M->cur_parent->left) && (x < M->cur_parent->right) && (z > M->cur_parent->back) && (z < M->cur_parent->front)) {
// nothing has changed
@@ -944,7 +944,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
M->cur_slice = 0;
while (1) {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
if ((y >= slice->bottom) && (y < slice->top))
break;
@@ -952,7 +952,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
M->cur_slice++;
if (M->cur_slice == session_barriers->total_slices) { // if so then must be last slice :O
M->cur_slice--;
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(session_barriers->route_wrapper, M->cur_slice);
break;
}
}
@@ -962,7 +962,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
Fatal_error("Prepare_megas_route_barriers slice has no parent boxes");
for (parent_number = 0; parent_number < slice->num_parent_boxes; parent_number++) {
- par = (_parent_box *)(((uint8 *)slice) + slice->parent_boxes[parent_number]);
+ par = (ParentBox *)(((uint8 *)slice) + slice->parent_boxes[parent_number]);
// do we lie within the box?
if ((x > par->left) && (x < par->right) && (z > par->back) && (z < par->front)) {
@@ -996,7 +996,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
for (j = 0; j < par->num_barriers; j++) {
// fetch each barrier and check that its bottom edge is on the floor - otherwise we ignore it
bar = session_barriers->Fetch_barrier(*(list));
- if (bar->bottom() == slice->bottom) { // M->actor_xyz.y)
+ if (bar->m_bottom == slice->bottom) { // M->actor_xyz.y)
// ok, this barrier is on the floor so we add it to our list
M->barrier_list[M->number_of_barriers++] = *(list++);
}
@@ -1018,19 +1018,19 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
// fetch each barrier and check that its bottom edge is on the floor - otherwise we ignore it
bar = session_barriers->Fetch_barrier(*(list));
- if (bar->material() == VIEW_FIELD) {
- if (bar->bottom() == slice->bottom) { // M->actor_xyz.y)
+ if (bar->m_material == VIEW_FIELD) {
+ if (bar->m_bottom == slice->bottom) { // M->actor_xyz.y)
// ok, this barrier is on the floor so we add it to our list
M->barrier_list[M->number_of_barriers++] = *(list++);
}
- } else if (bar->material() >= LEFT_NUDGE) {
- if (bar->bottom() == slice->bottom) { // M->actor_xyz.y)
+ } else if (bar->m_material >= LEFT_NUDGE) {
+ if (bar->m_bottom == slice->bottom) { // M->actor_xyz.y)
// ok, this barrier is on the floor so we add it to our list
M->nudge_list[M->number_of_nudge++] = *(list++);
}
} else {
- Fatal_error("illegal barrier [%d], special list - type %d, x1 %3.2f, x2 %3.2f, z1 %3.2f, z2 %3.2f", *(list), bar->material(), bar->x1(),
- bar->x2(), bar->z1(), bar->z2());
+ Fatal_error("illegal barrier [%d], special list - type %d, x1 %3.2f, x2 %3.2f, z1 %3.2f, z2 %3.2f", *(list), bar->m_material, bar->m_x1,
+ bar->m_x2, bar->m_z1, bar->m_z2);
}
}
}
@@ -1043,7 +1043,7 @@ void _game_session::Prepare_megas_route_barriers(bool8 pl) {
for (k = 0; k < pchild->num_barriers; k++) {
bar = session_barriers->Fetch_barrier(pchild->barriers[k]);
- if (bar->bottom() == slice->bottom) { // M->actor_xyz.y)
+ if (bar->m_bottom == slice->bottom) { // M->actor_xyz.y)
M->barrier_list[M->number_of_barriers++] = pchild->barriers[k];
}
}
@@ -1068,9 +1068,9 @@ void _barrier_handler::Prepare_animating_barriers() {
uint32 j;
uint16 barrier_table[MAX_anim_barriers];
uint32 total_anim_bars = 0;
- _route_barrier *bar;
- _routing_slice *slice;
- _parent_box *parent;
+ RouteBarrier *bar;
+ RoutingSlice *slice;
+ ParentBox *parent;
uint32 cur_slice = 0;
uint32 l, f, pbar_num;
uint32 abar_index = 0;
@@ -1114,8 +1114,8 @@ void _barrier_handler::Prepare_animating_barriers() {
bar = Fetch_barrier(bars[i]);
if (l == total_anim_bars) { // didnt find in list
- Tdebug("anim_barriers.txt", " new barrier %d x%3.2f y%3.2f z%3.2f", bars[i], bar->x1(), bar->bottom(),
- bar->z1());
+ Tdebug("anim_barriers.txt", " new barrier %d x%3.2f y%3.2f z%3.2f", bars[i], bar->m_x1, bar->m_bottom,
+ bar->m_z1);
barrier_table[total_anim_bars++] = (uint16)bars[i]; // write the bar down
@@ -1126,9 +1126,9 @@ void _barrier_handler::Prepare_animating_barriers() {
cur_slice = 0;
do {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
- if ((bar->bottom() >= slice->bottom) && (bar->bottom() < slice->top))
+ if ((bar->m_bottom >= slice->bottom) && (bar->m_bottom < slice->top))
break;
cur_slice++;
@@ -1155,11 +1155,11 @@ void _barrier_handler::Prepare_animating_barriers() {
for (f = 0; f < slice->num_parent_boxes; f++) {
Tdebug("anim_barriers.txt", " check parent %d", f);
- parent = (_parent_box *)(((uint8 *)slice) + slice->parent_boxes[f]);
+ parent = (ParentBox *)(((uint8 *)slice) + slice->parent_boxes[f]);
// do we lie within the box?
- if ((bar->x1() > parent->left) && (bar->x1() < parent->right) && (bar->z1() > parent->back) &&
- (bar->z1() < parent->front)) {
+ if ((bar->m_x1 > parent->left) && (bar->m_x1 < parent->right) && (bar->m_z1 > parent->back) &&
+ (bar->m_z1 < parent->front)) {
char *props_name = (char *)LinkedDataObject::Fetch_items_name_by_number(MS->prop_anims, j);
uint32 props_number = LinkedDataObject::Fetch_item_number_by_name(MS->objects, props_name);
@@ -1271,8 +1271,8 @@ void _barrier_handler::Prepare_animating_barriers() {
// now compute slice for sample barrier
cur_slice = 0;
do {
- slice = (_routing_slice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
- if ((bar->bottom() >= slice->bottom) && (bar->bottom() < slice->top))
+ slice = (RoutingSlice *)LinkedDataObject::Fetch_item_by_number(route_wrapper, cur_slice);
+ if ((bar->m_bottom >= slice->bottom) && (bar->m_bottom < slice->top))
break;
cur_slice++;
} while (cur_slice != total_slices);
diff --git a/engines/icb/barriers.h b/engines/icb/barriers.h
index 500350b699c..4b931af7da4 100644
--- a/engines/icb/barriers.h
+++ b/engines/icb/barriers.h
@@ -87,11 +87,11 @@ public:
void Form_route_barrier_list(PXreal x, PXreal y, PXreal z, PXreal x2, PXreal z2);
void Form_parent_barrier_list(PXreal x, PXreal y, PXreal z);
- _parent_box *Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXreal z, uint32 &par_num, uint32 &slice_num);
- _parent_box *Fetch_parent_num_on_slice_y(uint32 requested_parent, PXreal y);
- uint32 Fetch_number_of_child_boxes(_parent_box *parent);
- _child_group *Fetch_child_box(_parent_box *parent, uint32 child);
- _route_barrier *Fetch_barrier(uint32 num);
+ ParentBox *Fetch_parent_box_for_xyz(PXreal x, PXreal y, PXreal z, uint32 &par_num, uint32 &slice_num);
+ ParentBox *Fetch_parent_num_on_slice_y(uint32 requested_parent, PXreal y);
+ uint32 Fetch_number_of_child_boxes(ParentBox *parent);
+ ChildGroup *Fetch_child_box(ParentBox *parent, uint32 child);
+ RouteBarrier *Fetch_barrier(uint32 num);
uint32 Fetch_total_barriers();
LinkedDataFile *Get_barrier_pointer() const { return raw_barriers; }
void Prepare_animating_barriers();
@@ -139,9 +139,9 @@ inline void _barrier_handler::Clear_route_barrier_mask() {
barrier_mask = FALSE8;
}
-inline uint32 _barrier_handler::Fetch_number_of_child_boxes(_parent_box *parent) { return (parent->num_childgroups); }
+inline uint32 _barrier_handler::Fetch_number_of_child_boxes(ParentBox *parent) { return (parent->num_childgroups); }
-inline _child_group *_barrier_handler::Fetch_child_box(_parent_box *parent, uint32 child) { return ((_child_group *)(((uint8 *)parent) + parent->childgroups[child])); }
+inline ChildGroup *_barrier_handler::Fetch_child_box(ParentBox *parent, uint32 child) { return ((ChildGroup *)(((uint8 *)parent) + parent->childgroups[child])); }
inline uint32 _barrier_handler::Fetch_total_barriers() { return (total_barriers); }
diff --git a/engines/icb/common/px_route_barriers.h b/engines/icb/common/px_route_barriers.h
index e1486e07bec..f5d228d0839 100644
--- a/engines/icb/common/px_route_barriers.h
+++ b/engines/icb/common/px_route_barriers.h
@@ -72,88 +72,58 @@ namespace ICB {
// VIEW_FIELD - stops characters walking out of camera field-of-view.
// LEFT_NUDGE - use to assist player control going through doors.
// RIGHT_NUDGE - ditto last one.
-enum _barrier_type { BRICK = 0, GLASS, BULLET_PROOF_GLASS, THIN_STEEL, WIRE_FENCE, UNIT_HEIGHT, VIEW_FIELD, LEFT_NUDGE, RIGHT_NUDGE };
+enum eBarrierType { BRICK = 0, GLASS, BULLET_PROOF_GLASS, THIN_STEEL, WIRE_FENCE, UNIT_HEIGHT, VIEW_FIELD, LEFT_NUDGE, RIGHT_NUDGE };
#define BARRIER_TYPE_CARDINALITY 9 // Must match number of enums in previous type (because C++
// doesn't provide a way to get this).
// This is an enumerated type for the things that might try to pass through a barrier. Note: the TEST_RAY
// is blocked by all types of barrier.
-enum _barrier_ray_type { TEST_RAY, LIGHT, BULLET };
+enum eBarrierRayType { TEST_RAY, LIGHT, BULLET };
#define RAY_TYPE_CARDINALITY 3
// Defines a multi-state logic value for use with the barriers.
-enum _barrier_logic_value { NO_IMPACT = 0, BLOCKS, ALLOWS, MAYBE, SPECIAL };
+enum eBarrierLogicValue { NO_IMPACT = 0, BLOCKS, ALLOWS, MAYBE, SPECIAL };
// This is the truth table that states what kind of ray passes through what
// type of barrier.
-static enum _barrier_logic_value _barrier_logic_table[BARRIER_TYPE_CARDINALITY][RAY_TYPE_CARDINALITY] = {
+static enum eBarrierLogicValue barrierLogicTable[BARRIER_TYPE_CARDINALITY][RAY_TYPE_CARDINALITY] = {
{BLOCKS, BLOCKS, BLOCKS}, {BLOCKS, ALLOWS, SPECIAL}, {BLOCKS, ALLOWS, BLOCKS}, {BLOCKS, BLOCKS, ALLOWS}, {BLOCKS, ALLOWS, MAYBE},
{BLOCKS, ALLOWS, ALLOWS}, {BLOCKS, ALLOWS, ALLOWS}, {BLOCKS, ALLOWS, ALLOWS}, {BLOCKS, ALLOWS, ALLOWS}};
-// simple, this is just for the converters
-// Some extra figures to speed up barrier collision detection.
typedef struct {
- PXfloat linedist, alinedist, blinedist;
- PXfloat lpx, lpz; // Main barrier
- PXfloat alpx, alpz; // End A.
- PXfloat blpx, blpz; // End B.
-} _simple_barrier_collision_maths;
-
-// simple, this is just for the converters
-// This holds one single barrier.
-typedef struct {
- PXreal x1, z1; // Looking down on the model, the position of the first vertical edge of the barrier.
- PXreal x2, z2; // Looking down on the model, the position of the second vertical edge.
- PXreal bottom; // The bottom of the barrier.
- PXreal top; // The top of the barrier.
- _barrier_type material; // The material the barrier is made of.
- PXfloat pan; // The barrier's pan value.
- _simple_barrier_collision_maths bcm; // Some extra figures to speed up barrier collision detection.
-} _simple_route_barrier;
-
-class _barrier_collision_maths {
-private:
// these are in both versions
PXfloat m_linedist, m_alinedist, m_blinedist;
PXfloat m_lpx, m_lpz; // Main barrier
PXfloat m_alpx, m_alpz; // End A.
PXfloat m_blpx, m_blpz; // End B.
+} BarrierCollisionMaths;
+class BarrierCollisionMathsObject {
public:
- inline PXfloat linedist() { return m_linedist; }
-
- inline PXfloat alinedist() { return m_alinedist; }
- inline PXfloat blinedist() { return m_blinedist; }
-
- // on pc these are pxfloats
-
- inline PXfloat lpx() { return m_lpx; }
- inline PXfloat lpz() { return m_lpz; }
-
- inline PXfloat alpx() {
+ static inline PXfloat alpx(BarrierCollisionMaths *bmath) {
// return m_alpx;
- return -lpz();
+ return -bmath->m_lpz;
}
- inline PXfloat alpz() {
+ static inline PXfloat alpz(BarrierCollisionMaths *bmath) {
// return m_alpz;
- return lpx();
+ return bmath->m_lpx;
}
- inline PXfloat blpx() {
+ static inline PXfloat blpx(BarrierCollisionMaths *bmath) {
// return m_blpx;
- return lpz();
+ return bmath->m_lpz;
}
- inline PXfloat blpz() {
+ static inline PXfloat blpz(BarrierCollisionMaths *bmath) {
// return m_blpz;
- return -lpx();
+ return -bmath->m_lpx;
}
- void Generate(PXreal x1, PXreal z1, PXreal x2, PXreal z2) {
+ static void Generate(BarrierCollisionMaths *bmath, PXreal x1, PXreal z1, PXreal x2, PXreal z2) {
PXreal dx = x1 - x2;
PXreal dz = z1 - z2;
@@ -162,75 +132,35 @@ public:
PXfloat xunit = PXreal2PXfloat(dx) / nLength;
PXfloat zunit = PXreal2PXfloat(dz) / nLength;
- m_lpx = -zunit;
- m_lpz = xunit;
+ bmath->m_lpx = -zunit;
+ bmath->m_lpz = xunit;
- m_linedist = (x1 * lpx()) + (z1 * lpz());
+ bmath->m_linedist = (x1 * bmath->m_lpx) + (z1 * bmath->m_lpz);
- m_alinedist = (x1 * alpx()) + (z1 * alpz());
+ bmath->m_alinedist = (x1 * alpx(bmath)) + (z1 * alpz(bmath));
- m_blinedist = (x2 * blpx()) + (z2 * blpz());
- }
-
- _barrier_collision_maths() {
- (void)m_alpx; // shutup warning
- (void)m_alpz; // shutup warning
- (void)m_blpx; // shutup warning
- (void)m_blpz; // shutup warning
+ bmath->m_blinedist = (x2 * blpx(bmath)) + (z2 * blpz(bmath));
}
};
-class _route_barrier {
-
+typedef struct {
PXreal m_x1, m_z1; // Looking down on the model, the position of the first vertical edge of the barrier.
PXreal m_x2, m_z2; // Looking down on the model, the position of the second vertical edge.
PXreal m_bottom; // The bottom of the barrier.
PXreal m_top; // The top of the barrier.
- _barrier_type m_material; // The material the barrier is made of.
+ eBarrierType m_material; // The material the barrier is made of.
PXfloat m_pan; // The barrier's pan value.
- _barrier_collision_maths m_bcm; // Some extra figures to speed up barrier collision detection.
-
-public:
-
- void Create_pan() { m_pan = PXAngleOfVector(m_z1 - m_z2, m_x1 - m_x2); }
-
- void x1(PXreal x) { m_x1 = x; }
- void z1(PXreal z) { m_z1 = z; }
-
- inline PXreal x1() const { return m_x1; }
- inline PXreal z1() const { return m_z1; }
-
- void x2(PXreal x) { m_x2 = x; }
- void z2(PXreal z) { m_z2 = z; }
- inline PXreal x2() const { return m_x2; }
- inline PXreal z2() const { return m_z2; }
- inline PXreal bottom() const { return m_bottom; }
- inline PXreal top() const { return m_top; }
- inline _barrier_type material() const { return m_material; }
+ BarrierCollisionMaths m_bcm; // Some extra figures to speed up barrier collision detection.
+} RouteBarrier;
- inline PXfloat pan() const { return m_pan; }
-
- inline _barrier_collision_maths &bcm() { return m_bcm; }
-
- _route_barrier() {}
-
- _route_barrier(PXreal inX1, PXreal inZ1, PXreal inX2, PXreal inZ2, PXreal inBottom, PXreal inTop, _barrier_type inMaterial) {
- m_x1 = inX1;
- m_z1 = inZ1;
- m_x2 = inX2;
- m_z2 = inZ2;
- m_bottom = inBottom;
- m_top = inTop;
- m_material = inMaterial;
- }
-};
+inline void routeBarrierCreatePan(RouteBarrier *barrier) { barrier->m_pan = PXAngleOfVector(barrier->m_z1 - barrier->m_z2, barrier->m_x1 - barrier->m_x2); }
// This holds several barriers. These barriers all at least partly occupy a given cube in space. If one barrier passes
// through more than one cube, it will have a duplicate entry in each cube.
typedef struct {
int32 num_barriers; // The number of barriers referenced in this cube.
uint32 barriers; // Offset to an array of barrier indices.
-} _barrier_cube;
+} BarrierCube;
// This is a horizontal slice through the Max model, containing all the route barriers that pass through this level. The
// extremeties of the whole cuboid are given first so that a quick initial check can be done to see if there might be
@@ -245,7 +175,7 @@ typedef struct {
uint32 num_cubes; // Number of _route_cubes in this floor (could be calculated by dividing overall cube size by FLOOR_CUBE_SIZE).
uint32 row_length; // Size of the rows in the array (eg. 6 cubes could be 1X6, 2X3, 3X2 or 6X1).
uint32 offset_cubes[1]; // An array of offsets to cubes (2D array of size row_length * (num_cubes / row_length) ).
-} _barrier_slice;
+} BarrierSlice;
// This is used in the following definition of _parent_box, and holds one group of barriers.
typedef struct {
@@ -254,7 +184,7 @@ typedef struct {
uint32 num_barriers; // Number of barriers in this group.
uint32 barriers[1]; // Array of barrier indices.
-} _child_group;
+} ChildGroup;
// This holds one parent box entry.
typedef struct {
@@ -267,7 +197,7 @@ typedef struct {
uint32 num_childgroups; // Number of child groups owned by this parent box.
uint32 childgroups[1]; // Array of offsets to the child groups.
-} _parent_box;
+} ParentBox;
// This is also a slice through the model, but the data is grouped in a different way which is more suited to routing.
typedef struct {
@@ -276,9 +206,9 @@ typedef struct {
uint32 num_parent_boxes; // The number of parent boxes in this slice (same as the number of floor rectangles at this height).
uint32 parent_boxes[1]; // An array of offsets to parent boxes.
-} _routing_slice;
+} RoutingSlice;
-__inline _barrier_logic_value IsBarrierTo(_barrier_type eMaterial, _barrier_ray_type eRay) { return _barrier_logic_table[eMaterial][eRay]; }
+inline eBarrierLogicValue IsBarrierTo(eBarrierType eMaterial, eBarrierRayType eRay) { return barrierLogicTable[eMaterial][eRay]; }
} // End of namespace ICB
diff --git a/engines/icb/function.cpp b/engines/icb/function.cpp
index 329ffd3f5c9..a4583648d4a 100644
--- a/engines/icb/function.cpp
+++ b/engines/icb/function.cpp
@@ -2989,18 +2989,24 @@ uint32 _game_session::Register_stair_or_ladder(const char *target, bool8 top, ui
z3 = z1 - dz;
// new constructor for barrier...
- stairs[num_stairs].bar = _route_barrier(x2, z2, x3, z3, stair->floor_y, (PXreal)0 /* dont care */, BRICK /* dont care */);
+ stairs[num_stairs].bar.m_x1 = x2;
+ stairs[num_stairs].bar.m_z1 = z2;
+ stairs[num_stairs].bar.m_x2 = x3;
+ stairs[num_stairs].bar.m_z2 = z3;
+ stairs[num_stairs].bar.m_bottom = stair->floor_y;
+ stairs[num_stairs].bar.m_top = (PXreal)0;
+ stairs[num_stairs].bar.m_material = BRICK;
// create the BCM maths----------------------------------------------
// The barrier has coordinates x2, z2 to x3, z3.
// Fill in the structure that holds the extra collision maths.
- stairs[num_stairs].bar.bcm().Generate(x2, z2, x3, z3);
- stairs[num_stairs].bar.Create_pan();
+ BarrierCollisionMathsObject::Generate(&stairs[num_stairs].bar.m_bcm, x2, z2, x3, z3);
+ routeBarrierCreatePan(&stairs[num_stairs].bar);
- Tdebug("stairs.txt", "try this: %.4f, %g,%g,%g %g,%g %g,%g %g,%g\n", stairs[num_stairs].bar.pan(), stairs[num_stairs].bar.bcm().linedist(),
- stairs[num_stairs].bar.bcm().alinedist(), stairs[num_stairs].bar.bcm().blinedist(), stairs[num_stairs].bar.bcm().lpx(), stairs[num_stairs].bar.bcm().lpz(),
- stairs[num_stairs].bar.bcm().alpx(), stairs[num_stairs].bar.bcm().alpz(), stairs[num_stairs].bar.bcm().blpx(), stairs[num_stairs].bar.bcm().blpz());
+ Tdebug("stairs.txt", "try this: %.4f, %g,%g,%g %g,%g %g,%g %g,%g\n", stairs[num_stairs].bar.m_pan, stairs[num_stairs].bar.m_bcm.m_linedist,
+ stairs[num_stairs].bar.m_bcm.m_alinedist, stairs[num_stairs].bar.m_bcm.m_blinedist, stairs[num_stairs].bar.m_bcm.m_lpx, stairs[num_stairs].bar.m_bcm.m_lpz,
+ BarrierCollisionMathsObject::alpx(&stairs[num_stairs].bar.m_bcm), BarrierCollisionMathsObject::alpz(&stairs[num_stairs].bar.m_bcm), BarrierCollisionMathsObject::blpx( &stairs[num_stairs].bar.m_bcm), BarrierCollisionMathsObject::blpz(&stairs[num_stairs].bar.m_bcm));
// create the BCM maths----------------------------------------------
diff --git a/engines/icb/game_volume.cpp b/engines/icb/game_volume.cpp
index 67eb91e1dfb..bcfb805054a 100644
--- a/engines/icb/game_volume.cpp
+++ b/engines/icb/game_volume.cpp
@@ -31,7 +31,7 @@ namespace ICB {
void _game_volume::SetUpParameters(LinkedDataFile *pyLOSData) {
uint32 i;
- _barrier_slice *pSlice;
+ BarrierSlice *pSlice;
_slice_limit sSliceLimit;
// Store the pointer to the data file.
@@ -39,7 +39,7 @@ void _game_volume::SetUpParameters(LinkedDataFile *pyLOSData) {
// Get the first slice and use this to set the horizontal sizes, since they all share the
// same horizontal sizes.
- pSlice = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(pyLOSData, 0);
+ pSlice = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(pyLOSData, 0);
m_fLeftEdge = pSlice->left_edge;
m_fRightEdge = pSlice->right_edge;
m_fBackEdge = pSlice->back_edge;
@@ -57,7 +57,7 @@ void _game_volume::SetUpParameters(LinkedDataFile *pyLOSData) {
m_nNumSlices = LinkedDataObject::Fetch_number_of_items(pyLOSData);
for (i = 0; i < m_nNumSlices; ++i) {
- pSlice = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(pyLOSData, i);
+ pSlice = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(pyLOSData, i);
sSliceLimit.fTop = pSlice->top;
sSliceLimit.fBottom = pSlice->bottom;
m_oSliceLimits[i] = sSliceLimit;
diff --git a/engines/icb/line_of_sight.cpp b/engines/icb/line_of_sight.cpp
index 180beca8472..5a3e370ca8f 100644
--- a/engines/icb/line_of_sight.cpp
+++ b/engines/icb/line_of_sight.cpp
@@ -157,7 +157,7 @@ void _line_of_sight::UnSubscribe(uint32 nObserverID, uint32 nTargetID) {
}
}
-bool8 _line_of_sight::ObjectToObject(uint32 nObserverID, uint32 nTargetID, _barrier_ray_type eRayType, bool8 bCanSeeUs, ActorEyeMode eEyeMode, bool8 bOverrideHeightLimit) {
+bool8 _line_of_sight::ObjectToObject(uint32 nObserverID, uint32 nTargetID, eBarrierRayType eRayType, bool8 bCanSeeUs, ActorEyeMode eEyeMode, bool8 bOverrideHeightLimit) {
_logic *pObserver;
_logic *pTarget;
bool8 bObserverIsActor, bTargetIsActor;
diff --git a/engines/icb/line_of_sight.h b/engines/icb/line_of_sight.h
index b64f0aea67f..80b61f311c0 100644
--- a/engines/icb/line_of_sight.h
+++ b/engines/icb/line_of_sight.h
@@ -115,14 +115,14 @@ public:
inline void ShadowsOnOff(bool8 bState) { m_bHandleShadows = bState; }
// This checks line-of-sight between two objects, accounting for field-of-view if observer is an actor,
- bool8 ObjectToObject(uint32 nObserverID, uint32 nTargetID, _barrier_ray_type eRayType, bool8 bCanSeeUs, ActorEyeMode eEyeMode, bool8 bOverrideHeightLimit = FALSE8);
+ bool8 ObjectToObject(uint32 nObserverID, uint32 nTargetID, eBarrierRayType eRayType, bool8 bCanSeeUs, ActorEyeMode eEyeMode, bool8 bOverrideHeightLimit = FALSE8);
// This checks line-of-sight using the current truth table values and so is fast.
inline bool8 LineOfSight(uint32 nObserverID, uint32 nTargetID);
// And these two return extra information after a call to ObjectToObject().
const px3DRealPoint GetLastImpactPoint() const { return (m_oImpactPoint); }
- _barrier_logic_value GetLastImpactType() const { return (m_eImpactType); }
+ eBarrierLogicValue GetLastImpactType() const { return (m_eImpactType); }
// This allows other classes to get at the barrier slices (the Remora needs this).
LinkedDataFile *GetSlicesPointer() const { return (m_pyLOSData); }
@@ -145,7 +145,7 @@ private:
bool8 m_pbCanSeeInDark[LOS_1D_SIZE]; // Housekeeping table of objects that should ignore shadows.
bool8 m_pbIgnoreShadows[LOS_1D_SIZE]; // Table of megas that are always seen regardless of shadows.
px3DRealPoint m_oImpactPoint; // Holds impact point from last call to ObjectToObject().
- _barrier_logic_value m_eImpactType; // Holds type of impact from last call to ObjectToObject().
+ eBarrierLogicValue m_eImpactType; // Holds type of impact from last call to ObjectToObject().
bool8 m_bSwitchedOn; // Flag that allows LOS processing to be suspended.
bool8 m_bFailingOnHeight; // Debug flag that gets set when a barrier height check fails.
bool8 m_bHandleShadows; // Turns shadow handling on/off.
diff --git a/engines/icb/object_structs.h b/engines/icb/object_structs.h
index 8863da65399..11757b6b1d3 100644
--- a/engines/icb/object_structs.h
+++ b/engines/icb/object_structs.h
@@ -202,7 +202,7 @@ enum CameraStateEnum { OFF_CAMERA = 0x0, ON_CAMERA = 0x1 };
class _mega { // mega logic specific
public:
- _parent_box *cur_parent; // our owner parent box
+ ParentBox *cur_parent; // our owner parent box
uint32 par_number; // for players abar list update
uint32 cur_slice; // for speedups
diff --git a/engines/icb/prim_route_builder.cpp b/engines/icb/prim_route_builder.cpp
index a98dffde0f9..b05a4dd8109 100644
--- a/engines/icb/prim_route_builder.cpp
+++ b/engines/icb/prim_route_builder.cpp
@@ -47,14 +47,14 @@ void _prim_route_builder::Reset_barrier_list() {
total_points = 0;
}
-void _prim_route_builder::Add_barrier(_route_barrier *new_barrier) {
- barrier_list[total_points].x = new_barrier->x1();
- barrier_list[total_points++].z = new_barrier->z1();
- barrier_list[total_points].x = new_barrier->x2();
- barrier_list[total_points++].z = new_barrier->z2();
+void _prim_route_builder::Add_barrier(RouteBarrier *new_barrier) {
+ barrier_list[total_points].x = new_barrier->m_x1;
+ barrier_list[total_points++].z = new_barrier->m_z1;
+ barrier_list[total_points].x = new_barrier->m_x2;
+ barrier_list[total_points++].z = new_barrier->m_z2;
if (!ExtrapolateLine(&barrier_list[total_points - 2], &barrier_list[total_points - 1], &barrier_list[total_points - 2], &barrier_list[total_points - 1], extrap_size))
- Fatal_error("extrapolate line failed on line %3.2f %3.2f %3.2f %3.2f", new_barrier->x1(), new_barrier->z1(), new_barrier->x2(), new_barrier->z2());
+ Fatal_error("extrapolate line failed on line %3.2f %3.2f %3.2f %3.2f", new_barrier->m_x1, new_barrier->m_z1, new_barrier->m_x2, new_barrier->m_z2);
assert(total_points < MAX_barriers);
}
diff --git a/engines/icb/prim_route_builder.h b/engines/icb/prim_route_builder.h
index df191301ec5..3378cc177ac 100644
--- a/engines/icb/prim_route_builder.h
+++ b/engines/icb/prim_route_builder.h
@@ -47,7 +47,7 @@ class _prim_route_builder {
public:
void Reset_barrier_list();
- void Add_barrier(_route_barrier *new_barrier);
+ void Add_barrier(RouteBarrier *new_barrier);
_route_stat Calc_route(PXreal startx, PXreal startz, PXreal endx, PXreal endz); // does extraping
diff --git a/engines/icb/remora.cpp b/engines/icb/remora.cpp
index fd4bdba93e8..7134a4cdc79 100644
--- a/engines/icb/remora.cpp
+++ b/engines/icb/remora.cpp
@@ -899,7 +899,7 @@ void _remora::SetCommonActivateInfo(RemoraMode eMode) {
uint32 i, j;
_logic *pPlayerObject;
LinkedDataFile *pSlices;
- _barrier_slice *pSlice;
+ BarrierSlice *pSlice;
int32 nSlice;
uint32 nNumSlices;
bool8 bInFloorRange;
@@ -936,7 +936,7 @@ void _remora::SetCommonActivateInfo(RemoraMode eMode) {
for (i = 0; i < nNumSlices; ++i) {
// Get the slice.
- pSlice = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(pSlices, i);
+ pSlice = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(pSlices, i);
// See if the player's feet are in this slice.
if ((m_nPlayerY >= pSlice->bottom) && (m_nPlayerY < pSlice->top))
@@ -954,7 +954,7 @@ void _remora::SetCommonActivateInfo(RemoraMode eMode) {
bInFloorRange = TRUE8;
for (j = m_pFloorRanges[i].s_nLower; j <= m_pFloorRanges[i].s_nUpper; ++j) {
- m_pSlices[m_nNumCurrentFloorRanges] = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(pSlices, j);
+ m_pSlices[m_nNumCurrentFloorRanges] = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(pSlices, j);
m_pnSlices[m_nNumCurrentFloorRanges] = j;
++m_nNumCurrentFloorRanges;
}
@@ -966,7 +966,7 @@ void _remora::SetCommonActivateInfo(RemoraMode eMode) {
// If we didn't set a floor range then we must set a single floor slice.
if (!bInFloorRange) {
// Only one slice required to be displayed.
- m_pSlices[0] = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(pSlices, nSlice);
+ m_pSlices[0] = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(pSlices, nSlice);
m_pnSlices[0] = nSlice;
m_nNumCurrentFloorRanges = 1;
}
diff --git a/engines/icb/remora.h b/engines/icb/remora.h
index 5df05700092..4f526755608 100644
--- a/engines/icb/remora.h
+++ b/engines/icb/remora.h
@@ -326,7 +326,7 @@ private:
uint32 m_nCurrentZoom; // 128 = scale of 1.0, 1 = x(1/128), 512 = scale of x4
uint32 m_nMinZoom; // Minimum zoom level allowed for the Remora.
uint32 m_nMaxZoom; // Maximum zoom level allowed for the Remora.
- _barrier_slice *m_pSlices[REMORA_MAX_INCLUDED_SLICES]; // Slices of barriers for player's current height.
+ BarrierSlice *m_pSlices[REMORA_MAX_INCLUDED_SLICES]; // Slices of barriers for player's current height.
uint32 m_pnSlices[REMORA_MAX_INCLUDED_SLICES]; // Index of slice player is on.
int32 m_nIncludedCeiling; // Top coordinate of things to include in scan modes.
int32 m_nIncludedFloor; // Bottom coordinate of things to include in scan modes.
diff --git a/engines/icb/remora_pc.cpp b/engines/icb/remora_pc.cpp
index 8b8e8ea803f..a73d6cff243 100644
--- a/engines/icb/remora_pc.cpp
+++ b/engines/icb/remora_pc.cpp
@@ -570,12 +570,12 @@ void _remora::DrawStaticBarriers(_rgb oLineColour) const {
uint32 i, j, k;
float fX1, fZ1, fX2, fZ2;
int32 nX1, nZ1, nX2, nZ2;
- _barrier_cube *pBarrierCube;
- _barrier_slice *pSlice;
+ BarrierCube *pBarrierCube;
+ BarrierSlice *pSlice;
uint32 *pBarrierArray;
uint32 nBarrierCubeOffset;
uint32 nBarrierIndex;
- _route_barrier *pBarrier;
+ RouteBarrier *pBarrier;
PXTRY
@@ -588,7 +588,7 @@ void _remora::DrawStaticBarriers(_rgb oLineColour) const {
for (j = 0; j < pSlice->num_cubes; ++j) {
// Get to the barriers for this cube.
nBarrierCubeOffset = pSlice->offset_cubes[j];
- pBarrierCube = (_barrier_cube *)((uint8 *)pSlice + nBarrierCubeOffset);
+ pBarrierCube = (BarrierCube *)((uint8 *)pSlice + nBarrierCubeOffset);
pBarrierArray = (uint32 *)((uint8 *)pSlice + pBarrierCube->barriers);
// Draw the barriers for this cube.
@@ -600,10 +600,10 @@ void _remora::DrawStaticBarriers(_rgb oLineColour) const {
pBarrier = MS->session_barriers->Fetch_barrier(nBarrierIndex);
// Set up the vector, the player relative bit has been done in the translation_matrix setting up
- fX1 = pBarrier->x1();
- fZ1 = pBarrier->z1();
- fX2 = pBarrier->x2();
- fZ2 = pBarrier->z2();
+ fX1 = pBarrier->m_x1;
+ fZ1 = pBarrier->m_z1;
+ fX2 = pBarrier->m_x2;
+ fZ2 = pBarrier->m_z2;
GameToRemora(fX1, fZ1);
GameToRemora(fX2, fZ2);
@@ -631,7 +631,7 @@ void _remora::DrawAnimatingBarriers(_rgb oLineColour) const {
float fX1, fZ1, fX2, fZ2;
int32 nX1, nZ1, nX2, nZ2;
uint32 nBarrierIndex;
- _route_barrier *pBarrier;
+ RouteBarrier *pBarrier;
uint32 nPropID;
uint32 nPropState;
uint32 nBarriersPerState;
@@ -672,10 +672,10 @@ void _remora::DrawAnimatingBarriers(_rgb oLineColour) const {
pBarrier = MS->session_barriers->Fetch_barrier(*(pnBarriers++));
// Set up the vector, the player relative bit has been done in the translation_matrix setting up
- fX1 = pBarrier->x1();
- fZ1 = pBarrier->z1();
- fX2 = pBarrier->x2();
- fZ2 = pBarrier->z2();
+ fX1 = pBarrier->m_x1;
+ fZ1 = pBarrier->m_z1;
+ fX2 = pBarrier->m_x2;
+ fZ2 = pBarrier->m_z2;
GameToRemora(fX1, fZ1);
GameToRemora(fX2, fZ2);
diff --git a/engines/icb/session.h b/engines/icb/session.h
index 0dd333805e7..4714b32073d 100644
--- a/engines/icb/session.h
+++ b/engines/icb/session.h
@@ -152,7 +152,7 @@ typedef struct {
#define MAX_stairs 32
typedef struct {
- _route_barrier bar;
+ RouteBarrier bar;
PXfloat pan, pan_ref, x, z;
uint8 units;
@@ -772,7 +772,7 @@ public:
PXfloat normalAngle;
__barrier_result Check_barrier_bump_and_bounce(PXreal newx, PXreal newy, PXreal newz, PXreal oldx, PXreal oldy, PXreal oldz, bool8 player);
- __barrier_result Check_this_barrier(_route_barrier *bar, PXreal newx, PXreal newz, PXreal oldx, PXreal oldz, PXreal bar_close, int32 *ignore);
+ __barrier_result Check_this_barrier(RouteBarrier *bar, PXreal newx, PXreal newz, PXreal oldx, PXreal oldz, PXreal bar_close, int32 *ignore);
void Prepare_megas_route_barriers(bool8 player);
void Prepare_megas_abarriers(uint32 slice_number, uint32 parent_number);
diff --git a/engines/icb/tracer.cpp b/engines/icb/tracer.cpp
index 6f63545776e..346e81f642e 100644
--- a/engines/icb/tracer.cpp
+++ b/engines/icb/tracer.cpp
@@ -40,9 +40,9 @@ _tracer *g_oTracer;
bool8 _tracer::Trace(const px3DRealPoint &oFrom, // IN: Point to plot from.
const px3DRealPoint &oTo, // IN: Point to plot to.
- _barrier_ray_type eRayType, // IN: The type of the ray being plotted.
+ eBarrierRayType eRayType, // IN: The type of the ray being plotted.
px3DRealPoint &oPointOfImpact, // OUT: The first point of impact.
- _barrier_logic_value /*eImpactType*/ // OUT: For interpretation by high-level logic.
+ eBarrierLogicValue /*eImpactType*/ // OUT: For interpretation by high-level logic.
) {
uint32 i;
uint32 nLoopCount;
@@ -55,8 +55,8 @@ bool8 _tracer::Trace(const px3DRealPoint &oFrom, // IN: Point to plot from
px2DRealLine oPlanRay, oPlanBarrier;
_bullet_cube oThisCube;
_XYZ_index oThisIndex;
- _barrier_logic_value eTempImpactType;
- const _route_barrier *pBarrier;
+ eBarrierLogicValue eTempImpactType;
+ const RouteBarrier *pBarrier;
bool8 bFinishInThisCube;
FaceID eCubeLeavingFace;
_floor *psFloor;
@@ -130,14 +130,14 @@ bool8 _tracer::Trace(const px3DRealPoint &oFrom, // IN: Point to plot from
// The intersection test is relatively expensive, so do the barrier type check
// first (eg. if we're firing light at a glass barrier, we know it can go through).
- eTempImpactType = IsBarrierTo(pBarrier->material(), eRayType);
+ eTempImpactType = IsBarrierTo(pBarrier->m_material, eRayType);
if (eTempImpactType != ALLOWS) {
// Right, this barrier doesn't allow this ray to pass, so we must check if it
// is actually in the path of the ray.
- oPlanBarrier.SetX1(pBarrier->x1());
- oPlanBarrier.SetY1(pBarrier->z1());
- oPlanBarrier.SetX2(pBarrier->x2());
- oPlanBarrier.SetY2(pBarrier->z2());
+ oPlanBarrier.SetX1(pBarrier->m_x1);
+ oPlanBarrier.SetY1(pBarrier->m_z1);
+ oPlanBarrier.SetX2(pBarrier->m_x2);
+ oPlanBarrier.SetY2(pBarrier->m_z2);
if (oPlanRay.Intersects(oPlanBarrier, o2DImpactPoint) == px2DRealLine::DO_INTERSECT) {
// We've found a barrier that the ray intersects with in the horizontal plane;
@@ -212,19 +212,19 @@ bool8 _tracer::Trace(const px3DRealPoint &oFrom, // IN: Point to plot from
void _tracer::GetBarriersForCube(const _XYZ_index &oCubeIndices, uint32 *oThisCubesBarriers, int32 &nNumBarriers, int32 nExtraSliceIndex) const {
int32 i;
- _barrier_slice *pSlice;
- _barrier_cube *pBarrierCube;
+ BarrierSlice *pSlice;
+ BarrierCube *pBarrierCube;
uint32 nBarrierCubeOffset;
uint32 nActualIndex;
uint32 *pBarrierArray;
// Get to the right slice.
- pSlice = (_barrier_slice *)LinkedDataObject::Fetch_item_by_number(m_pyLOSMemFile, oCubeIndices.nY);
+ pSlice = (BarrierSlice *)LinkedDataObject::Fetch_item_by_number(m_pyLOSMemFile, oCubeIndices.nY);
// Get to the right cube entry.
nActualIndex = oCubeIndices.nZ * pSlice->row_length + oCubeIndices.nX;
nBarrierCubeOffset = pSlice->offset_cubes[nActualIndex];
- pBarrierCube = (_barrier_cube *)((uint8 *)pSlice + nBarrierCubeOffset);
+ pBarrierCube = (BarrierCube *)((uint8 *)pSlice + nBarrierCubeOffset);
pBarrierArray = (uint32 *)((uint8 *)pSlice + pBarrierCube->barriers);
// Add the barriers to the array we're returning.
@@ -418,7 +418,7 @@ px3DRealPoint _tracer::CalculateRayIntersectionWithCubeWall(const px3DRealPoint
return (oNewPoint);
}
-bool8 _tracer::CheckRayHeightAgainstBarrier(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, const _route_barrier *pBarrier, px3DRealPoint &o3DImpactPoint) const {
+bool8 _tracer::CheckRayHeightAgainstBarrier(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, const RouteBarrier *pBarrier, px3DRealPoint &o3DImpactPoint) const {
PXreal l_fXDiff, l_fZDiff, l_fYDiff;
PXfloat fImpactDistance;
PXreal fTotalDistance;
@@ -440,7 +440,7 @@ bool8 _tracer::CheckRayHeightAgainstBarrier(const px3DRealPoint &oFrom, const px
fImpactY = oFrom.GetY() + (fImpactDistance * l_fYDiff) / fTotalDistance;
// Check this z against the barrier to see if we have impact.
- if ((fImpactY >= pBarrier->bottom()) && (fImpactY <= pBarrier->top())) {
+ if ((fImpactY >= pBarrier->m_bottom) && (fImpactY <= pBarrier->m_top)) {
o3DImpactPoint.SetY(fImpactY);
return (TRUE8);
} else {
diff --git a/engines/icb/tracer.h b/engines/icb/tracer.h
index 330a5477100..53c34b12d58 100644
--- a/engines/icb/tracer.h
+++ b/engines/icb/tracer.h
@@ -48,7 +48,7 @@ public:
virtual inline ~_tracer() { ; }
// This checks a line through game-world space and returns the point of its first impact.
- bool8 Trace(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, _barrier_ray_type eRayType, px3DRealPoint &oImpact, _barrier_logic_value eImpactType);
+ bool8 Trace(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, eBarrierRayType eRayType, px3DRealPoint &oImpact, eBarrierLogicValue eImpactType);
// Call this before using the tracer, to point it at its barriers.
void SetBarrierPointer(LinkedDataFile *pyBarriers) { m_pyBarrierMemFile = pyBarriers; }
@@ -75,22 +75,22 @@ private:
px3DRealPoint CalculateEntryToNextCube(const px3DRealPoint &oCurrentPoint, const px3DRealPoint &oTo, const _bullet_cube &oThisCube, FaceID &eCubeLeavingFace) const;
- bool8 CheckRayHeightAgainstBarrier(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, const _route_barrier *pBarrier, px3DRealPoint &o3DImpactPoint) const;
+ bool8 CheckRayHeightAgainstBarrier(const px3DRealPoint &oFrom, const px3DRealPoint &oTo, const RouteBarrier *pBarrier, px3DRealPoint &o3DImpactPoint) const;
uint32 FindClosest(const px3DRealPoint &oFrom, px3DRealPoint *oImpactList, uint32 nNumImpacts) const;
px3DRealPoint CalculateRayIntersectionWithCubeWall(const px3DRealPoint &oCurrentPoint, const px3DRealPoint &oTo, const _bullet_cube &oThisCube, FaceID eLeavingFace) const;
- inline const _route_barrier *GetBarrier(uint32 i) const;
+ inline const RouteBarrier *GetBarrier(uint32 i) const;
};
-inline const _route_barrier *_tracer::GetBarrier(uint32 i) const {
- _route_barrier *pBarriers;
+inline const RouteBarrier *_tracer::GetBarrier(uint32 i) const {
+ RouteBarrier *pBarriers;
if (!m_pyBarrierMemFile)
Fatal_error("No barrier file in _tracer::GetBarrier()");
- pBarriers = (_route_barrier *)LinkedDataObject::Fetch_item_by_name(m_pyBarrierMemFile, "Data");
+ pBarriers = (RouteBarrier *)LinkedDataObject::Fetch_item_by_name(m_pyBarrierMemFile, "Data");
return &(pBarriers[i]);
}
More information about the Scummvm-git-logs
mailing list