mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 15:15:50 +08:00
Ref T261, Ref T251 gnd flag support in context/client provider
* allow to set gnd.flag capability via context/client * utility functions in client provider
This commit is contained in:
@@ -100,14 +100,25 @@ namespace BlackMisc
|
||||
}
|
||||
|
||||
bool CClientProvider::addClientGndCapability(const CCallsign &callsign)
|
||||
{
|
||||
return this->setClientGndCapability(callsign, true);
|
||||
}
|
||||
|
||||
bool CClientProvider::setClientGndCapability(const CCallsign &callsign, bool supportGndFlag)
|
||||
{
|
||||
CClient client = this->getClientOrDefaultForCallsign(callsign);
|
||||
|
||||
// need to change?
|
||||
if (!client.isValid()) { return false; } // no client
|
||||
if (client.hasGndFlagCapability()) { return true; } // already set, but set
|
||||
|
||||
client.addCapability(CClient::FsdWithGroundFlag);
|
||||
if (client.hasGndFlagCapability() == supportGndFlag) { return true; } // already set, but set
|
||||
if (supportGndFlag)
|
||||
{
|
||||
client.addCapability(CClient::FsdWithGroundFlag);
|
||||
}
|
||||
else
|
||||
{
|
||||
client.removeCapability(CClient::FsdWithGroundFlag);
|
||||
}
|
||||
QWriteLocker l(&m_lockClient);
|
||||
m_clients.replaceOrAddObjectByCallsign(client);
|
||||
return true;
|
||||
|
||||
@@ -73,6 +73,10 @@ namespace BlackMisc
|
||||
//! Add gnd.flag capability
|
||||
//! \threadsafe
|
||||
virtual bool addClientGndCapability(const Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
//! Set gnd.flag capability
|
||||
//! \threadsafe
|
||||
virtual bool setClientGndCapability(const Aviation::CCallsign &callsign, bool supportGndFlag) = 0;
|
||||
};
|
||||
|
||||
//! Direct in memory access to client (network client) data
|
||||
@@ -93,6 +97,7 @@ namespace BlackMisc
|
||||
virtual int removeClient(const Aviation::CCallsign &callsign) override;
|
||||
virtual bool autoAdjustCientGndCapability(const Aviation::CAircraftSituation &situation) override;
|
||||
virtual bool addClientGndCapability(const Aviation::CCallsign &callsign) override;
|
||||
virtual bool setClientGndCapability(const Aviation::CCallsign &callsign, bool supportGndFlag) override;
|
||||
//! @}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user