forked from mirror/OpenTTD
(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:
17
ship_gui.c
17
ship_gui.c
@@ -895,7 +895,6 @@ static void MakeSortedShiptList(byte owner)
|
||||
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2
|
||||
for (i = &_num_ship_sort[1]; i != endof(_num_ship_sort); i++) {*i += *(i-1);}
|
||||
|
||||
|
||||
// sort by owner, then only subsort the requested owner-vehicles
|
||||
qsort(_ship_sort, n, sizeof(_ship_sort[0]), GeneralOwnerSorter);
|
||||
|
||||
@@ -967,6 +966,8 @@ static void PlayerShipsWndProc(Window *w, WindowEvent *e)
|
||||
StringID str;
|
||||
v = DEREF_VEHICLE(_ship_sort[i].index);
|
||||
|
||||
assert(v->type == VEH_Ship && v->owner == window_number);
|
||||
|
||||
DrawShipImage(v, x + 19, y + 6, INVALID_VEHICLE);
|
||||
DrawVehicleProfitButton(v, x, y+13);
|
||||
|
||||
@@ -1008,22 +1009,22 @@ static void PlayerShipsWndProc(Window *w, WindowEvent *e)
|
||||
ShowDropDownMenu(w, _vehicle_sort_listing, _ship_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_BIG;
|
||||
uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_BIG;
|
||||
|
||||
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_ship_sort[owner - 1]; // first element in list
|
||||
const byte owner = (byte)w->window_number;
|
||||
Vehicle *v;
|
||||
id_v += (owner == 0) ? 0 : _num_ship_sort[owner - 1]; // first element in list
|
||||
|
||||
if (id_v + adder >= _num_ship_sort[owner]) { return;} // click out of vehicle bound
|
||||
if (id_v >= _num_ship_sort[owner]) { return;} // click out of vehicle bound
|
||||
|
||||
v = DEREF_VEHICLE(_ship_sort[adder+id_v].index); // add the offset id_x to that
|
||||
v = DEREF_VEHICLE(_ship_sort[id_v].index); // add the offset id_x to that
|
||||
|
||||
assert(v->type == VEH_Ship && v->owner == owner && v->owner == _ship_sort[adder+id_v].owner);
|
||||
assert(v->type == VEH_Ship && v->owner == owner);
|
||||
|
||||
ShowShipViewWindow(v);
|
||||
}
|
||||
|
Reference in New Issue
Block a user