build_vehicle_gui.c
author bjarni
Tue, 10 Oct 2006 15:46:03 +0000
changeset 4804 bfa7a5b5ad15
parent 4800 5afc1bfc7a85
child 4807 f03e16f22450
permissions -rw-r--r--
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
Now both names are checked against the cache (instead of just one of them) and we got rid of some global vars
4800
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     1
/* $Id$ */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     2
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     3
#include "stdafx.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     4
#include "openttd.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     5
#include "aircraft.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     6
#include "debug.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     7
#include "functions.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     8
#include "table/sprites.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
     9
#include "table/strings.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    10
#include "window.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    11
#include "gui.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    12
#include "vehicle.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    13
#include "gfx.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    14
#include "station.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    15
#include "command.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    16
#include "engine.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    17
#include "player.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    18
#include "depot.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    19
#include "airport.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    20
#include "vehicle_gui.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    21
#include "newgrf_engine.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    22
#include "date.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    23
#include "strings.h"
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    24
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    25
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    26
typedef enum BuildVehicleWidgets {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    27
	BUILD_VEHICLE_WIDGET_CLOSEBOX = 0,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    28
	BUILD_VEHICLE_WIDGET_CAPTION,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    29
	BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    30
	BUILD_VEHICLE_WIDGET_SORT_TEXT,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    31
	BUILD_VEHICLE_WIDGET_SORT_DROPDOWN,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    32
	BUILD_VEHICLE_WIDGET_LIST,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    33
	BUILD_VEHICLE_WIDGET_SCROLLBAR,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    34
	BUILD_VEHICLE_WIDGET_PANEL,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    35
	BUILD_VEHICLE_WIDGET_PLANES,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    36
	BUILD_VEHICLE_WIDGET_JETS,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    37
	BUILD_VEHICLE_WIDGET_HELICOPTERS,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    38
	BUILD_VEHICLE_WIDGET_BUILD,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    39
	BUILD_VEHICLE_WIDGET_RENAME,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    40
	BUILD_VEHICLE_WIDGET_RESIZE,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    41
} BuildVehicleWidget;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    42
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    43
static const Widget _build_vehicle_widgets[] = {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    44
	{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    45
	{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   239,     0,    13, STR_A005_NEW_AIRCRAFT,   STR_018C_WINDOW_TITLE_DRAG_THIS },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    46
	{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,    80,    14,    25, STR_SORT_BY,             STR_SORT_ORDER_TIP},
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    47
	{      WWT_PANEL,   RESIZE_NONE,    14,    81,   227,    14,    25, 0x0,                     STR_SORT_CRITERIA_TIP},
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    48
	{    WWT_TEXTBTN,   RESIZE_NONE,    14,   228,   239,    14,    25, STR_0225,                STR_SORT_CRITERIA_TIP},
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    49
	{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   227,    26,   121, 0x401,                   STR_A025_AIRCRAFT_SELECTION_LIST },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    50
	{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   228,   239,    26,   121, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    51
	{     WWT_IMGBTN,     RESIZE_TB,    14,     0,   239,   122,   193, 0x0,                     STR_NULL },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    52
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    53
	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,    79,   194,   205, STR_BLACK_PLANES,        STR_BUILD_PLANES_TIP },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    54
	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,    80,   159,   194,   205, STR_BLACK_JETS,          STR_BUILD_JETS_TIP },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    55
	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   160,   239,   194,   205, STR_BLACK_HELICOPTERS,   STR_BUILD_HELICOPTERS_TIP },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    56
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    57
	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   114,   206,   217, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    58
	{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   115,   227,   206,   217, STR_A037_RENAME,         STR_A038_RENAME_AIRCRAFT_TYPE },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    59
	{  WWT_RESIZEBOX,     RESIZE_TB,    14,   228,   239,   206,   217, 0x0,                     STR_RESIZE_BUTTON },
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    60
	{   WIDGETS_END},
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    61
};
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    62
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    63
static bool _internal_sort_order; // descending/ascending
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    64
static byte _last_sort_criteria = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    65
static bool _last_sort_order = false;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    66
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    67
typedef int CDECL VehicleSortListingTypeFunction(const void*, const void*);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    68
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    69
static int CDECL EngineNumberSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    70
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    71
	const EngineID va = *(const EngineID*)a;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    72
	const EngineID vb = *(const EngineID*)b;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    73
	int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    74
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    75
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    76
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    77
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    78
static int CDECL EngineIntroDateSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    79
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    80
	const int va = GetEngine(*(const EngineID*)a)->intro_date;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    81
	const int vb = GetEngine(*(const EngineID*)b)->intro_date;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    82
	const int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    83
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    84
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    85
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    86
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    87
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    88
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    89
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    90
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    91
static int CDECL EngineNameSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    92
{
4804
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
    93
	static EngineID last_engine[2] = { INVALID_ENGINE, INVALID_ENGINE };
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
    94
	static char     last_name[2][64] = { "\0", "\0" };
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
    95
4800
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    96
	const EngineID va = *(const EngineID*)a;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    97
	const EngineID vb = *(const EngineID*)b;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    98
	int r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
    99
4804
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   100
	if (va != last_engine[0]) {
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   101
		last_engine[0] = va;
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   102
		GetString(last_name[0], GetCustomEngineName(va));
4800
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   103
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   104
4804
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   105
	if (vb != last_engine[1]) {
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   106
		last_engine[1] = vb;
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   107
		GetString(last_name[1], GetCustomEngineName(vb));
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   108
	}
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   109
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   110
	r = strcmp(last_name[0], last_name[1]); // sort by name
4800
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   111
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   112
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   113
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   114
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   115
	}
4804
bfa7a5b5ad15 (svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents: 4800
diff changeset
   116
	return _internal_sort_order ? -r : r;
4800
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   117
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   118
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   119
static int CDECL EngineReliabilitySorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   120
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   121
	const int va = GetEngine(*(const EngineID*)a)->reliability;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   122
	const int vb = GetEngine(*(const EngineID*)b)->reliability;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   123
	const int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   124
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   125
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   126
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   127
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   128
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   129
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   130
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   131
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   132
/* Aircraft sorting functions */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   133
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   134
static int CDECL AircraftEngineCostSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   135
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   136
	const int va = AircraftVehInfo(*(const EngineID*)a)->base_cost;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   137
	const int vb = AircraftVehInfo(*(const EngineID*)b)->base_cost;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   138
	int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   139
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   140
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   141
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   142
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   143
static int CDECL AircraftEngineSpeedSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   144
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   145
	const int va = AircraftVehInfo(*(const EngineID*)a)->max_speed;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   146
	const int vb = AircraftVehInfo(*(const EngineID*)b)->max_speed;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   147
	const int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   148
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   149
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   150
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   151
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   152
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   153
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   154
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   155
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   156
static int CDECL AircraftEngineRunningCostSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   157
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   158
	const int va = AircraftVehInfo(*(const EngineID*)a)->running_cost;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   159
	const int vb = AircraftVehInfo(*(const EngineID*)b)->running_cost;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   160
	const int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   161
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   162
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   163
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   164
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   165
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   166
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   167
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   168
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   169
static int CDECL AircraftEngineCargoSorter(const void *a, const void *b)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   170
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   171
	const int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   172
	const int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   173
	const int r = va - vb;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   174
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   175
	if (r == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   176
		/* Use EngineID to sort instead since we want consistent sorting */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   177
		return EngineNumberSorter(a, b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   178
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   179
	return _internal_sort_order ? -r : r;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   180
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   181
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   182
static VehicleSortListingTypeFunction* const _aircraft_sorter[] = {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   183
	&EngineNumberSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   184
	&AircraftEngineCostSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   185
	&AircraftEngineSpeedSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   186
	&EngineIntroDateSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   187
	&EngineNameSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   188
	&AircraftEngineRunningCostSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   189
	&EngineReliabilitySorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   190
	&AircraftEngineCargoSorter,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   191
};
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   192
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   193
static const StringID _aircraft_sort_listing[] = {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   194
	STR_ENGINE_SORT_ENGINE_ID,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   195
	STR_ENGINE_SORT_COST,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   196
	STR_SORT_BY_MAX_SPEED,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   197
	STR_ENGINE_SORT_INTRO_DATE,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   198
	STR_SORT_BY_DROPDOWN_NAME,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   199
	STR_ENGINE_SORT_RUNNING_COST,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   200
	STR_SORT_BY_RELIABILITY,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   201
	STR_ENGINE_SORT_CARGO_CAPACITY,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   202
	INVALID_STRING_ID
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   203
};
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   204
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   205
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   206
/**
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   207
* Draw the purchase info details of an aircraft at a given location.
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   208
 * @param x,y location where to draw the info
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   209
 * @param engine_number the engine of which to draw the info of
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   210
 */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   211
void DrawAircraftPurchaseInfo(int x, int y, EngineID engine_number)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   212
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   213
	const AircraftVehicleInfo *avi = AircraftVehInfo(engine_number);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   214
	const Engine *e = GetEngine(engine_number);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   215
	CargoID cargo;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   216
	YearMonthDay ymd;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   217
	ConvertDateToYMD(e->intro_date, &ymd);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   218
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   219
	/* Purchase cost - Max speed */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   220
	SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   221
	SetDParam(1, avi->max_speed * 128 / 10);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   222
	DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   223
	y += 10;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   224
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   225
	/* Cargo capacity */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   226
	cargo = FindFirstRefittableCargo(engine_number);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   227
	if (cargo == CT_INVALID || cargo == CT_PASSENGERS) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   228
		SetDParam(0, avi->passenger_capacity);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   229
		SetDParam(1, avi->mail_capacity);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   230
		DrawString(x, y, STR_PURCHASE_INFO_AIRCRAFT_CAPACITY, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   231
	} else {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   232
		/* Note, if the default capacity is selected by the refit capacity
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   233
		* callback, then the capacity shown is likely to be incorrect. */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   234
		SetDParam(0, _cargoc.names_long[cargo]);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   235
		SetDParam(1, AircraftDefaultCargoCapacity(cargo, engine_number));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   236
		SetDParam(2, STR_9842_REFITTABLE);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   237
		DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   238
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   239
	y += 10;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   240
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   241
	/* Running cost */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   242
	SetDParam(0, avi->running_cost * _price.aircraft_running >> 8);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   243
	DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   244
	y += 10;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   245
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   246
	/* Design date - Life length */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   247
	SetDParam(0, ymd.year);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   248
	SetDParam(1, e->lifelength);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   249
	DrawString(x, y, STR_PURCHASE_INFO_DESIGNED_LIFE, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   250
	y += 10;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   251
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   252
	/* Reliability */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   253
	SetDParam(0, e->reliability * 100 >> 16);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   254
	DrawString(x, y, STR_PURCHASE_INFO_RELIABILITY, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   255
	y += 10;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   256
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   257
	/* Additional text from NewGRF */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   258
	// XXX 227 will become a calculated width...
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   259
	y += ShowAdditionalText(x, y, 227, engine_number);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   260
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   261
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   262
void DrawAircraftImage(const Vehicle *v, int x, int y, VehicleID selection)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   263
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   264
	PalSpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   265
	DrawSprite(GetAircraftImage(v, DIR_W) | pal, x + 25, y + 10);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   266
	if (v->subtype == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   267
		SpriteID rotor_sprite = GetCustomRotorSprite(v, true);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   268
		if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   269
		DrawSprite(rotor_sprite, x + 25, y + 5);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   270
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   271
	if (v->index == selection) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   272
		DrawFrameRect(x - 1, y - 1, x + 58, y + 21, 0xF, FR_BORDERONLY);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   273
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   274
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   275
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   276
void CcBuildAircraft(bool success, TileIndex tile, uint32 p1, uint32 p2)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   277
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   278
	if (success) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   279
		const Vehicle *v = GetVehicle(_new_vehicle_id);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   280
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   281
		if (v->tile == _backup_orders_tile) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   282
			_backup_orders_tile = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   283
			RestoreVehicleOrders(v, _backup_orders_data);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   284
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   285
		ShowAircraftViewWindow(v);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   286
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   287
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   288
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   289
static inline void ExtendEngineListSize(const EngineID **engine_list, uint16 *engine_list_length, uint16 step_size, uint16 max)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   290
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   291
	*engine_list_length = min(*engine_list_length + step_size, max);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   292
	*engine_list = realloc((void*)*engine_list, (*engine_list_length) * sizeof((*engine_list)[0]));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   293
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   294
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   295
static void GenerateBuildAircraftList(EngineID **planes, uint16 *num_planes, EngineID **jets, uint16 *num_jets, EngineID **helicopters, uint16 *num_helicopters)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   296
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   297
	uint16 plane_length      = *num_planes;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   298
	uint16 jet_length        = *num_jets;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   299
	uint16 helicopter_length = *num_helicopters;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   300
	EngineID eid;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   301
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   302
	(*num_planes)      = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   303
	(*num_jets)        = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   304
	(*num_helicopters) = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   305
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   306
	for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   307
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   308
		if (IsEngineBuildable(eid, VEH_Aircraft)) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   309
			const AircraftVehicleInfo *avi = AircraftVehInfo(eid);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   310
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   311
			switch (avi->subtype) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   312
				case AIR_CTOL: // Propeller planes
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   313
					if (*num_planes == plane_length) ExtendEngineListSize((const EngineID**)planes, &plane_length, 5, NUM_AIRCRAFT_ENGINES);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   314
					(*planes)[(*num_planes)++] = eid;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   315
					break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   316
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   317
				case (AIR_CTOL | AIR_FAST): // Jet planes
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   318
					if (*num_jets == jet_length) ExtendEngineListSize((const EngineID**)jets, &jet_length, 5, NUM_AIRCRAFT_ENGINES);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   319
					(*jets)[(*num_jets)++] = eid;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   320
					break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   321
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   322
				case 0: // Helicopters
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   323
					if (*num_helicopters == helicopter_length) ExtendEngineListSize((const EngineID**)helicopters, &plane_length, 5, NUM_AIRCRAFT_ENGINES);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   324
					(*helicopters)[(*num_helicopters)++] = eid;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   325
					break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   326
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   327
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   328
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   329
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   330
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   331
static void GenerateBuildList(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   332
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   333
	switch (WP(w, buildvehicle_d).vehicle_type) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   334
		case VEH_Aircraft:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   335
			GenerateBuildAircraftList(&WP(w, buildvehicle_d).list_a, &WP(w, buildvehicle_d).list_a_length,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   336
									  &WP(w, buildvehicle_d).list_b, &WP(w, buildvehicle_d).list_b_length,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   337
									  &WP(w, buildvehicle_d).list_c, &WP(w, buildvehicle_d).list_c_length);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   338
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   339
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   340
		default: NOT_REACHED();
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   341
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   342
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   343
	/* Ensure that we do not have trailing unused blocks in the arrays. We will never be able to access them anyway since we are unaware that they are there */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   344
	WP(w, buildvehicle_d).list_a = realloc((void*)WP(w, buildvehicle_d).list_a, WP(w, buildvehicle_d).list_a_length * sizeof(WP(w, buildvehicle_d).list_a[0]));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   345
	WP(w, buildvehicle_d).list_b = realloc((void*)WP(w, buildvehicle_d).list_b, WP(w, buildvehicle_d).list_b_length * sizeof(WP(w, buildvehicle_d).list_b[0]));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   346
	WP(w, buildvehicle_d).list_c = realloc((void*)WP(w, buildvehicle_d).list_c, WP(w, buildvehicle_d).list_c_length * sizeof(WP(w, buildvehicle_d).list_c[0]));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   347
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   348
	WP(w, buildvehicle_d).data_invalidated = false; // No need to regenerate the list anymore. We just did it
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   349
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   350
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   351
static inline EngineID *GetEngineArray(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   352
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   353
	switch (WP(w,buildvehicle_d).show_engine_button) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   354
		case 1: return WP(w, buildvehicle_d).list_a;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   355
		case 2: return WP(w, buildvehicle_d).list_b;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   356
		case 3: return WP(w, buildvehicle_d).list_c;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   357
		default: NOT_REACHED();
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   358
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   359
	return NULL;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   360
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   361
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   362
static inline uint16 GetEngineArrayLength(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   363
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   364
	switch (WP(w,buildvehicle_d).show_engine_button) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   365
		case 1: return WP(w, buildvehicle_d).list_a_length;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   366
		case 2: return WP(w, buildvehicle_d).list_b_length;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   367
		case 3: return WP(w, buildvehicle_d).list_c_length;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   368
		default: NOT_REACHED();
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   369
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   370
	return 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   371
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   372
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   373
static void SortAircraftBuildList(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   374
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   375
	_internal_sort_order = WP(w,buildvehicle_d).decenting_sort_order;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   376
	qsort((void*)GetEngineArray(w), GetEngineArrayLength(w), sizeof(GetEngineArray(w)[0]),
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   377
		  _aircraft_sorter[WP(w,buildvehicle_d).sort_criteria]);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   378
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   379
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   380
static void DrawBuildAircraftWindow(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   381
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   382
	SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_PLANES,      WP(w,buildvehicle_d).show_engine_button == 1);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   383
	SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_JETS,        WP(w,buildvehicle_d).show_engine_button == 2);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   384
	SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_HELICOPTERS, WP(w,buildvehicle_d).show_engine_button == 3);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   385
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   386
	SetWindowWidgetDisabledState(w, BUILD_VEHICLE_WIDGET_BUILD, w->window_number == 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   387
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   388
	if (WP(w, buildvehicle_d).data_invalidated) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   389
		GenerateBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   390
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   391
		if (WP(w,buildvehicle_d).sel_engine != INVALID_ENGINE) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   392
			int i;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   393
			bool found = false;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   394
			if (HASBIT(WP(w,buildvehicle_d).show_engine_button, 0)) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   395
				for (i = 0; i < GetEngineArrayLength(w); i++) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   396
					if (WP(w,buildvehicle_d).sel_engine != GetEngineArray(w)[i]) continue;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   397
					found = true;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   398
					break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   399
				}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   400
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   401
			if (!found) WP(w,buildvehicle_d).sel_engine = INVALID_ENGINE;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   402
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   403
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   404
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   405
	SetVScrollCount(w, GetEngineArrayLength(w));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   406
	DrawWindowWidgets(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   407
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   408
	if (WP(w,buildvehicle_d).sel_engine == INVALID_ENGINE && GetEngineArrayLength(w) != 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   409
		WP(w,buildvehicle_d).sel_engine = GetEngineArray(w)[0];
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   410
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   411
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   412
	{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   413
		int x = 2;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   414
		int y = 27;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   415
		EngineID selected_id = WP(w,buildvehicle_d).sel_engine;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   416
		EngineID eid = w->vscroll.pos;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   417
		EngineID *list = GetEngineArray(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   418
		uint16 list_length = GetEngineArrayLength(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   419
		uint16 max = min(w->vscroll.pos + w->vscroll.cap, list_length);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   420
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   421
		for(; eid < max; eid++) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   422
			const EngineID engine = list[eid];
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   423
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   424
			DrawString(x + 62, y + 7, GetCustomEngineName(engine), engine == selected_id ? 0xC : 0x10);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   425
			DrawAircraftEngine(x + 29, y + 10, engine, GetEnginePalette(engine, _local_player));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   426
			y += 24;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   427
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   428
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   429
		if (selected_id != INVALID_ENGINE) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   430
			DrawAircraftPurchaseInfo(x, w->widget[BUILD_VEHICLE_WIDGET_PANEL].top + 1, selected_id);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   431
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   432
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   433
	DrawString(85, 15, _aircraft_sort_listing[WP(w,buildvehicle_d).sort_criteria], 0x10);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   434
	DoDrawString(WP(w,buildvehicle_d).decenting_sort_order ? DOWNARROW : UPARROW, 69, 15, 0x10);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   435
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   436
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   437
static void BuildAircraftClickEvent(Window *w, WindowEvent *e)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   438
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   439
	byte click_state = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   440
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   441
	switch (e->we.click.widget) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   442
		case BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   443
			WP(w,buildvehicle_d).decenting_sort_order = !WP(w,buildvehicle_d).decenting_sort_order;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   444
			_last_sort_order = WP(w,buildvehicle_d).decenting_sort_order;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   445
			SortAircraftBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   446
			SetWindowDirty(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   447
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   448
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   449
		case BUILD_VEHICLE_WIDGET_LIST: {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   450
			uint i = (e->we.click.pt.y - 26) / 24;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   451
			if (i < w->vscroll.cap) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   452
				i += w->vscroll.pos;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   453
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   454
				if (i < GetEngineArrayLength(w)) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   455
					WP(w,buildvehicle_d).sel_engine = GetEngineArray(w)[i];
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   456
					SetWindowDirty(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   457
				}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   458
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   459
		} break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   460
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   461
		case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN:/* Select sorting criteria dropdown menu */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   462
			ShowDropDownMenu(w, _aircraft_sort_listing, WP(w,buildvehicle_d).sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   463
			return;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   464
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   465
		case BUILD_VEHICLE_WIDGET_HELICOPTERS: click_state++;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   466
		case BUILD_VEHICLE_WIDGET_JETS:        click_state++;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   467
		case BUILD_VEHICLE_WIDGET_PLANES:      click_state++;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   468
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   469
			if (WP(w,buildvehicle_d).show_engine_button == click_state) break; // We clicked the pressed button
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   470
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   471
				WP(w,buildvehicle_d).sel_engine = INVALID_ENGINE;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   472
			WP(w,buildvehicle_d).show_engine_button = click_state;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   473
			w->vscroll.pos = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   474
			SortAircraftBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   475
			SetWindowDirty(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   476
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   477
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   478
		case BUILD_VEHICLE_WIDGET_BUILD: {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   479
			EngineID sel_eng = WP(w,buildvehicle_d).sel_engine;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   480
			if (sel_eng != INVALID_ENGINE)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   481
				DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   482
		} break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   483
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   484
		case BUILD_VEHICLE_WIDGET_RENAME: {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   485
			EngineID sel_eng = WP(w,buildvehicle_d).sel_engine;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   486
			if (sel_eng != INVALID_ENGINE) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   487
				WP(w,buildvehicle_d).rename_engine = sel_eng;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   488
				ShowQueryString(GetCustomEngineName(sel_eng),
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   489
								STR_A039_RENAME_AIRCRAFT_TYPE, 31, 160, w->window_class, w->window_number, CS_ALPHANUMERAL);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   490
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   491
		} break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   492
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   493
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   494
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   495
static void NewAircraftWndProc(Window *w, WindowEvent *e)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   496
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   497
	switch (e->event) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   498
		case WE_INVALIDATE_DATA:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   499
			WP(w,buildvehicle_d).data_invalidated = true;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   500
			SetWindowDirty(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   501
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   502
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   503
		case WE_DESTROY:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   504
			free((void*)WP(w, buildvehicle_d).list_a);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   505
			free((void*)WP(w, buildvehicle_d).list_b);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   506
			free((void*)WP(w, buildvehicle_d).list_c);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   507
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   508
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   509
		case WE_PAINT:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   510
			DrawBuildAircraftWindow(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   511
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   512
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   513
		case WE_CLICK:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   514
			BuildAircraftClickEvent(w, e);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   515
			break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   516
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   517
		case WE_ON_EDIT_TEXT: {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   518
			if (e->we.edittext.str[0] != '\0') {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   519
				_cmd_text = e->we.edittext.str;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   520
				DoCommandP(0, WP(w, buildvehicle_d).rename_engine, 0, NULL,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   521
						   CMD_RENAME_ENGINE | CMD_MSG(STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE));
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   522
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   523
		} break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   524
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   525
		case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   526
			if (WP(w,buildvehicle_d).sort_criteria != e->we.dropdown.index) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   527
				WP(w,buildvehicle_d).sort_criteria = e->we.dropdown.index;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   528
				_last_sort_criteria = e->we.dropdown.index;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   529
				SortAircraftBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   530
			}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   531
			SetWindowDirty(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   532
				break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   533
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   534
			case WE_RESIZE:
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   535
				w->vscroll.cap += e->we.sizing.diff.y / 24;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   536
				w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   537
				break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   538
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   539
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   540
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   541
static const WindowDesc _build_vehicle_desc = {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   542
	-1, -1, 240, 218,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   543
	WC_BUILD_VEHICLE,0,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   544
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   545
	_build_vehicle_widgets,
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   546
	NewAircraftWndProc
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   547
};
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   548
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   549
/* Disable the aircraft subtype buttons for the types, that can't be build at the current airport */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   550
static void CreateAircraftWindow(Window *w)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   551
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   552
	TileIndex tile = w->window_number;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   553
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   554
	if (tile == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   555
		WP(w, buildvehicle_d).show_engine_button = 1;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   556
	} else {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   557
		byte acc_planes = GetAirport(GetStationByTile(tile)->airport_type)->acc_planes;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   558
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   559
		WP(w, buildvehicle_d).show_engine_button = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   560
		if (acc_planes == HELICOPTERS_ONLY || acc_planes == ALL) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   561
			WP(w, buildvehicle_d).show_engine_button = 3;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   562
		} else {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   563
			DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_HELICOPTERS);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   564
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   565
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   566
		if (acc_planes == AIRCRAFT_ONLY || acc_planes == ALL) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   567
			/* Set the start clicked button to jets if the list isn't empty. If not, then show propeller planes */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   568
			WP(w, buildvehicle_d).show_engine_button = WP(w, buildvehicle_d).list_b_length == 0 ? 1 : 2;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   569
		} else {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   570
			DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_JETS);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   571
			DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_PLANES);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   572
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   573
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   574
		if (WP(w, buildvehicle_d).show_engine_button == 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   575
			/* No plane type are buildable here */
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   576
			NOT_REACHED();
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   577
			WP(w, buildvehicle_d).show_engine_button = 1;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   578
		}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   579
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   580
}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   581
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   582
void ShowBuildVehicleWindow(TileIndex tile, byte type)
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   583
{
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   584
	Window *w;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   585
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   586
	DeleteWindowById(WC_BUILD_VEHICLE, tile);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   587
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   588
	w = AllocateWindowDescFront(&_build_vehicle_desc, tile);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   589
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   590
	if (w == NULL) return;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   591
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   592
	WP(w, buildvehicle_d).vehicle_type = type;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   593
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   594
	w->resize.step_height = GetVehicleListHeight(type);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   595
	w->vscroll.cap = 4;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   596
	w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   597
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   598
	if (tile != 0) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   599
		w->caption_color = GetTileOwner(tile);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   600
	} else {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   601
		w->caption_color = _local_player;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   602
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   603
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   604
	WP(w, buildvehicle_d).list_a_length = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   605
	WP(w, buildvehicle_d).list_b_length = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   606
	WP(w, buildvehicle_d).list_c_length = 0;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   607
	WP(w, buildvehicle_d).list_a        = NULL;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   608
	WP(w, buildvehicle_d).list_b        = NULL;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   609
	WP(w, buildvehicle_d).list_c        = NULL;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   610
	WP(w, buildvehicle_d).sel_engine           = INVALID_ENGINE;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   611
	WP(w, buildvehicle_d).sort_criteria        = _last_sort_criteria;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   612
	WP(w, buildvehicle_d).decenting_sort_order = _last_sort_order;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   613
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   614
	GenerateBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   615
	switch (type) {
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   616
		case VEH_Aircraft: CreateAircraftWindow(w); break;
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   617
		default: NOT_REACHED();
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   618
	}
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   619
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   620
	SortAircraftBuildList(w);
5afc1bfc7a85 (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff changeset
   621
}