mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 16:55:36 +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;
|
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>
|
template<class OBJ, class CONTAINER, typename KEYTYPE>
|
||||||
CONTAINER IDatastoreObjectList<OBJ, CONTAINER, KEYTYPE>::fromMultipleJsonFormats(const QJsonObject &jsonObject)
|
CONTAINER IDatastoreObjectList<OBJ, CONTAINER, KEYTYPE>::fromMultipleJsonFormats(const QJsonObject &jsonObject)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ namespace BlackMisc
|
|||||||
//! Any object without key?
|
//! Any object without key?
|
||||||
bool containsAnyObjectWithoutKey() const;
|
bool containsAnyObjectWithoutKey() const;
|
||||||
|
|
||||||
|
//! Contains object with key?
|
||||||
|
bool containsDbKey(KEYTYPE key) const;
|
||||||
|
|
||||||
//! From multiple JSON formats
|
//! From multiple JSON formats
|
||||||
//! \remark supports native swift C++ format, DB format, and cache format
|
//! \remark supports native swift C++ format, DB format, and cache format
|
||||||
static CONTAINER fromMultipleJsonFormats(const QJsonObject &jsonObject);
|
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
|
CAircraftModelList CAircraftModelList::findColorLiveries() const
|
||||||
{
|
{
|
||||||
return this->findBy([ = ](const CAircraftModel & model)
|
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
|
//! \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;
|
CAircraftModelList findByCombinedAndManufacturer(const QString &combinedType, const QString &manufacturer) const;
|
||||||
|
|
||||||
//! Find models with color liveries
|
//! Find color liveries
|
||||||
CAircraftModelList findColorLiveries() const;
|
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
|
//! Find by military flag, \c false returns civilian models
|
||||||
CAircraftModelList findByMilitaryFlag(bool military) const;
|
CAircraftModelList findByMilitaryFlag(bool military) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user