src/build_vehicle_gui.cpp
changeset 8148 0e857887bbfa
parent 8144 65cec0877b78
child 8211 29a8510dfd62
equal deleted inserted replaced
8147:ddfb264d69ad 8148:0e857887bbfa
   266 	if (r == 0) return EngineNumberSorter(a, b);
   266 	if (r == 0) return EngineNumberSorter(a, b);
   267 
   267 
   268 	return _internal_sort_order ? -r : r;
   268 	return _internal_sort_order ? -r : r;
   269 }
   269 }
   270 
   270 
       
   271 /* Road vehicle sorting functions */
       
   272 static int CDECL RoadVehEngineCostSorter(const void *a, const void *b)
       
   273 {
       
   274 	int va = RoadVehInfo(*(const EngineID*)a)->base_cost;
       
   275 	int vb = RoadVehInfo(*(const EngineID*)b)->base_cost;
       
   276 	int r = va - vb;
       
   277 
       
   278 	return _internal_sort_order ? -r : r;
       
   279 }
       
   280 
       
   281 static int CDECL RoadVehEngineSpeedSorter(const void *a, const void *b)
       
   282 {
       
   283 	int va = RoadVehInfo(*(const EngineID*)a)->max_speed;
       
   284 	int vb = RoadVehInfo(*(const EngineID*)b)->max_speed;
       
   285 	int r = va - vb;
       
   286 
       
   287 	return _internal_sort_order ? -r : r;
       
   288 }
       
   289 
       
   290 static int CDECL RoadVehEngineRunningCostSorter(const void *a, const void *b)
       
   291 {
       
   292 	const int va = RoadVehInfo(*(const EngineID*)a)->running_cost;
       
   293 	const int vb = RoadVehInfo(*(const EngineID*)b)->running_cost;
       
   294 	const int r = va - vb;
       
   295 
       
   296 	if (r == 0) {
       
   297 		/* Use EngineID to sort instead since we want consistent sorting */
       
   298 		return EngineNumberSorter(a, b);
       
   299 	}
       
   300 	return _internal_sort_order ? -r : r;
       
   301 }
       
   302 
   271 static int CDECL RoadVehEngineCapacitySorter(const void *a, const void *b)
   303 static int CDECL RoadVehEngineCapacitySorter(const void *a, const void *b)
   272 {
   304 {
   273 	int va = RoadVehInfo(*(const EngineID*)a)->capacity;
   305 	int va = RoadVehInfo(*(const EngineID*)a)->capacity;
   274 	int vb = RoadVehInfo(*(const EngineID*)b)->capacity;
   306 	int vb = RoadVehInfo(*(const EngineID*)b)->capacity;
   275 	int r = va - vb;
   307 	int r = va - vb;
       
   308 
       
   309 	if (r == 0) {
       
   310 		/* Use EngineID to sort instead since we want consistent sorting */
       
   311 		return EngineNumberSorter(a, b);
       
   312 	}
       
   313 	return _internal_sort_order ? -r : r;
       
   314 }
       
   315 
       
   316 /* Road vehicle sorting functions */
       
   317 static int CDECL ShipEngineCostSorter(const void *a, const void *b)
       
   318 {
       
   319 	int va = ShipVehInfo(*(const EngineID*)a)->base_cost;
       
   320 	int vb = ShipVehInfo(*(const EngineID*)b)->base_cost;
       
   321 	int r = va - vb;
       
   322 
       
   323 	return _internal_sort_order ? -r : r;
       
   324 }
       
   325 
       
   326 static int CDECL ShipEngineSpeedSorter(const void *a, const void *b)
       
   327 {
       
   328 	int va = ShipVehInfo(*(const EngineID*)a)->max_speed;
       
   329 	int vb = ShipVehInfo(*(const EngineID*)b)->max_speed;
       
   330 	int r = va - vb;
       
   331 
       
   332 	return _internal_sort_order ? -r : r;
       
   333 }
       
   334 
       
   335 static int CDECL ShipEngineRunningCostSorter(const void *a, const void *b)
       
   336 {
       
   337 	const int va = ShipVehInfo(*(const EngineID*)a)->running_cost;
       
   338 	const int vb = ShipVehInfo(*(const EngineID*)b)->running_cost;
       
   339 	const int r = va - vb;
   276 
   340 
   277 	if (r == 0) {
   341 	if (r == 0) {
   278 		/* Use EngineID to sort instead since we want consistent sorting */
   342 		/* Use EngineID to sort instead since we want consistent sorting */
   279 		return EngineNumberSorter(a, b);
   343 		return EngineNumberSorter(a, b);
   280 	}
   344 	}
   364 	&EngineReliabilitySorter,
   428 	&EngineReliabilitySorter,
   365 	&TrainEngineCapacitySorter,
   429 	&TrainEngineCapacitySorter,
   366 }, {
   430 }, {
   367 	/* Road vehicles */
   431 	/* Road vehicles */
   368 	&EngineNumberSorter,
   432 	&EngineNumberSorter,
       
   433 	&RoadVehEngineCostSorter,
       
   434 	&RoadVehEngineSpeedSorter,
   369 	&EngineIntroDateSorter,
   435 	&EngineIntroDateSorter,
   370 	&EngineNameSorter,
   436 	&EngineNameSorter,
       
   437 	&RoadVehEngineRunningCostSorter,
   371 	&EngineReliabilitySorter,
   438 	&EngineReliabilitySorter,
   372 	&RoadVehEngineCapacitySorter,
   439 	&RoadVehEngineCapacitySorter,
   373 }, {
   440 }, {
   374 	/* Ships */
   441 	/* Ships */
   375 	&EngineNumberSorter,
   442 	&EngineNumberSorter,
       
   443 	&ShipEngineCostSorter,
       
   444 	&ShipEngineSpeedSorter,
   376 	&EngineIntroDateSorter,
   445 	&EngineIntroDateSorter,
   377 	&EngineNameSorter,
   446 	&EngineNameSorter,
       
   447 	&ShipEngineRunningCostSorter,
   378 	&EngineReliabilitySorter,
   448 	&EngineReliabilitySorter,
   379 	&ShipEngineCapacitySorter,
   449 	&ShipEngineCapacitySorter,
   380 }, {
   450 }, {
   381 	/* Aircraft */
   451 	/* Aircraft */
   382 	&EngineNumberSorter,
   452 	&EngineNumberSorter,
   403 	STR_ENGINE_SORT_CARGO_CAPACITY,
   473 	STR_ENGINE_SORT_CARGO_CAPACITY,
   404 	INVALID_STRING_ID
   474 	INVALID_STRING_ID
   405 }, {
   475 }, {
   406 	/* Road vehicles */
   476 	/* Road vehicles */
   407 	STR_ENGINE_SORT_ENGINE_ID,
   477 	STR_ENGINE_SORT_ENGINE_ID,
       
   478 	STR_ENGINE_SORT_COST,
       
   479 	STR_SORT_BY_MAX_SPEED,
   408 	STR_ENGINE_SORT_INTRO_DATE,
   480 	STR_ENGINE_SORT_INTRO_DATE,
   409 	STR_SORT_BY_DROPDOWN_NAME,
   481 	STR_SORT_BY_DROPDOWN_NAME,
       
   482 	STR_ENGINE_SORT_RUNNING_COST,
   410 	STR_SORT_BY_RELIABILITY,
   483 	STR_SORT_BY_RELIABILITY,
   411 	STR_ENGINE_SORT_CARGO_CAPACITY,
   484 	STR_ENGINE_SORT_CARGO_CAPACITY,
   412 	INVALID_STRING_ID
   485 	INVALID_STRING_ID
   413 }, {
   486 }, {
   414 	/* Ships */
   487 	/* Ships */
   415 	STR_ENGINE_SORT_ENGINE_ID,
   488 	STR_ENGINE_SORT_ENGINE_ID,
       
   489 	STR_ENGINE_SORT_COST,
       
   490 	STR_SORT_BY_MAX_SPEED,
   416 	STR_ENGINE_SORT_INTRO_DATE,
   491 	STR_ENGINE_SORT_INTRO_DATE,
   417 	STR_SORT_BY_DROPDOWN_NAME,
   492 	STR_SORT_BY_DROPDOWN_NAME,
       
   493 	STR_ENGINE_SORT_RUNNING_COST,
   418 	STR_SORT_BY_RELIABILITY,
   494 	STR_SORT_BY_RELIABILITY,
   419 	STR_ENGINE_SORT_CARGO_CAPACITY,
   495 	STR_ENGINE_SORT_CARGO_CAPACITY,
   420 	INVALID_STRING_ID
   496 	INVALID_STRING_ID
   421 }, {
   497 }, {
   422 	/* Aircraft */
   498 	/* Aircraft */