changeset 4456:374f1bfde037 draft

(svn r6239) -Code cleanup: cleaned up PlayerVehWndProc code to delete an empty shared orders list is now much simpler cleaned up the code to handle button clicks fixed an assert if widget 9 was pressed on a list with vehicles for another company
author bjarni <bjarni@openttd.org>
date Wed, 30 Aug 2006 16:32:00 +0000
parents 9ccf301ed63b
children 9b4d102dc829
files aircraft_gui.c roadveh_gui.c ship_gui.c train_gui.c vehicle_gui.c
diffstat 5 files changed, 31 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/aircraft_gui.c
+++ b/aircraft_gui.c
@@ -975,7 +975,7 @@
 }
 
 
-const Widget _player_aircraft_widgets[] = {
+static const Widget _player_aircraft_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW },
 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   247,     0,    13, STR_A009_AIRCRAFT,     STR_018C_WINDOW_TITLE_DRAG_THIS },
 {  WWT_STICKYBOX,     RESIZE_LR,    14,   248,   259,     0,    13, 0x0,                   STR_STICKY_BUTTON },
@@ -1028,7 +1028,7 @@
 	Window *w;
 
 	if (show_shared) {
-		w = AllocateWindowDescFront(&_player_aircraft_desc, (order << 16) | (VEH_Aircraft << 11) | VLW_SHARED_ORDERS);
+		w = AllocateWindowDescFront(&_player_aircraft_desc, (order << 16) | (VEH_Aircraft << 11) | VLW_SHARED_ORDERS | player);
 	} else {
 		uint16 VLW_flag = (station == INVALID_STATION) ? VLW_STANDARD : VLW_STATION_LIST;
 		if (player == _local_player) {
--- a/roadveh_gui.c
+++ b/roadveh_gui.c
@@ -912,7 +912,7 @@
 	}
 }
 
-const Widget _player_roadveh_widgets[] = {
+static const Widget _player_roadveh_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   247,     0,    13, STR_9001_ROAD_VEHICLES, STR_018C_WINDOW_TITLE_DRAG_THIS},
 {  WWT_STICKYBOX,     RESIZE_LR,    14,   248,   259,     0,    13, 0x0,                    STR_STICKY_BUTTON},
@@ -967,7 +967,7 @@
 	Window *w;
 
 	if (show_shared) {
-		w = AllocateWindowDescFront(&_player_roadveh_desc, (order << 16) | (VEH_Road << 11) | VLW_SHARED_ORDERS);
+		w = AllocateWindowDescFront(&_player_roadveh_desc, (order << 16) | (VEH_Road << 11) | VLW_SHARED_ORDERS | player);
 	} else {
 		uint16 VLW_flag = (station == INVALID_STATION) ? VLW_STANDARD : VLW_STATION_LIST;
 		if (player == _local_player) {
--- a/ship_gui.c
+++ b/ship_gui.c
@@ -916,7 +916,7 @@
 }
 
 
-const Widget _player_ships_widgets[] = {
+static const Widget _player_ships_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,             STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   247,     0,    13, STR_9805_SHIPS,       STR_018C_WINDOW_TITLE_DRAG_THIS},
 {  WWT_STICKYBOX,     RESIZE_LR,    14,   248,   259,     0,    13, 0x0,                  STR_STICKY_BUTTON},
@@ -970,7 +970,7 @@
 	Window *w;
 
 	if (show_shared) {
-		w = AllocateWindowDescFront(&_player_ships_desc, (order << 16) | (VEH_Ship << 11) | VLW_SHARED_ORDERS);
+		w = AllocateWindowDescFront(&_player_ships_desc, (order << 16) | (VEH_Ship << 11) | VLW_SHARED_ORDERS | player);
 	} else {
 		uint16 VLW_flag = (station == INVALID_STATION) ? VLW_STANDARD : VLW_STATION_LIST;
 		if (player == _local_player) {
--- a/train_gui.c
+++ b/train_gui.c
@@ -1372,7 +1372,7 @@
 	WP(w,traindetails_d).tab = 0;
 }
 
-const Widget _player_trains_widgets[] = {
+static const Widget _player_trains_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   312,     0,    13, STR_881B_TRAINS,       STR_018C_WINDOW_TITLE_DRAG_THIS},
 {  WWT_STICKYBOX,     RESIZE_LR,    14,   313,   324,     0,    13, 0x0,                   STR_STICKY_BUTTON},
@@ -1425,7 +1425,7 @@
 	Window *w;
 
 	if (show_shared) {
-		w = AllocateWindowDescFront(&_player_trains_desc, (order << 16) | (VEH_Train << 11) | VLW_SHARED_ORDERS);
+		w = AllocateWindowDescFront(&_player_trains_desc, (order << 16) | (VEH_Train << 11) | VLW_SHARED_ORDERS | player);
 	} else {
 		uint16 VLW_flag = (station == INVALID_STATION) ? VLW_STANDARD : VLW_STATION_LIST;
 		if (player == _local_player) {
--- a/vehicle_gui.c
+++ b/vehicle_gui.c
@@ -1202,11 +1202,6 @@
 	}
 }
 
-extern const Widget _player_ships_widgets[];
-extern const Widget _player_aircraft_widgets[];
-extern const Widget _player_roadveh_widgets[];
-extern const Widget _player_trains_widgets[];
-
 /*
  * bitmask for w->window_number
  * 0-7 PlayerID (owner)
@@ -1247,13 +1242,7 @@
 					if (vl->list_length == 0) {
 						/* The list is empty, so the last vehicle is sold or crashed */
 						/* Delete the window because the order is now not in use anymore */
-						switch (vehicle_type) {
-							case VEH_Train:    DeleteWindowById(WC_TRAINS_LIST,   w->window_number); break;
-							case VEH_Road:     DeleteWindowById(WC_ROADVEH_LIST,  w->window_number); break;
-							case VEH_Ship:     DeleteWindowById(WC_SHIPS_LIST,    w->window_number); break;
-							case VEH_Aircraft: DeleteWindowById(WC_AIRCRAFT_LIST, w->window_number); break;
-							default: NOT_REACHED(); break;
-						}
+						DeleteWindow(w);
 						return;
 					}
 					SetDParam(0, w->vscroll.count);
@@ -1403,48 +1392,36 @@
 					}
 				} break;
 
-				case 9: { /* Build new Vehicle */
-					const uint16 window_type = w->window_number & VLW_FLAGS;
-
-					if (window_type == VLW_SHARED_ORDERS) {
-						const Vehicle *v;
-						assert(vl->list_length != 0);
-						v = vl->sort_list[0];
-						DoCommandP(v->tile, v->index, _ctrl_pressed ? 3 : 2, NULL, CMD_SEND_TO_DEPOT(vehicle_type));
-						break;
-					}
+				case 9: /* Left button */
+					if (GB(w->window_number, 0, 8) /* OwnerID */ != _local_player) break;
 
-					switch (vehicle_type) {
-						case VEH_Train:
-							assert(IsWindowOfPrototype(w, _player_trains_widgets));
-							ShowBuildTrainWindow(0);
-							break;
-						case VEH_Road:
-							assert(IsWindowOfPrototype(w, _player_roadveh_widgets));
-							ShowBuildRoadVehWindow(0);
+					switch (w->window_number & VLW_FLAGS) {
+						case VLW_SHARED_ORDERS: {
+							/* Send to depot */
+							const Vehicle *v;
+							assert(vl->list_length != 0);
+							v = vl->sort_list[0];
+							DoCommandP(v->tile, v->index, _ctrl_pressed ? 3 : 2, NULL, CMD_SEND_TO_DEPOT(vehicle_type));
 							break;
-						case VEH_Ship:
-							assert(IsWindowOfPrototype(w, _player_ships_widgets));
-							ShowBuildShipWindow(0);
-							break;
-						case VEH_Aircraft:
-							assert(IsWindowOfPrototype(w, _player_aircraft_widgets));
-							ShowBuildAircraftWindow(0);
-							break;
+						}
+						case VLW_STANDARD:
+						case VLW_STATION_LIST:
+							/* Build new Vehicle */
+							switch (vehicle_type) {
+								case VEH_Train:	   ShowBuildTrainWindow(0);    break;
+								case VEH_Road:     ShowBuildRoadVehWindow(0);  break;
+								case VEH_Ship:     ShowBuildShipWindow(0);     break;
+								case VEH_Aircraft: ShowBuildAircraftWindow(0); break;
+								default: NOT_REACHED(); break;
+							}
+						break;
 						default: NOT_REACHED(); break;
 					}
 					break;
-				}
 
-				case 10: {
-					if (vehicle_type == VEH_Train    && !IsWindowOfPrototype(w, _player_trains_widgets))   break;
-					if (vehicle_type == VEH_Road     && !IsWindowOfPrototype(w, _player_roadveh_widgets))  break;
-					if (vehicle_type == VEH_Ship     && !IsWindowOfPrototype(w, _player_ships_widgets))    break;
-					if (vehicle_type == VEH_Aircraft && !IsWindowOfPrototype(w, _player_aircraft_widgets)) break;
-
+				case 10: /* Right button */
 					ShowReplaceVehicleWindow(vehicle_type);
 					break;
-				}
 			}
 		}	break;