Merge the huge loops in erase_out_specials

This commit is contained in:
2014-12-10 23:46:01 -05:00
parent e4a4ed0427
commit 7a7b7f27c3

View File

@@ -1249,50 +1249,38 @@ void erase_out_specials()
short sd1,sd2;
location where;
for (k = 0; k < 2; k++)
for (l = 0; l < 2; l++)
if (quadrant_legal(k,l) == true) {
for (m = 0; m < 8; m++)
if ((univ.out.outdoors[k][l].exit_dests[m] >= 0) &&
(univ.out.outdoors[k][l].exit_locs[m].x == minmax(0,47,univ.out.outdoors[k][l].exit_locs[m].x)) &&
(univ.out.outdoors[k][l].exit_locs[m].y == minmax(0,47,univ.out.outdoors[k][l].exit_locs[m].y))) {
if (univ.party.can_find_town[univ.out.outdoors[k][l].exit_dests[m]] == 0) {
univ.out[48 * k + univ.out.outdoors[k][l].exit_locs[m].x][48 * l + univ.out.outdoors[k][l].exit_locs[m].y] =
scenario.ter_types[univ.out.outdoors[k][l].terrain[univ.out.outdoors[k][l].exit_locs[m].x][univ.out.outdoors[k][l].exit_locs[m].y]].flag1.u;
//exit_g_type[univ.out[48 * k + univ.out.outdoors[k][l].exit_locs[m].x][48 * l + univ.out.outdoors[k][l].exit_locs[m].y] - 217];
for (short i = 0; i < 2; i++)
for (short j = 0; j < 2; j++)
if (quadrant_legal(i,j) == true) {
for(short k = 0; k < 18; k++) {
if(i < 8 && univ.out.outdoors[i][j].exit_dests[k] >= 0 &&
(univ.out.outdoors[i][j].exit_locs[k].x == minmax(0,47,univ.out.outdoors[i][j].exit_locs[k].x)) &&
(univ.out.outdoors[i][j].exit_locs[k].y == minmax(0,47,univ.out.outdoors[i][j].exit_locs[k].y))) {
if (univ.party.can_find_town[univ.out.outdoors[i][j].exit_dests[k]] == 0) {
univ.out[48 * i + univ.out.outdoors[i][j].exit_locs[k].x][48 * j + univ.out.outdoors[i][j].exit_locs[k].y] =
scenario.ter_types[univ.out.outdoors[i][j].terrain[univ.out.outdoors[i][j].exit_locs[k].x][univ.out.outdoors[i][j].exit_locs[k].y]].flag1.u;
}
else if (univ.party.can_find_town[univ.out.outdoors[k][l].exit_dests[m]] > 0) {
univ.out[48 * k + univ.out.outdoors[k][l].exit_locs[m].x][48 * l + univ.out.outdoors[k][l].exit_locs[m].y] =
univ.out.outdoors[k][l].terrain[univ.out.outdoors[k][l].exit_locs[m].x][univ.out.outdoors[k][l].exit_locs[m].y];
else if (univ.party.can_find_town[univ.out.outdoors[i][j].exit_dests[k]] > 0) {
univ.out[48 * i + univ.out.outdoors[i][j].exit_locs[k].x][48 * j + univ.out.outdoors[i][j].exit_locs[k].y] =
univ.out.outdoors[i][j].terrain[univ.out.outdoors[i][j].exit_locs[k].x][univ.out.outdoors[i][j].exit_locs[k].y];
}
}
// TODO: Next four lines aren't needed, but first would need to change loop variables
}
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
if (quadrant_legal(i,j) == true) {
for (k = 0; k < 18; k++) {
//if (univ.out.outdoors[i][j].special_id[k] >= 0) {
if (univ.out.outdoors[i][j].special_id[k] < 0) continue; // TODO: Is this needed? Seems to be important, so why was it commented out?
out_num = scenario.out_width * (univ.party.outdoor_corner.y + j) + univ.party.outdoor_corner.x + i;
sn = univ.out.outdoors[i][j].specials[univ.out.outdoors[i][j].special_id[k]];
sd1 = sn.sd1; sd2 = sn.sd2;
if ((sd_legit(sd1,sd2) == true) && (PSD[sd1][sd2] == 250)) {
where = univ.out.outdoors[i][j].special_locs[k];
if (where.x != 100) {
if ((where.x > 48) || (where.y > 48)
|| (where.x < 0) || (where.y < 0)) {
// TODO: Play an error sound here
beep();
add_string_to_buf("Outdoor section corrupt. Problem fixed.");
//univ.out.outdoors[i][j].special_id[k] = -1;
univ.out.outdoors[i][j].special_locs[k].x = 100;
univ.out.outdoors[i][j].special_id[k] = -1; // TODO: Again, was there a reason for commenting this out?
}
// TODO: I'm not quite sure if this should be within this block
univ.out.outdoors[i][j].special_spot[where.x][where.y] = false;
}
}
}
}