(svn r6350) -Codechange: moved some setup stuff into WE_CREATE in PlayerVehWndProc()
authorbjarni
Sat, 02 Sep 2006 21:16:46 +0000
changeset 4524 ae5cb0a89364
parent 4523 c810556dddda
child 4525 d12168a85134
(svn r6350) -Codechange: moved some setup stuff into WE_CREATE in PlayerVehWndProc()
This is possible now that the window number is known when running WE_CREATE and it's a nicer solution
aircraft_gui.c
roadveh_gui.c
ship_gui.c
train_gui.c
vehicle_gui.c
--- a/aircraft_gui.c	Sat Sep 02 20:35:08 2006 +0000
+++ b/aircraft_gui.c	Sat Sep 02 21:16:46 2006 +0000
@@ -1039,11 +1039,6 @@
 	}
 
 	if (w != NULL) {
-		vehiclelist_d *vl = &WP(w, vehiclelist_d);
-		vl->flags = VL_REBUILD | (_sorting.aircraft.order << (VL_DESC - 1));
-		vl->sort_type = _sorting.aircraft.criteria;
-
-		w->caption_color = player;
 		w->vscroll.cap = 4;
 		w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
 		w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG;
--- a/roadveh_gui.c	Sat Sep 02 20:35:08 2006 +0000
+++ b/roadveh_gui.c	Sat Sep 02 21:16:46 2006 +0000
@@ -968,11 +968,6 @@
 	}
 
 	if (w != NULL) {
-		vehiclelist_d *vl = &WP(w, vehiclelist_d);
-		vl->flags = VL_REBUILD | (_sorting.roadveh.order << (VL_DESC - 1));
-		vl->sort_type = _sorting.roadveh.criteria;
-
-		w->caption_color = player;
 		w->vscroll.cap = 7; // maximum number of vehicles shown
 		w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
 		w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
--- a/ship_gui.c	Sat Sep 02 20:35:08 2006 +0000
+++ b/ship_gui.c	Sat Sep 02 21:16:46 2006 +0000
@@ -981,11 +981,6 @@
 	}
 
 	if (w != NULL) {
-		vehiclelist_d *vl = &WP(w, vehiclelist_d);
-		vl->flags = VL_REBUILD | (_sorting.ship.order << (VL_DESC - 1));
-		vl->sort_type = _sorting.ship.criteria;
-
-		w->caption_color = player;
 		w->vscroll.cap = 4;
 		w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
 		w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG;
--- a/train_gui.c	Sat Sep 02 20:35:08 2006 +0000
+++ b/train_gui.c	Sat Sep 02 21:16:46 2006 +0000
@@ -1437,11 +1437,6 @@
 	}
 
 	if (w != NULL) {
-		vehiclelist_d *vl = &WP(w, vehiclelist_d);
-		vl->flags = VL_REBUILD | (_sorting.train.order << (VL_DESC - 1));
-		vl->sort_type = _sorting.train.criteria;
-
-		w->caption_color = player;
 		w->hscroll.cap = 10 * 29;
 		w->vscroll.cap = 7; // maximum number of vehicles shown
 		w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
--- a/vehicle_gui.c	Sat Sep 02 20:35:08 2006 +0000
+++ b/vehicle_gui.c	Sat Sep 02 21:16:46 2006 +0000
@@ -1362,8 +1362,26 @@
 			break;
 
 		case WE_CREATE:
-			/* IMPORTANT: order and criteria needs to be set after the window is created, but before it's used */
-			/* w->window_number is not yet set at this point, so we lack info on what kind of vehicle we are dealing with */
+			w->caption_color = GB(w->window_number, 0, 8); // OwnerID is stored in the last 8 bits of the window number
+			switch (vehicle_type) {
+				case VEH_Train:
+					vl->flags = VL_REBUILD | (_sorting.train.order << (VL_DESC - 1));
+					vl->sort_type = _sorting.train.criteria;
+					break;
+				case VEH_Road:
+					vl->flags = VL_REBUILD | (_sorting.roadveh.order << (VL_DESC - 1));
+					vl->sort_type = _sorting.roadveh.criteria;
+					break;
+				case VEH_Ship:
+					vl->flags = VL_REBUILD | (_sorting.ship.order << (VL_DESC - 1));
+					vl->sort_type = _sorting.ship.criteria;
+					break;
+				case VEH_Aircraft:
+					vl->flags = VL_REBUILD | (_sorting.aircraft.order << (VL_DESC - 1));
+					vl->sort_type = _sorting.aircraft.criteria;
+					break;
+				default: NOT_REACHED(); break;
+			}
 			vl->sort_list = NULL;
 			vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;	// Set up resort timer
 			break;