swift
planeinformation.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include "misc/logmessage.h"
7 
8 namespace swift::core::fsd
9 {
10  PlaneInformation::PlaneInformation(const QString &sender, const QString &receiver, const QString &aircraft,
11  const QString &airline = QString(), const QString &livery = QString())
12  : MessageBase(sender, receiver), m_aircraft(aircraft), m_airline(airline), m_livery(livery)
13  {}
14 
16  {
17  QStringList pairs;
18  if (!m_aircraft.isEmpty()) { pairs << QString("EQUIPMENT=" + m_aircraft); }
19  if (!m_airline.isEmpty()) { pairs << QString("AIRLINE=" + m_airline); }
20  if (!m_livery.isEmpty()) { pairs << QString("LIVERY=" + m_livery); }
21 
22  QStringList tokens;
23  tokens.push_back(m_sender);
24  tokens.push_back(m_receiver);
25  tokens.push_back("PI");
26  tokens.push_back("GEN");
27  tokens.push_back(pairs.join(":"));
28  return tokens;
29  }
30 
32  {
33  if (tokens.size() < 5)
34  {
35  swift::misc::CLogMessage(static_cast<PlaneInformation *>(nullptr)).debug(u"Wrong number of arguments.");
36  return {};
37  }
38 
39  QString aircraft;
40  QString airline;
41  QString livery;
42 
43  for (int i = 4; i < tokens.size(); ++i)
44  {
45  const QStringList pair = tokens.at(i).split("=");
46  if (pair.size() == 2)
47  {
48  if (pair[0] == QLatin1String("EQUIPMENT")) { aircraft = pair[1]; }
49  else if (pair[0] == QLatin1String("AIRLINE")) { airline = pair[1]; }
50  else if (pair[0] == QLatin1String("LIVERY")) { livery = pair[1]; }
51  }
52  }
53  return { tokens[0], tokens[1], aircraft, airline, livery };
54  }
55 } // namespace swift::core::fsd
FSD message base class.
Definition: messagebase.h:58
QString m_receiver
message receiver
Definition: messagebase.h:89
QString m_sender
message sender
Definition: messagebase.h:88
This packet is sent in reply to a PIR request to inform the client which multiplayer model to use....
QStringList toTokens() const
Message converted to tokens.
static PlaneInformation fromTokens(const QStringList &tokens)
Construct from tokens.
Class for emitting a log message.
Definition: logmessage.h:27
Derived & debug()
Set the severity to debug.
QList< T >::const_reference at(qsizetype i) const const
void push_back(QList< T >::parameter_type value)
qsizetype size() const const
bool isEmpty() const const
QString join(QChar separator) const const