Files
@ r9858:33377a23cc7d
Branch filter:
Location: cpp/openttd-patchpack/source/src/vehicle_gui.h
r9858:33377a23cc7d
4.3 KiB
text/x-c
(svn r14003) -Codechange: Replace numbers with Colours enum opn some DrawArrowButtons calls
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | /* $Id$ */
/** @file vehicle_gui.h Functions related to the vehicle's GUIs. */
#ifndef VEHICLE_GUI_H
#define VEHICLE_GUI_H
#include "sortlist_type.h"
#include "window_type.h"
#include "vehicle_type.h"
#include "order_type.h"
#include "station_type.h"
#include "engine_type.h"
void DrawVehicleProfitButton(const Vehicle *v, int x, int y);
void ShowVehicleRefitWindow(const Vehicle *v, VehicleOrderID order);
/** Constants of vehicle view widget indices */
enum VehicleViewWindowWidgets {
VVW_WIDGET_CLOSEBOX = 0,
VVW_WIDGET_CAPTION,
VVW_WIDGET_STICKY,
VVW_WIDGET_PANEL,
VVW_WIDGET_VIEWPORT,
VVW_WIDGET_START_STOP_VEH,
VVW_WIDGET_CENTER_MAIN_VIEH,
VVW_WIDGET_GOTO_DEPOT,
VVW_WIDGET_REFIT_VEH,
VVW_WIDGET_SHOW_ORDERS,
VVW_WIDGET_SHOW_DETAILS,
VVW_WIDGET_CLONE_VEH,
VVW_WIDGET_EMPTY_BOTTOM_RIGHT,
VVW_WIDGET_RESIZE,
VVW_WIDGET_TURN_AROUND,
VVW_WIDGET_FORCE_PROCEED,
};
/** Start of functions regarding vehicle list windows */
enum {
PLY_WND_PRC__OFFSET_TOP_WIDGET = 26,
PLY_WND_PRC__SIZE_OF_ROW_TINY = 13,
PLY_WND_PRC__SIZE_OF_ROW_SMALL = 26,
PLY_WND_PRC__SIZE_OF_ROW_BIG = 36,
PLY_WND_PRC__SIZE_OF_ROW_BIG2 = 39,
};
/** Vehicle List Window type flags */
enum {
VLW_STANDARD = 0 << 8,
VLW_SHARED_ORDERS = 1 << 8,
VLW_STATION_LIST = 2 << 8,
VLW_DEPOT_LIST = 3 << 8,
VLW_GROUP_LIST = 4 << 8,
VLW_MASK = 0x700,
};
static inline bool ValidVLWFlags(uint16 flags)
{
return (flags == VLW_STANDARD || flags == VLW_SHARED_ORDERS || flags == VLW_STATION_LIST || flags == VLW_DEPOT_LIST || flags == VLW_GROUP_LIST);
}
int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number);
void DrawTrainImage(const Vehicle *v, int x, int y, VehicleID selection, int count, int skip);
void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection, int count);
void DrawShipImage(const Vehicle *v, int x, int y, VehicleID selection);
void DrawAircraftImage(const Vehicle *v, int x, int y, VehicleID selection);
void ShowBuildVehicleWindow(TileIndex tile, VehicleType type);
uint ShowAdditionalText(int x, int y, uint w, EngineID engine);
uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine);
void ShowVehicleListWindow(const Vehicle *v);
void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type);
void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, StationID station);
void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, TileIndex depot_tile);
void DrawSmallOrderList(const Vehicle *v, int x, int y);
void DrawVehicleImage(const Vehicle *v, int x, int y, VehicleID selection, int count, int skip);
/* ChangeVehicleViewWindow() moves all windows for one vehicle to another vehicle.
* For ease of use it can be called with both Vehicle pointers and VehicleIDs. */
void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index);
static inline uint GetVehicleListHeight(VehicleType type)
{
return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
}
/** Get WindowClass for vehicle list of given vehicle type
* @param vt vehicle type to check
* @return corresponding window class
* @note works only for player buildable vehicle types
*/
static inline WindowClass GetWindowClassForVehicleType(VehicleType vt)
{
switch (vt) {
default: NOT_REACHED();
case VEH_TRAIN: return WC_TRAINS_LIST;
case VEH_ROAD: return WC_ROADVEH_LIST;
case VEH_SHIP: return WC_SHIPS_LIST;
case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
}
}
/* Unified window procedure */
void ShowVehicleViewWindow(const Vehicle *v);
Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y);
typedef GUIList<const Vehicle*> GUIVehicleList;
struct VehicleListBase {
GUIVehicleList vehicles; ///< The list of vehicles
Listing *sorting; ///< Pointer to the vehicle type related sorting.
VehicleType vehicle_type; ///< The vehicle type that is sorted
static const StringID vehicle_sorter_names[];
static GUIVehicleList::SortFunction *const vehicle_sorter_funcs[];
VehicleListBase()
{
this->vehicles.SetSortFuncs(this->vehicle_sorter_funcs);
}
};
struct Sorting {
Listing aircraft;
Listing roadveh;
Listing ship;
Listing train;
};
extern Sorting _sorting;
/* sorter stuff */
void SortVehicleList(VehicleListBase *vl);
void BuildVehicleList(VehicleListBase *vl, PlayerID owner, uint16 index, uint16 window_type);
#endif /* VEHICLE_GUI_H */
|