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() : MessageBase() {}
11 
12  PlaneInformation::PlaneInformation(const QString &sender, const QString &receiver, const QString &aircraft,
13  const QString &airline = QString(), const QString &livery = QString())
14  : MessageBase(sender, receiver), m_aircraft(aircraft), m_airline(airline), m_livery(livery)
15  {}
16 
17  QStringList PlaneInformation::toTokens() const
18  {
19  QStringList pairs;
20  if (!m_aircraft.isEmpty()) { pairs << QString("EQUIPMENT=" + m_aircraft); }
21  if (!m_airline.isEmpty()) { pairs << QString("AIRLINE=" + m_airline); }
22  if (!m_livery.isEmpty()) { pairs << QString("LIVERY=" + m_livery); }
23 
24  QStringList tokens;
25  tokens.push_back(m_sender);
26  tokens.push_back(m_receiver);
27  tokens.push_back("PI");
28  tokens.push_back("GEN");
29  tokens.push_back(pairs.join(":"));
30  return tokens;
31  }
32 
34  {
35  if (tokens.size() < 5)
36  {
37  swift::misc::CLogMessage(static_cast<PlaneInformation *>(nullptr)).debug(u"Wrong number of arguments.");
38  return {};
39  }
40 
41  QString aircraft;
42  QString airline;
43  QString livery;
44 
45  for (int i = 4; i < tokens.size(); ++i)
46  {
47  const QStringList pair = tokens.at(i).split("=");
48  if (pair.size() == 2)
49  {
50  if (pair[0] == QLatin1String("EQUIPMENT")) { aircraft = pair[1]; }
51  else if (pair[0] == QLatin1String("AIRLINE")) { airline = pair[1]; }
52  else if (pair[0] == QLatin1String("LIVERY")) { livery = pair[1]; }
53  }
54  }
55  return PlaneInformation(tokens[0], tokens[1], aircraft, airline, livery);
56  }
57 } // 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.