darkvater@164: #ifndef VEHICLE_GUI_H darkvater@164: #define VEHICLE_GUI_H darkvater@164: tron@588: struct vehiclelist_d; tron@588: darkvater@164: void DrawVehicleProfitButton(Vehicle *v, int x, int y); darkvater@164: void InitializeVehiclesGuiList(); darkvater@164: darkvater@164: /* sorter stuff */ tron@588: void RebuildVehicleLists(void); tron@588: void ResortVehicleLists(void); tron@588: tron@588: void BuildVehicleList(struct vehiclelist_d *vl, int type, int owner, int station); tron@588: void SortVehicleList(struct vehiclelist_d *vl); tron@588: darkvater@164: typedef struct SortStruct { // store owner through sorting process darkvater@164: uint32 index; darkvater@164: byte owner; darkvater@164: } SortStruct; darkvater@164: darkvater@168: int CDECL GeneralOwnerSorter(const void *a, const void *b); darkvater@168: void VehicleSorter(SortStruct *firstelement, uint32 n, uint16 size); darkvater@168: VARDEF uint32 _internal_name_sorter_id; // internal StringID for default vehicle-names darkvater@168: VARDEF uint32 _last_vehicle_idx; // cached index to hopefully speed up name-sorting darkvater@168: VARDEF bool _internal_sort_order; // descending/ascending darkvater@164: darkvater@168: #define PERIODIC_RESORT_DAYS 10 darkvater@168: #define DEF_SORTER(yyyy) int CDECL yyyy(const void *a, const void *b) darkvater@168: darkvater@168: DEF_SORTER(VehicleUnsortedSorter); darkvater@168: DEF_SORTER(VehicleNumberSorter); darkvater@168: DEF_SORTER(VehicleNameSorter); darkvater@168: DEF_SORTER(VehicleAgeSorter); darkvater@168: DEF_SORTER(VehicleProfitThisYearSorter); darkvater@168: DEF_SORTER(VehicleProfitLastYearSorter); darkvater@168: DEF_SORTER(VehicleCargoSorter); darkvater@168: DEF_SORTER(VehicleReliabilitySorter); darkvater@168: DEF_SORTER(VehicleMaxSpeedSorter); darkvater@168: darkvater@168: typedef DEF_SORTER(VehicleSortListingTypeFunctions); darkvater@168: darkvater@168: #define SORT_BY_UNSORTED 0 tron@505: extern VehicleSortListingTypeFunctions * const _vehicle_sorter[]; tron@505: extern const StringID _vehicle_sort_listing[]; bjarni@842: extern const StringID _rail_types_list[]; darkvater@164: darkvater@164: enum VehicleSortTypes { darkvater@164: VEHTRAIN = 0, darkvater@164: VEHROAD = 1, darkvater@164: VEHSHIP = 2, bjarni@842: VEHAIRCRAFT = 3 darkvater@164: }; darkvater@164: darkvater@164: enum { darkvater@164: PLY_WND_PRC__OFFSET_TOP_WIDGET = 26, darkvater@164: PLY_WND_PRC__SIZE_OF_ROW_SMALL = 26, darkvater@164: PLY_WND_PRC__SIZE_OF_ROW_BIG = 36, darkvater@164: }; darkvater@164: bjarni@842: void ShowReplaceVehicleWindow(byte vehicletype); bjarni@842: bjarni@842: void Set_DPARAM_Train_Engine_Build_Window(uint16 engine_number); bjarni@842: void Set_DPARAM_Train_Car_Build_Window(Window *w, uint16 engine_number); bjarni@842: void Set_DPARAM_Road_Veh_Build_Window(uint16 engine_number); bjarni@842: void Set_DPARAM_Aircraft_Build_Window(uint16 engine_number); bjarni@842: void Set_DPARAM_Ship_Build_Window(uint16 engine_number); bjarni@842: bjarni@842: darkvater@164: #endif /* VEHICLE_GUI_H */