Merge branch 'master' into jgrpp

# Conflicts:
#	src/group_gui.cpp
#	src/lang/english.txt
#	src/saveload/saveload.cpp
#	src/widgets/group_widget.h
This commit is contained in:
Jonathan G Rennison
2019-01-31 18:19:45 +00:00
24 changed files with 573 additions and 149 deletions

View File

@@ -2529,14 +2529,24 @@ const Livery *GetEngineLivery(EngineID engine_type, CompanyID company, EngineID
const Company *c = Company::Get(company);
LiveryScheme scheme = LS_DEFAULT;
/* The default livery is always available for use, but its in_use flag determines
* whether any _other_ liveries are in use. */
if (c->livery[LS_DEFAULT].in_use && (livery_setting == LIT_ALL || (livery_setting == LIT_COMPANY && company == _local_company))) {
/* Determine the livery scheme to use */
scheme = GetEngineLiveryScheme(engine_type, parent_engine_type, v);
if (livery_setting == LIT_ALL || (livery_setting == LIT_COMPANY && company == _local_company)) {
if (v != NULL) {
const Group *g = Group::GetIfValid(v->First()->group_id);
if (g != NULL) {
/* Traverse parents until we find a livery or reach the top */
while (g->livery.in_use == 0 && g->parent != INVALID_GROUP) {
g = Group::Get(g->parent);
}
if (g->livery.in_use != 0) return &g->livery;
}
}
/* Switch back to the default scheme if the resolved scheme is not in use */
if (!c->livery[scheme].in_use) scheme = LS_DEFAULT;
/* The default livery is always available for use, but its in_use flag determines
* whether any _other_ liveries are in use. */
if (c->livery[LS_DEFAULT].in_use != 0) {
/* Determine the livery scheme to use */
scheme = GetEngineLiveryScheme(engine_type, parent_engine_type, v);
}
}
return &c->livery[scheme];