src/vehiclelist.cpp
author smatz
Sat, 13 Dec 2008 15:59:25 +0000
changeset 10416 b35c0a4c73c5
parent 10238 5076964d81a1
permissions -rw-r--r--
(svn r14669) -Codechange: use SmallVector instead of std::list at one place
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
10238
5076964d81a1 (svn r14466) -Doc: remove some obsolete parameters, fix a few parameter names in comments and add a little more doxygen documentation.
rubidium
parents: 10207
diff changeset
     3
/** @file vehiclelist.cpp Lists of vehicles. */
6423
8e10e79e0fd1 (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents: 6350
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1881
diff changeset
     6
#include "openttd.h"
9396
3f70b1b8642c (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138
parents: 9365
diff changeset
     7
#include "vehicle_type.h"
3f70b1b8642c (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138
parents: 9365
diff changeset
     8
#include "vehicle_func.h"
3f70b1b8642c (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138
parents: 9365
diff changeset
     9
#include "vehicle_base.h"
1752
d65cd19f7117 (svn r2256) - Fix: Trains cannot find a depot when they are in a tunnel. (glx)
matthijs
parents: 1735
diff changeset
    10
#include "vehicle_gui.h"
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    11
#include "core/alloc_func.hpp"
9396
3f70b1b8642c (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138
parents: 9365
diff changeset
    12
#include "train.h"
3f70b1b8642c (svn r13307) -Codechange: Separate VehicleList and its two functions so only the 3 users include it, reducing dependencies on misc/smallvec.h
peter1138
parents: 9365
diff changeset
    13
#include "vehiclelist.h"
2244
417a472e7cb5 (svn r2764) -Feature: Clone vehicles
bjarni
parents: 2186
diff changeset
    14
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    15
/**
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    16
 * Generate a list of vehicles inside a depot.
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    17
 * @param type    Type of vehicle
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    18
 * @param tile    The tile the depot is located on
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    19
 * @param engines Pointer to list to add vehicles to
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    20
 * @param wagons  Pointer to list to add wagons to (can be NULL)
10193
ae0dc7f699bf (svn r14406) -Fix [FS#Eddi]: Autoreplace did not work for vehicles in free wagon chains.
frosch
parents: 9963
diff changeset
    21
 * @param individual_wagons If true add every wagon to #wagons which is not attached to an engine. If false only add the first wagon of every row.
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    22
 */
10193
ae0dc7f699bf (svn r14406) -Fix [FS#Eddi]: Autoreplace did not work for vehicles in free wagon chains.
frosch
parents: 9963
diff changeset
    23
void BuildDepotVehicleList(VehicleType type, TileIndex tile, VehicleList *engines, VehicleList *wagons, bool individual_wagons)
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    24
{
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    25
	engines->Clear();
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    26
	if (wagons != NULL && wagons != engines) wagons->Clear();
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    27
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    28
	const Vehicle *v;
9340
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    29
	FOR_ALL_VEHICLES(v) {
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    30
		/* General tests for all vehicle types */
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    31
		if (v->type != type) continue;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    32
		if (v->tile != tile) continue;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    33
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    34
		switch (type) {
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    35
			case VEH_TRAIN:
10193
ae0dc7f699bf (svn r14406) -Fix [FS#Eddi]: Autoreplace did not work for vehicles in free wagon chains.
frosch
parents: 9963
diff changeset
    36
				if (IsArticulatedPart(v) || IsRearDualheaded(v)) continue;
9340
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    37
				if (v->u.rail.track != TRACK_BIT_DEPOT) continue;
10193
ae0dc7f699bf (svn r14406) -Fix [FS#Eddi]: Autoreplace did not work for vehicles in free wagon chains.
frosch
parents: 9963
diff changeset
    38
				if (wagons != NULL && IsFreeWagon(v->First())) {
ae0dc7f699bf (svn r14406) -Fix [FS#Eddi]: Autoreplace did not work for vehicles in free wagon chains.
frosch
parents: 9963
diff changeset
    39
					if (individual_wagons || IsFreeWagon(v)) *wagons->Append() = v;
9340
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    40
					continue;
4635
1b35cdc018ee (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4616
diff changeset
    41
				}
9340
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    42
				break;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    43
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    44
			default:
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    45
				if (!v->IsInDepot()) continue;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    46
				break;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    47
		}
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    48
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    49
		if (!v->IsPrimaryVehicle()) continue;
7d09c355359a (svn r13232) -Codechange: Simplify BuildDepotVehicleList()
peter1138
parents: 9297
diff changeset
    50
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    51
		*engines->Append() = v;
4635
1b35cdc018ee (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4616
diff changeset
    52
	}
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    53
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    54
	/* Ensure the lists are not wasting too much space. If the lists are fresh
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    55
	 * (i.e. built within a command) then this will actually do nothing. */
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    56
	engines->Compact();
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    57
	if (wagons != NULL && wagons != engines) wagons->Compact();
4635
1b35cdc018ee (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4616
diff changeset
    58
}
1b35cdc018ee (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4616
diff changeset
    59
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    60
/**
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    61
 * Generate a list of vehicles based on window type.
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    62
 * @param list        Pointer to list to add vehicles to
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    63
 * @param type        Type of vehicle
10207
c291a21b304e (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium
parents: 10193
diff changeset
    64
 * @param owner       Company to generate list for
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    65
 * @param index       This parameter has different meanings depending on window_type
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    66
 *    <ul>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    67
 *      <li>VLW_STATION_LIST:  index of station to generate a list for</li>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    68
 *      <li>VLW_SHARED_ORDERS: index of order to generate a list for<li>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    69
 *      <li>VLW_STANDARD: not used<li>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    70
 *      <li>VLW_DEPOT_LIST: TileIndex of the depot/hangar to make the list for</li>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    71
 *      <li>VLW_GROUP_LIST: index of group to generate a list for</li>
9963
9823664dd4af (svn r14118) -Fix(r14104): typos creeping like bugs
belugas
parents: 9949
diff changeset
    72
 *      <li>VLW_WAYPOINT_LIST: index of waypoint to generate a list for</li>
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    73
 *    </ul>
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    74
 * @param window_type The type of window the list is for, using the VLW_ flags in vehicle_gui.h
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    75
 */
10207
c291a21b304e (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium
parents: 10193
diff changeset
    76
void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type)
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    77
{
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    78
	list->Clear();
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    79
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    80
	const Vehicle *v;
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    81
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    82
	switch (window_type) {
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    83
		case VLW_STATION_LIST:
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    84
			FOR_ALL_VEHICLES(v) {
6773
bc98b0b16ec4 (svn r10009) -Codechange: Add and use Vehicle::IsPrimaryVehicle to replace individual checks depending on the vehicle type.
maedhros
parents: 6727
diff changeset
    85
				if (v->type == type && v->IsPrimaryVehicle()) {
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    86
					const Order *order;
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    87
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    88
					FOR_VEHICLE_ORDERS(v, order) {
8840
332412c2e9c1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium
parents: 8838
diff changeset
    89
						if (order->IsType(OT_GOTO_STATION) && order->GetDestination() == index) {
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    90
							*list->Append() = v;
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    91
							break;
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    92
						}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    93
					}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    94
				}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    95
			}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
    96
			break;
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    97
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
    98
		case VLW_SHARED_ORDERS:
9942
c3677fa5563f (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium
parents: 9941
diff changeset
    99
			/* Add all vehicles from this vehicle's shared order list */
c3677fa5563f (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium
parents: 9941
diff changeset
   100
			for (v = GetVehicle(index); v != NULL; v = v->NextShared()) {
c3677fa5563f (svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
rubidium
parents: 9941
diff changeset
   101
				*list->Append() = v;
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   102
			}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   103
			break;
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   104
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   105
		case VLW_STANDARD:
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   106
			FOR_ALL_VEHICLES(v) {
6773
bc98b0b16ec4 (svn r10009) -Codechange: Add and use Vehicle::IsPrimaryVehicle to replace individual checks depending on the vehicle type.
maedhros
parents: 6727
diff changeset
   107
				if (v->type == type && v->owner == owner && v->IsPrimaryVehicle()) {
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   108
					*list->Append() = v;
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   109
				}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   110
			}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   111
			break;
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   112
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   113
		case VLW_DEPOT_LIST:
4681
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   114
			FOR_ALL_VEHICLES(v) {
6773
bc98b0b16ec4 (svn r10009) -Codechange: Add and use Vehicle::IsPrimaryVehicle to replace individual checks depending on the vehicle type.
maedhros
parents: 6727
diff changeset
   115
				if (v->type == type && v->IsPrimaryVehicle()) {
4681
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   116
					const Order *order;
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   117
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   118
					FOR_VEHICLE_ORDERS(v, order) {
8840
332412c2e9c1 (svn r12588) -Codechange: do not access the destination of an order directly.
rubidium
parents: 8838
diff changeset
   119
						if (order->IsType(OT_GOTO_DEPOT) && order->GetDestination() == index) {
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   120
							*list->Append() = v;
4681
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   121
							break;
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   122
						}
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   123
					}
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   124
				}
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   125
			}
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   126
			break;
bc077405e9a8 (svn r6586) -Feature: [depot window] added a vehicle list window with all vehicles having a certain depot in their orders
bjarni
parents: 4678
diff changeset
   127
9963
9823664dd4af (svn r14118) -Fix(r14104): typos creeping like bugs
belugas
parents: 9949
diff changeset
   128
		case VLW_WAYPOINT_LIST:
9949
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   129
			FOR_ALL_VEHICLES(v) {
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   130
				if (v->type == type && v->IsPrimaryVehicle()) {
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   131
					const Order *order;
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   132
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   133
					FOR_VEHICLE_ORDERS(v, order) {
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   134
						if (order->IsType(OT_GOTO_WAYPOINT) && order->GetDestination() == index) {
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   135
							*list->Append() = v;
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   136
							break;
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   137
						}
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   138
					}
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   139
				}
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   140
			}
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   141
			break;
392998225bdd (svn r14104) -Feature: Add a window for waypoints, allowing to view all the trains having the selected waypoint in their orders.
belugas
parents: 9942
diff changeset
   142
8970
da7261f48b7e (svn r12762) -Fix: tabs after the first non-tab character are generally not okay (or lines starting with a space and then tabs).
rubidium
parents: 8962
diff changeset
   143
		case VLW_GROUP_LIST:
6643
f81bee57bc09 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium
parents: 6641
diff changeset
   144
			FOR_ALL_VEHICLES(v) {
6773
bc98b0b16ec4 (svn r10009) -Codechange: Add and use Vehicle::IsPrimaryVehicle to replace individual checks depending on the vehicle type.
maedhros
parents: 6727
diff changeset
   145
				if (v->type == type && v->IsPrimaryVehicle() &&
bc98b0b16ec4 (svn r10009) -Codechange: Add and use Vehicle::IsPrimaryVehicle to replace individual checks depending on the vehicle type.
maedhros
parents: 6727
diff changeset
   146
						v->owner == owner && v->group_id == index) {
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   147
					*list->Append() = v;
6643
f81bee57bc09 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium
parents: 6641
diff changeset
   148
				}
f81bee57bc09 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium
parents: 6641
diff changeset
   149
			}
f81bee57bc09 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium
parents: 6641
diff changeset
   150
			break;
f81bee57bc09 (svn r9874) -Feature: advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group. Original code by nycom and graphics by skidd13.
rubidium
parents: 6641
diff changeset
   151
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   152
		default: NOT_REACHED(); break;
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   153
	}
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   154
9348
dc680f675138 (svn r13245) -Codechange: Use SmallVectors for generating vehicle lists, simplifying calling code somewhat.
peter1138
parents: 9345
diff changeset
   155
	list->Compact();
4497
9d43f65d9e78 (svn r6282) -Codechange: made a function to create the vehicle list for vehicle list windows
bjarni
parents: 4495
diff changeset
   156
}