(svn r175) -Fix: [1023771] inconsistent/missing stations in station list. Forgot to change owner-sort after changing function.

-Codechange: some more asserts to vehicle-sorts to quickly find any possible problems.
This commit is contained in:
darkvater
2004-09-07 19:01:06 +00:00
parent 51d928a478
commit bf9c8068be
6 changed files with 114 additions and 83 deletions

View File

@@ -1164,7 +1164,6 @@ static void MakeSortedTrainList(byte owner)
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2
for (i = &_num_train_sort[1]; i != endof(_num_train_sort); i++) {*i += *(i-1);}
// sort by owner, then only subsort the requested owner-vehicles
qsort(_train_sort, n, sizeof(_train_sort[0]), GeneralOwnerSorter);
@@ -1236,6 +1235,8 @@ static void PlayerTrainsWndProc(Window *w, WindowEvent *e)
StringID str;
v = DEREF_VEHICLE(_train_sort[i].index);
assert(v->type == VEH_Train && v->subtype == 0 && v->owner == window_number);
DrawTrainImage(v, x + 21, y + 6, 10, 0, INVALID_VEHICLE);
DrawVehicleProfitButton(v, x, y+13);
@@ -1274,22 +1275,22 @@ static void PlayerTrainsWndProc(Window *w, WindowEvent *e)
ShowDropDownMenu(w, _vehicle_sort_listing, _train_sort_type[(byte)w->window_number], 4, 0); // do it for widget 4
return;
case 6: { /* Matrix to show vehicles */
int id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_SMALL;
uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_SMALL;
if ((uint)id_v >= w->vscroll.cap) { return;} // click out of bounds
if (id_v >= w->vscroll.cap) { return;} // click out of bounds
id_v += w->vscroll.pos;
{
byte owner = (byte)w->window_number;
uint16 adder = (owner == 0) ? 0 : _num_train_sort[owner - 1]; // first element in list
const byte owner = (byte)w->window_number;
Vehicle *v;
id_v += (owner == 0) ? 0 : _num_train_sort[owner - 1]; // first element in list
if (id_v + adder >= _num_train_sort[owner]) { return;} // click out of vehicle bound
if (id_v >= _num_train_sort[owner]) { return;} // click out of vehicle bound
v = DEREF_VEHICLE(_train_sort[adder+id_v].index); // add the offset id_x to that
v = DEREF_VEHICLE(_train_sort[id_v].index); // add the offset id_x to that
assert(v->type == VEH_Train && v->subtype == 0 && v->owner == owner && v->owner == _train_sort[adder+id_v].owner);
assert(v->type == VEH_Train && v->subtype == 0 && v->owner == owner);
ShowTrainViewWindow(v);
}