mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +08:00
65 lines
2.3 KiB
C++
65 lines
2.3 KiB
C++
/* Copyright (C) 2019
|
|
* swift project Community / Contributors
|
|
*
|
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
|
* or distributed except according to the terms contained in the LICENSE file.
|
|
*/
|
|
|
|
//! \file
|
|
|
|
#ifndef BLACKMISC_SIMULATION_CATEGORYMATCHER_H
|
|
#define BLACKMISC_SIMULATION_CATEGORYMATCHER_H
|
|
|
|
#include "aircraftmodellist.h"
|
|
#include "blackmisc/aviation/aircraftcategorylist.h"
|
|
#include "blackmisc/blackmiscexport.h"
|
|
|
|
namespace BlackMisc
|
|
{
|
|
class CStatusMessageList;
|
|
|
|
namespace Simulation
|
|
{
|
|
class CSimulatedAircraft;
|
|
class CAircraftMatcherSetup;
|
|
|
|
//! Category matcher, uses the DB categories
|
|
class BLACKMISC_EXPORT CCategoryMatcher
|
|
{
|
|
public:
|
|
//! Log categories
|
|
static const BlackMisc::CLogCategoryList &getLogCategories();
|
|
|
|
//! Constructor
|
|
CCategoryMatcher() {}
|
|
|
|
//! Used categories
|
|
void setCategories(const Aviation::CAircraftCategoryList &categories);
|
|
|
|
//! Specialized categories @{
|
|
const Aviation::CAircraftCategoryList &gliderCategories() const { return m_gliders; }
|
|
const Aviation::CAircraftCategoryList &militaryWingCategories() const { return m_militaryWingAircraft; }
|
|
const Aviation::CAircraftCategoryList &militaryRotorCategories() const { return m_militaryRotorAircraft; }
|
|
//! @}
|
|
|
|
//! Reduce by categories
|
|
CAircraftModelList reduceByCategories(const CAircraftModelList &modelSet, const CAircraftMatcherSetup &setup, const CSimulatedAircraft &remoteAircraft, bool &reduced, bool shortLog, CStatusMessageList *log = nullptr) const;
|
|
|
|
private:
|
|
//! Glider?
|
|
bool isGlider(const Aviation::CAircraftIcaoCode &icao) const;
|
|
|
|
//! Get the glider top level
|
|
int gliderFirstLevel() const;
|
|
|
|
Aviation::CAircraftCategoryList m_all; //!< sorted by level
|
|
Aviation::CAircraftCategoryList m_gliders; //!< sorted by level
|
|
Aviation::CAircraftCategoryList m_militaryWingAircraft;
|
|
Aviation::CAircraftCategoryList m_militaryRotorAircraft;
|
|
};
|
|
} // ns
|
|
} // namespace
|
|
|
|
#endif // guard
|