mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 06:35:52 +08:00
refs #825, utility functions
* allow to prefer color liveries (idea: when no airline is found, a neutral livery looks better) * pick randomly among equal scores
This commit is contained in:
@@ -58,6 +58,16 @@ namespace BlackMisc
|
||||
return this->contains(&CAircraftModel::getCallsign, callsign);
|
||||
}
|
||||
|
||||
bool CAircraftModelList::containsCombinedType(const QString &combinedType) const
|
||||
{
|
||||
if (combinedType.isEmpty()) { return false; }
|
||||
const QString ct(combinedType.toUpper().trimmed());
|
||||
return this->containsBy([ & ](const CAircraftModel & model)
|
||||
{
|
||||
return model.getAircraftIcaoCode().getCombinedType() == ct;
|
||||
});
|
||||
}
|
||||
|
||||
bool CAircraftModelList::containsModelsWithAircraftAndAirlineDesignator(const QString &aircraftDesignator, const QString &airlineDesignator) const
|
||||
{
|
||||
return this->contains(&CAircraftModel::getAircraftIcaoCodeDesignator, aircraftDesignator, &CAircraftModel::getAirlineIcaoCodeDesignator, airlineDesignator);
|
||||
@@ -531,9 +541,12 @@ namespace BlackMisc
|
||||
ScoredModels CAircraftModelList::scoreFull(const CAircraftModel &remoteModel, bool ignoreZeroScores) const
|
||||
{
|
||||
ScoredModels scoreMap;
|
||||
// prefer colors if there is no airline
|
||||
const bool hasAirlineDesignator = remoteModel.hasAirlineDesignator() && this->contains(&CAircraftModel::getAirlineIcaoCodeDesignator, remoteModel.getAirlineIcaoCodeDesignator());
|
||||
const bool preferColorLiveries = !hasAirlineDesignator;
|
||||
for (const CAircraftModel &model : *this)
|
||||
{
|
||||
const int score = model.calculateScore(remoteModel);
|
||||
const int score = model.calculateScore(remoteModel, preferColorLiveries);
|
||||
if (ignoreZeroScores && score < 1) { continue; }
|
||||
scoreMap.insertMulti(score, model);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user