aegis.cpp
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends Pages
party.hpp
1 //
2 // party.hpp
3 // *********
4 //
5 // Copyright (c) 2019 Sharon W (sharon at aegis dot gg)
6 //
7 // Distributed under the MIT License. (See accompanying file LICENSE)
8 //
9 
10 #pragma once
11 
12 #include "aegis/config.hpp"
13 #include <nlohmann/json.hpp>
14 
15 namespace aegis
16 {
17 
18 namespace gateway
19 {
20 
21 namespace objects
22 {
23 
26 struct party
27 {
28  std::string id;
29  int32_t current_size = 0;
30  int32_t max_size = 0;
31 };
32 
34 inline void from_json(const nlohmann::json& j, party& m)
35 {
36  if (j.count("id") && !j["id"].is_null())
37  m.id = j["id"].get<std::string>();
38  if (j.count("size") && !j["size"].is_null() && j.is_array() && j.size() == 2)
39  {
40  const auto & size = j["size"];
41  m.current_size = size.at(0).get<int32_t>();
42  m.max_size = size.at(1).get<int32_t>();
43  }
44 }
45 
46 inline void to_json(nlohmann::json& j, const party& m)
47 {
48  if (!m.id.empty())
49  j["id"] = m.id;
50  if (m.current_size != 0 && m.max_size != 0)
51  {
52  auto & size = j["size"] = nlohmann::json::array();
53  size.at(0) = m.current_size;
54  size.at(1) = m.max_size;
55  }
56 }
58 
59 }
60 
61 }
62 
63 }
Definition: party.hpp:26