(svn r27427) -Fix: Use the NewGRF railtype sorting order in the infrastructure window.

This commit is contained in:
frosch
2015-10-30 17:24:30 +00:00
parent 0f8f738942
commit ade25fff71
4 changed files with 36 additions and 17 deletions

View File

@@ -44,6 +44,8 @@
typedef SmallVector<Train *, 16> TrainList;
RailtypeInfo _railtypes[RAILTYPE_END];
RailType _sorted_railtypes[RAILTYPE_END];
uint8 _sorted_railtypes_size;
assert_compile(sizeof(_original_railtypes) <= sizeof(_railtypes));
@@ -109,6 +111,17 @@ void ResolveRailTypeGUISprites(RailtypeInfo *rti)
}
}
/**
* Compare railtypes based on their sorting order.
* @param first The railtype to compare to.
* @param second The railtype to compare.
* @return True iff the first should be sorted before the second.
*/
static int CDECL CompareRailTypes(const RailType *first, const RailType *second)
{
return GetRailTypeInfo(*first)->sorting_order - GetRailTypeInfo(*second)->sorting_order;
}
/**
* Resolve sprites of custom rail types
*/
@@ -118,6 +131,14 @@ void InitRailTypes()
RailtypeInfo *rti = &_railtypes[rt];
ResolveRailTypeGUISprites(rti);
}
_sorted_railtypes_size = 0;
for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
if (_railtypes[rt].label != 0) {
_sorted_railtypes[_sorted_railtypes_size++] = rt;
}
}
QSortT(_sorted_railtypes, _sorted_railtypes_size, CompareRailTypes);
}
/**