src/airport.cpp
author celestar
Tue, 12 Jun 2007 11:56:35 +0000
branchgamebalance
changeset 9908 0fa543611bbe
parent 9895 7bd07f43b0e3
child 6734 6e4db2fda167
child 8300 da89335c3116
child 9722 ebf0ece7d8f6
permissions -rw-r--r--
(svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     2
6443
b8f06d8eb7be (svn r8853) -Cleanup: doxygen changes. Correct forgotten c files to cpp files with the @file tag as well as a few general comments style
belugas
parents: 6413
diff changeset
     3
/** @file airport.cpp */
b8f06d8eb7be (svn r8853) -Cleanup: doxygen changes. Correct forgotten c files to cpp files with the @file tag as well as a few general comments style
belugas
parents: 6413
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
92a3b0aa0946 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1299
diff changeset
     6
#include "openttd.h"
1299
0a6510cc889b (svn r1803) Move debugging stuff into files of it's own
tron
parents: 1093
diff changeset
     7
#include "debug.h"
679
e959706a3e4d (svn r1117) Move map arrays and some related macros into their own files map.c and map.h
tron
parents: 222
diff changeset
     8
#include "map.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     9
#include "airport.h"
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
    10
#include "macros.h"
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
    11
#include "variables.h"
3701
13911c5df3e7 (svn r4642) - Codechange: reorganise airport.h and airport_movement.h to avoid having 8 copies of the airport FTAs, and make the enums used available elsewhere.
peter1138
parents: 2752
diff changeset
    12
#include "airport_movement.h"
4261
2ec8f5a9747b (svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
rubidium
parents: 4171
diff changeset
    13
#include "date.h"
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
    14
#include "helpers.hpp"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    15
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    16
/* Uncomment this to print out a full report of the airport-structure
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    17
 * You should either use
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    18
 * - true: full-report, print out every state and choice with string-names
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    19
 * OR
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    20
 * - false: give a summarized report which only shows current and next position */
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    21
//#define DEBUG_AIRPORT false
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
    22
9908
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    23
static AirportFTAClass *DummyAirport;
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    24
static AirportFTAClass *CountryAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    25
static AirportFTAClass *CityAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    26
static AirportFTAClass *Oilrig;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    27
static AirportFTAClass *Heliport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    28
static AirportFTAClass *MetropolitanAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    29
static AirportFTAClass *InternationalAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    30
static AirportFTAClass *CommuterAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    31
static AirportFTAClass *HeliDepot;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    32
static AirportFTAClass *IntercontinentalAirport;
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
    33
static AirportFTAClass *HeliStation;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    35
9895
7bd07f43b0e3 (svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents: 6443
diff changeset
    36
void InitializeAirports()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    37
{
9908
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    38
	DummyAirport = new AirportFTAClass(
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    39
		_airport_moving_data_dummy,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    40
		NULL,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    41
		NULL,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    42
		_airport_entries_dummy,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    43
		AirportFTAClass::ALL,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    44
		_airport_fta_dummy,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    45
		NULL,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    46
		0,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    47
		0, 0,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    48
		0,
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    49
		0
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    50
	);
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
    51
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
    52
	CountryAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
    53
		_airport_moving_data_country,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    54
		_airport_terminal_country,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    55
		NULL,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
    56
		_airport_entries_country,
6351
afb1e3960181 (svn r8748) -Fix
tron
parents: 6350
diff changeset
    57
		AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    58
		_airport_fta_country,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    59
		_airport_depots_country,
3876
c0d426e78b56 (svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
tron
parents: 3701
diff changeset
    60
		lengthof(_airport_depots_country),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
    61
		4, 3,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    62
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    63
		4
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
    64
	);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    65
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
    66
	CityAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
    67
		_airport_moving_data_town,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    68
		_airport_terminal_city,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    69
		NULL,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
    70
		_airport_entries_city,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
    71
		AirportFTAClass::ALL,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    72
		_airport_fta_city,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    73
		_airport_depots_city,
3876
c0d426e78b56 (svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
tron
parents: 3701
diff changeset
    74
		lengthof(_airport_depots_city),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
    75
		6, 6,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    76
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    77
		5
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
    78
	);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
    80
	MetropolitanAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
    81
		_airport_moving_data_metropolitan,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    82
		_airport_terminal_metropolitan,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    83
		NULL,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
    84
		_airport_entries_metropolitan,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
    85
		AirportFTAClass::ALL,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    86
		_airport_fta_metropolitan,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    87
		_airport_depots_metropolitan,
3876
c0d426e78b56 (svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
tron
parents: 3701
diff changeset
    88
		lengthof(_airport_depots_metropolitan),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
    89
		6, 6,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    90
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
    91
		6
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
    92
	);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    93
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
    94
	InternationalAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
    95
		_airport_moving_data_international,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    96
		_airport_terminal_international,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
    97
		_airport_helipad_international,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
    98
		_airport_entries_international,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
    99
		AirportFTAClass::ALL,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   100
		_airport_fta_international,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   101
		_airport_depots_international,
3876
c0d426e78b56 (svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
tron
parents: 3701
diff changeset
   102
		lengthof(_airport_depots_international),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   103
		7, 7,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   104
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   105
		8
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   106
	);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   107
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   108
	IntercontinentalAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   109
		_airport_moving_data_intercontinental,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   110
		_airport_terminal_intercontinental,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   111
		_airport_helipad_intercontinental,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   112
		_airport_entries_intercontinental,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   113
		AirportFTAClass::ALL,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   114
		_airport_fta_intercontinental,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   115
		_airport_depots_intercontinental,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   116
		lengthof(_airport_depots_intercontinental),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   117
		9, 11,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   118
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   119
		10
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   120
	);
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   121
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   122
	Heliport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   123
		_airport_moving_data_heliport,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   124
		NULL,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   125
		_airport_helipad_heliport_oilrig,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   126
		_airport_entries_heliport_oilrig,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   127
		AirportFTAClass::HELICOPTERS,
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   128
		_airport_fta_heliport_oilrig,
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   129
		NULL,
3876
c0d426e78b56 (svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
tron
parents: 3701
diff changeset
   130
		0,
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   131
		1, 1,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   132
		60,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   133
		4
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   134
	);
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   135
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   136
	Oilrig = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   137
		_airport_moving_data_oilrig,
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   138
		NULL,
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   139
		_airport_helipad_heliport_oilrig,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   140
		_airport_entries_heliport_oilrig,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   141
		AirportFTAClass::HELICOPTERS,
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   142
		_airport_fta_heliport_oilrig,
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   143
		NULL,
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   144
		0,
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   145
		1, 1,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   146
		54,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   147
		3
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   148
	);
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   149
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   150
	CommuterAirport = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   151
		_airport_moving_data_commuter,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   152
		_airport_terminal_commuter,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   153
		_airport_helipad_commuter,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   154
		_airport_entries_commuter,
6351
afb1e3960181 (svn r8748) -Fix
tron
parents: 6350
diff changeset
   155
		AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   156
		_airport_fta_commuter,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   157
		_airport_depots_commuter,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   158
		lengthof(_airport_depots_commuter),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   159
		5, 4,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   160
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   161
		4
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   162
	);
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   163
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   164
	HeliDepot = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   165
		_airport_moving_data_helidepot,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   166
		NULL,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   167
		_airport_helipad_helidepot,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   168
		_airport_entries_helidepot,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   169
		AirportFTAClass::HELICOPTERS,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   170
		_airport_fta_helidepot,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   171
		_airport_depots_helidepot,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   172
		lengthof(_airport_depots_helidepot),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   173
		2, 2,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   174
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   175
		4
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   176
	);
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   177
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   178
	HeliStation = new AirportFTAClass(
6175
26674ca57aac (svn r8559) -Fix
tron
parents: 5860
diff changeset
   179
		_airport_moving_data_helistation,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   180
		NULL,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   181
		_airport_helipad_helistation,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   182
		_airport_entries_helistation,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   183
		AirportFTAClass::HELICOPTERS,
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   184
		_airport_fta_helistation,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   185
		_airport_depots_helistation,
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   186
		lengthof(_airport_depots_helistation),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   187
		4, 2,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   188
		0,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   189
		4
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   190
	);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   191
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   192
9895
7bd07f43b0e3 (svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents: 6443
diff changeset
   193
void UnInitializeAirports()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   194
{
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   195
	delete CountryAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   196
	delete CityAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   197
	delete Heliport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   198
	delete MetropolitanAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   199
	delete InternationalAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   200
	delete CommuterAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   201
	delete HeliDepot;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   202
	delete IntercontinentalAirport;
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   203
	delete HeliStation;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   204
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   205
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   206
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   207
static uint16 AirportGetNofElements(const AirportFTAbuildup *apFA);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   208
static AirportFTA* AirportBuildAutomata(uint nofelements, const AirportFTAbuildup *apFA);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   209
static byte AirportGetTerminalCount(const byte *terminals, byte *groups);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   210
static byte AirportTestFTA(uint nofelements, const AirportFTA *layout, const byte *terminals);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   211
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   212
#ifdef DEBUG_AIRPORT
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   213
static void AirportPrintOut(uint nofelements, const AirportFTA *layout, bool full_report);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   214
#endif
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   215
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   216
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   217
AirportFTAClass::AirportFTAClass(
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   218
	const AirportMovingData *moving_data_,
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   219
	const byte *terminals_,
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   220
	const byte *helipads_,
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   221
	const byte *entry_points_,
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   222
	Flags flags_,
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   223
	const AirportFTAbuildup *apFA,
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   224
	const TileIndexDiffC *depots_,
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   225
	const byte nof_depots_,
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   226
	uint size_x_,
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   227
	uint size_y_,
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   228
	byte delta_z_,
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   229
	byte catchment_
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   230
) :
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   231
	moving_data(moving_data_),
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   232
	terminals(terminals_),
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   233
	helipads(helipads_),
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   234
	airport_depots(depots_),
6350
c644e180cdf8 (svn r8747) -Fix
tron
parents: 6346
diff changeset
   235
	flags(flags_),
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   236
	nof_depots(nof_depots_),
6189
2b1ae5e373e9 (svn r8582) -Fix
tron
parents: 6183
diff changeset
   237
	nofelements(AirportGetNofElements(apFA)),
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   238
	entry_points(entry_points_),
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   239
	size_x(size_x_),
6346
4aad704385e1 (svn r8743) -Fix
tron
parents: 6222
diff changeset
   240
	size_y(size_y_),
6367
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   241
	delta_z(delta_z_),
2f569d554980 (svn r8767) -Fix
tron
parents: 6362
diff changeset
   242
	catchment(catchment_)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   243
{
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   244
	byte nofterminalgroups, nofhelipadgroups;
1019
6363b8a4273e (svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents: 950
diff changeset
   245
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   246
	/* Set up the terminal and helipad count for an airport.
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   247
	 * TODO: If there are more than 10 terminals or 4 helipads, internal variables
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   248
	 * need to be changed, so don't allow that for now */
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   249
	uint nofterminals = AirportGetTerminalCount(terminals, &nofterminalgroups);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   250
	if (nofterminals > MAX_TERMINALS) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4844
diff changeset
   251
		DEBUG(misc, 0, "[Ap] only a maximum of %d terminals are supported (requested %d)", MAX_TERMINALS, nofterminals);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   252
		assert(nofterminals <= MAX_TERMINALS);
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   253
	}
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   254
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   255
	uint nofhelipads = AirportGetTerminalCount(helipads, &nofhelipadgroups);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   256
	if (nofhelipads > MAX_HELIPADS) {
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 4844
diff changeset
   257
		DEBUG(misc, 0, "[Ap] only a maximum of %d helipads are supported (requested %d)", MAX_HELIPADS, nofhelipads);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   258
		assert(nofhelipads <= MAX_HELIPADS);
950
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   259
	}
1f6546ea35a3 (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
celestar
parents: 909
diff changeset
   260
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   261
	/* Get the number of elements from the source table. We also double check this
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   262
	 * with the entry point which must be within bounds and use this information
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   263
	 * later on to build and validate the state machine */
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   264
	for (DiagDirection i = DIAGDIR_BEGIN; i < DIAGDIR_END; i++) {
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   265
		if (entry_points[i] >= nofelements) {
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   266
			DEBUG(misc, 0, "[Ap] entry (%d) must be within the airport (maximum %d)", entry_points[i], nofelements);
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   267
			assert(entry_points[i] < nofelements);
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   268
		}
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   269
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   270
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   271
	/* Build the state machine itself */
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   272
	layout = AirportBuildAutomata(nofelements, apFA);
6362
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   273
	DEBUG(misc, 2, "[Ap] #count %3d; #term %2d (%dgrp); #helipad %2d (%dgrp); entries %3d, %3d, %3d, %3d",
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   274
		nofelements, nofterminals, nofterminalgroups, nofhelipads, nofhelipadgroups,
f4de72f0abea (svn r8759) -Feature: Allow airports to have up to 4 entry points depending on approach direction. Note: they're not yet used, but will be soon
celestar
parents: 6351
diff changeset
   275
		entry_points[DIAGDIR_NE], entry_points[DIAGDIR_SE], entry_points[DIAGDIR_SW], entry_points[DIAGDIR_NW]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   276
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   277
	/* Test if everything went allright. This is only a rude static test checking
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   278
	 * the symantic correctness. By no means does passing the test mean that the
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   279
	 * airport is working correctly or will not deadlock for example */
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   280
	uint ret = AirportTestFTA(nofelements, layout, terminals);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   281
	if (ret != MAX_ELEMENTS) DEBUG(misc, 0, "[Ap] problem with element: %d", ret - 1);
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   282
	assert(ret == MAX_ELEMENTS);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   283
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   284
#ifdef DEBUG_AIRPORT
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   285
	AirportPrintOut(nofelements, layout, DEBUG_AIRPORT);
4077
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   286
#endif
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   287
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   288
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   289
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   290
AirportFTAClass::~AirportFTAClass()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   291
{
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   292
	for (uint i = 0; i < nofelements; i++) {
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   293
		AirportFTA *current = layout[i].next;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   294
		while (current != NULL) {
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   295
			AirportFTA *next = current->next;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   296
			free(current);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   297
			current = next;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   298
		};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   299
	}
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   300
	free(layout);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   301
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   302
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   303
/** Get the number of elements of a source Airport state automata
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   304
 * Since it is actually just a big array of AirportFTA types, we only
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   305
 * know one element from the other by differing 'position' identifiers */
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   306
static uint16 AirportGetNofElements(const AirportFTAbuildup *apFA)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   307
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   308
	uint16 nofelements = 0;
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   309
	int temp = apFA[0].position;
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2186
diff changeset
   310
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   311
	for (uint i = 0; i < MAX_ELEMENTS; i++) {
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   312
		if (temp != apFA[i].position) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   313
			nofelements++;
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   314
			temp = apFA[i].position;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   315
		}
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   316
		if (apFA[i].position == MAX_ELEMENTS) break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   317
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   318
	return nofelements;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   319
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   320
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   321
/* We calculate the terminal/helipod count based on the data passed to us
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   322
 * This data (terminals) contains an index as a first element as to how many
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   323
 * groups there are, and then the number of terminals for each group */
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   324
static byte AirportGetTerminalCount(const byte *terminals, byte *groups)
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   325
{
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   326
	byte nof_terminals = 0;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   327
	*groups = 0;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   328
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   329
	if (terminals != NULL) {
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   330
		uint i = terminals[0];
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   331
		*groups = i;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   332
		while (i-- > 0) {
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   333
			terminals++;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   334
			assert(*terminals != 0); // no empty groups please
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   335
			nof_terminals += *terminals;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   336
		}
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   337
	}
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   338
	return nof_terminals;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   339
}
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   340
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   341
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   342
static AirportFTA* AirportBuildAutomata(uint nofelements, const AirportFTAbuildup *apFA)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   343
{
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   344
	AirportFTA *FAutomata = MallocT<AirportFTA>(nofelements);
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   345
	uint16 internalcounter = 0;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   346
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   347
	for (uint i = 0; i < nofelements; i++) {
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   348
		AirportFTA *current = &FAutomata[i];
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   349
		current->position      = apFA[internalcounter].position;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   350
		current->heading       = apFA[internalcounter].heading;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   351
		current->block         = apFA[internalcounter].block;
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   352
		current->next_position = apFA[internalcounter].next;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   353
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   354
		// outgoing nodes from the same position, create linked list
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   355
		while (current->position == apFA[internalcounter + 1].position) {
5860
7fdc9b423ba1 (svn r8066) - Codechange: MallocT(), CallocT(), ReallocT() now return the pointer to allocated memory instead of modifying the pointer given as parameter
KUDr
parents: 5838
diff changeset
   356
			AirportFTA *newNode = MallocT<AirportFTA>(1);
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2186
diff changeset
   357
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   358
			newNode->position      = apFA[internalcounter + 1].position;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   359
			newNode->heading       = apFA[internalcounter + 1].heading;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   360
			newNode->block         = apFA[internalcounter + 1].block;
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   361
			newNode->next_position = apFA[internalcounter + 1].next;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   362
			// create link
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   363
			current->next = newNode;
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   364
			current = current->next;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   365
			internalcounter++;
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   366
		}
4842
0757e12896c5 (svn r6768) -Cleanup: For airports change *Airport to *apc (variable naming coding style
Darkvater
parents: 4434
diff changeset
   367
		current->next = NULL;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   368
		internalcounter++;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   369
	}
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   370
	return FAutomata;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   371
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   372
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   373
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   374
static byte AirportTestFTA(uint nofelements, const AirportFTA *layout, const byte *terminals)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   375
{
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   376
	uint next_position = 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   377
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   378
	for (uint i = 0; i < nofelements; i++) {
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   379
		uint position = layout[i].position;
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   380
		if (position != next_position) return i;
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   381
		const AirportFTA *first = &layout[i];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   382
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   383
		for (const AirportFTA *current = first; current != NULL; current = current->next) {
4844
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   384
			/* A heading must always be valid. The only exceptions are
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   385
			 * - multiple choices as start, identified by a special value of 255
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   386
			 * - terminal group which is identified by a special value of 255 */
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   387
			if (current->heading > MAX_HEADINGS) {
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   388
				if (current->heading != 255) return i;
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   389
				if (current == first && current->next == NULL) return i;
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   390
				if (current != first && current->next_position > terminals[0]) return i;
4844
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   391
			}
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   392
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   393
			/* If there is only one choice, it must be at the end */
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   394
			if (current->heading == 0 && current->next != NULL) return i;
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   395
			/* Obviously the elements of the linked list must have the same identifier */
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   396
			if (position != current->position) return i;
4844
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   397
			/* A next position must be within bounds */
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   398
			if (current->next_position >= nofelements) return i;
4844
15faacbff622 (svn r6770) -Codechange: Make the airport checking a bit stricter...fix unnoticed errors:
Darkvater
parents: 4843
diff changeset
   399
		}
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   400
		next_position++;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   401
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   402
	return MAX_ELEMENTS;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   403
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   404
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   405
#ifdef DEBUG_AIRPORT
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2186
diff changeset
   406
static const char* const _airport_heading_strings[] = {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   407
	"TO_ALL",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   408
	"HANGAR",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   409
	"TERM1",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   410
	"TERM2",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   411
	"TERM3",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   412
	"TERM4",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   413
	"TERM5",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   414
	"TERM6",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   415
	"HELIPAD1",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   416
	"HELIPAD2",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   417
	"TAKEOFF",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   418
	"STARTTAKEOFF",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   419
	"ENDTAKEOFF",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   420
	"HELITAKEOFF",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   421
	"FLYING",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   422
	"LANDING",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   423
	"ENDLANDING",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   424
	"HELILANDING",
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   425
	"HELIENDLANDING",
4059
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   426
	"TERM7",
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   427
	"TERM8",
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   428
	"HELIPAD3",
f1442dfe1c8a (svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
richk
parents: 3876
diff changeset
   429
	"HELIPAD4",
4434
4175805666a5 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4294
diff changeset
   430
	"DUMMY" // extra heading for 255
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   431
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   432
4077
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   433
static uint AirportBlockToString(uint32 block)
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   434
{
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   435
	uint i = 0;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   436
	if (block & 0xffff0000) { block >>= 16; i += 16; }
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   437
	if (block & 0x0000ff00) { block >>=  8; i +=  8; }
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   438
	if (block & 0x000000f0) { block >>=  4; i +=  4; }
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   439
	if (block & 0x0000000c) { block >>=  2; i +=  2; }
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   440
	if (block & 0x00000002) { i += 1; }
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   441
	return i;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   442
}
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   443
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   444
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   445
static void AirportPrintOut(uint nofelements, const AirportFTA *layout, bool full_report)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   446
{
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   447
	if (!full_report) printf("(P = Current Position; NP = Next Position)\n");
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   448
6183
5d864a25ae2b (svn r8570) -Fix
tron
parents: 6175
diff changeset
   449
	for (uint i = 0; i < nofelements; i++) {
6413
3d660a812fbd (svn r8822) -Fix
tron
parents: 6367
diff changeset
   450
		for (const AirportFTA *current = &layout[i]; current != NULL; current = current->next) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   451
			if (full_report) {
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   452
				byte heading = (current->heading == 255) ? MAX_HEADINGS + 1 : current->heading;
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   453
				printf("\tPos:%2d NPos:%2d Heading:%15s Block:%2d\n", current->position,
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   454
					    current->next_position, _airport_heading_strings[heading],
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   455
							AirportBlockToString(current->block));
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2186
diff changeset
   456
			} else {
4843
724322df355a (svn r6769) -Codechange: Minor syntax, const correctness, variable localization, coding
Darkvater
parents: 4842
diff changeset
   457
				printf("P:%2d NP:%2d", current->position, current->next_position);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   458
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   459
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   460
		printf("\n");
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   461
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   462
}
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2186
diff changeset
   463
#endif
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   464
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   465
const AirportFTAClass *GetAirport(const byte airport_type)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   466
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   467
	//FIXME -- AircraftNextAirportPos_and_Order -> Needs something nicer, don't like this code
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   468
	// needs constant change if more airports are added
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   469
	switch (airport_type) {
4077
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   470
		default:               NOT_REACHED();
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   471
		case AT_SMALL:         return CountryAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   472
		case AT_LARGE:         return CityAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   473
		case AT_METROPOLITAN:  return MetropolitanAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   474
		case AT_HELIPORT:      return Heliport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   475
		case AT_OILRIG:        return Oilrig;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   476
		case AT_INTERNATIONAL: return InternationalAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   477
		case AT_COMMUTER:      return CommuterAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   478
		case AT_HELIDEPOT:     return HeliDepot;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   479
		case AT_INTERCON:      return IntercontinentalAirport;
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4059
diff changeset
   480
		case AT_HELISTATION:   return HeliStation;
9908
0fa543611bbe (svn r10112) [gamebalance] -Sync: r9520:9620 from trunk
celestar
parents: 9895
diff changeset
   481
		case AT_DUMMY:         return DummyAirport;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   482
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   483
}
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
   484
3701
13911c5df3e7 (svn r4642) - Codechange: reorganise airport.h and airport_movement.h to avoid having 8 copies of the airport FTAs, and make the enums used available elsewhere.
peter1138
parents: 2752
diff changeset
   485
9895
7bd07f43b0e3 (svn r9321) [gamebalance] -Sync: r9025:9314 from trunk
celestar
parents: 6443
diff changeset
   486
uint32 GetValidAirports()
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
   487
{
6222
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   488
	uint32 mask = 0;
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
   489
6222
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   490
	if (_cur_year <  1960 || _patches.always_small_airport) SETBIT(mask, 0);  // small airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   491
	if (_cur_year >= 1955) SETBIT(mask, 1); // city airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   492
	if (_cur_year >= 1963) SETBIT(mask, 2); // heliport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   493
	if (_cur_year >= 1980) SETBIT(mask, 3); // metropolitan airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   494
	if (_cur_year >= 1990) SETBIT(mask, 4); // international airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   495
	if (_cur_year >= 1983) SETBIT(mask, 5); // commuter airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   496
	if (_cur_year >= 1976) SETBIT(mask, 6); // helidepot
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   497
	if (_cur_year >= 2002) SETBIT(mask, 7); // intercontinental airport
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   498
	if (_cur_year >= 1980) SETBIT(mask, 8); // helistation
50e47f803549 (svn r8660) -Fix
tron
parents: 6189
diff changeset
   499
	return mask;
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1891
diff changeset
   500
}