mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 21:15:33 +08:00
Ref T658, model list utility functions (to be exposed as Js object)
This commit is contained in:
committed by
Mat Sutcliffe
parent
ef2398f6a9
commit
6eb6cea9ad
@@ -261,6 +261,17 @@ namespace BlackMisc
|
||||
return false;
|
||||
}
|
||||
|
||||
template<class OBJ, class CONTAINER, typename KEYTYPE>
|
||||
bool IDatastoreObjectList<OBJ, CONTAINER, KEYTYPE>::containsDbKey(KEYTYPE key) const
|
||||
{
|
||||
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
|
||||
{
|
||||
if (!obj.hasValidDbKey()) { continue; }
|
||||
if (obj.getDbKey() == key) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
template<class OBJ, class CONTAINER, typename KEYTYPE>
|
||||
CONTAINER IDatastoreObjectList<OBJ, CONTAINER, KEYTYPE>::fromMultipleJsonFormats(const QJsonObject &jsonObject)
|
||||
{
|
||||
|
||||
@@ -84,6 +84,9 @@ namespace BlackMisc
|
||||
//! Any object without key?
|
||||
bool containsAnyObjectWithoutKey() const;
|
||||
|
||||
//! Contains object with key?
|
||||
bool containsDbKey(KEYTYPE key) const;
|
||||
|
||||
//! From multiple JSON formats
|
||||
//! \remark supports native swift C++ format, DB format, and cache format
|
||||
static CONTAINER fromMultipleJsonFormats(const QJsonObject &jsonObject);
|
||||
|
||||
@@ -347,6 +347,34 @@ namespace BlackMisc
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findClosestColorDistance(const CRgbColor &fuselage, const CRgbColor &tail) const
|
||||
{
|
||||
double distance = 2.0;
|
||||
CAircraftModelList models;
|
||||
for (const CAircraftModel &m : (*this))
|
||||
{
|
||||
const CLivery &l = m.getLivery();
|
||||
if (!l.hasColorTail() || !l.hasColorFuselage()) { continue; }
|
||||
const double d = l.getColorDistance(fuselage, tail);
|
||||
if (qFuzzyCompare(d, distance))
|
||||
{
|
||||
models.push_back(m);
|
||||
}
|
||||
else if (distance > d)
|
||||
{
|
||||
models.clear();
|
||||
models.push_back(m);
|
||||
distance = d;
|
||||
}
|
||||
}
|
||||
return models;
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findClosestFuselageColorDistance(const CRgbColor &color) const
|
||||
{
|
||||
return this->findClosestColorDistance(color, color);
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findColorLiveries() const
|
||||
{
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
|
||||
@@ -210,9 +210,14 @@ namespace BlackMisc
|
||||
//! \remark kind of pseudo family, as in most cases the same combined type of a manufacturer means similar aircraft
|
||||
CAircraftModelList findByCombinedAndManufacturer(const QString &combinedType, const QString &manufacturer) const;
|
||||
|
||||
//! Find models with color liveries
|
||||
//! Find color liveries
|
||||
CAircraftModelList findColorLiveries() const;
|
||||
|
||||
//! Find models with the closest color distance @{
|
||||
CAircraftModelList findClosestColorDistance(const CRgbColor &fuselage, const CRgbColor &tail) const;
|
||||
CAircraftModelList findClosestFuselageColorDistance(const CRgbColor &color) const;
|
||||
//! @}
|
||||
|
||||
//! Find by military flag, \c false returns civilian models
|
||||
CAircraftModelList findByMilitaryFlag(bool military) const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user