vehicle_gui.h
author pasky
Fri, 26 Nov 2004 21:14:42 +0000
changeset 513 a6eaa0d97d8d
parent 505 1d5e770d2ce4
child 588 03521b270f62
permissions -rw-r--r--
(svn r828) Everyone welcome table/sprites.h in trunk - so far not in use besides enum AnimCursors migrated from viewport.h and tiny fragment of enum Sprites migrated from ttd.h (we should slowly convert trunk to use the symbolic names instead of sprite numbers too to reduce the delta to map). Ported from the map branch, where the work was done by Darkvater, Celestar and Tron.
#ifndef VEHICLE_GUI_H
#define VEHICLE_GUI_H

void DrawVehicleProfitButton(Vehicle *v, int x, int y);
void InitializeVehiclesGuiList();

/* sorter stuff */
typedef struct SortStruct { // store owner through sorting process
	uint32	index;
	byte		owner;
} SortStruct;

int CDECL GeneralOwnerSorter(const void *a, const void *b);
void VehicleSorter(SortStruct *firstelement, uint32 n, uint16 size);
VARDEF uint32	_internal_name_sorter_id;	// internal StringID for default vehicle-names
VARDEF uint32	_last_vehicle_idx;				// cached index to hopefully speed up name-sorting
VARDEF bool		_internal_sort_order;			// descending/ascending

#define PERIODIC_RESORT_DAYS 10
#define DEF_SORTER(yyyy) int CDECL yyyy(const void *a, const void *b)

DEF_SORTER(VehicleUnsortedSorter);
DEF_SORTER(VehicleNumberSorter);
DEF_SORTER(VehicleNameSorter);
DEF_SORTER(VehicleAgeSorter);
DEF_SORTER(VehicleProfitThisYearSorter);
DEF_SORTER(VehicleProfitLastYearSorter);
DEF_SORTER(VehicleCargoSorter);
DEF_SORTER(VehicleReliabilitySorter);
DEF_SORTER(VehicleMaxSpeedSorter);

typedef DEF_SORTER(VehicleSortListingTypeFunctions);

#define SORT_BY_UNSORTED 0
extern VehicleSortListingTypeFunctions * const _vehicle_sorter[];
extern const StringID _vehicle_sort_listing[];

enum VehicleSortTypes {
	VEHTRAIN		= 0,
	VEHROAD			= 1,
	VEHSHIP			= 2,
	VEHAIRCRAFT	= 3
};

VARDEF bool _vehicle_sort_dirty[4];	// global sort, vehicles added/removed (4 types of vehicles)

VARDEF bool _train_sort_dirty[MAX_PLAYERS];			// vehicles for a given player needs to be resorted (new criteria)
VARDEF byte _train_sort_type[MAX_PLAYERS];			// different criteria for sorting
VARDEF bool _train_sort_order[MAX_PLAYERS];			// sort descending/ascending

VARDEF bool _aircraft_sort_dirty[MAX_PLAYERS];	// vehicles for a given player needs to be resorted (new criteria)
VARDEF byte _aircraft_sort_type[MAX_PLAYERS];		// different criteria for sorting
VARDEF bool _aircraft_sort_order[MAX_PLAYERS];	// sort descending/ascending

VARDEF bool _ship_sort_dirty[MAX_PLAYERS];			// vehicles for a given player needs to be resorted (new criteria)
VARDEF byte _ship_sort_type[MAX_PLAYERS];				// different criteria for sorting
VARDEF bool _ship_sort_order[MAX_PLAYERS];			// sort descending/ascending

VARDEF bool _road_sort_dirty[MAX_PLAYERS];			// vehicles for a given player needs to be resorted (new criteria)
VARDEF byte _road_sort_type[MAX_PLAYERS];				// different criteria for sorting
VARDEF bool _road_sort_order[MAX_PLAYERS];			// sort descending/ascending

enum {
  PLY_WND_PRC__OFFSET_TOP_WIDGET	= 26,
	PLY_WND_PRC__SIZE_OF_ROW_SMALL	= 26,
  PLY_WND_PRC__SIZE_OF_ROW_BIG		= 36,
};

#endif /* VEHICLE_GUI_H */