Civilization
Hexagon.hpp
1 // Generated by dia2code
2 #ifndef SHARED__HEXAGON__H
3 #define SHARED__HEXAGON__H
4 
5 #include <memory>
6 #include <vector>
7 #include <variant>
8 #include <boost/serialization/access.hpp>
9 #include <boost/serialization/vector.hpp>
10 
11 namespace shared {
12  class Resource;
13  class BarbarianVillage;
14  class Barbarian;
15  class ControlPawn;
16  class Caravan;
17  class City;
18 }
19 
20 #include "Resource.hpp"
21 #include "FieldLevel.hpp"
22 #include "BarbarianVillage.hpp"
23 #include "Barbarian.hpp"
24 #include "ControlPawn.hpp"
25 #include "Caravan.hpp"
26 #include "City.hpp"
27 
28 namespace shared {
29 
31  class Hexagon {
32  // Attributes
33  public:
34  std::shared_ptr<Resource> hexResource;
35  private:
36  std::vector<std::shared_ptr<std::variant<Caravan,Barbarian,BarbarianVillage,ControlPawn,City>>> elementsList = {};
37  FieldLevel level;
38  friend class boost::serialization::access ;
39  // Operations
40  public:
41  Hexagon ();
42  FieldLevel getFieldLevel ();
43  std::vector<std::shared_ptr<std::variant<Caravan,Barbarian,BarbarianVillage,ControlPawn,City>>> getElements ();
44  void setFieldType (FieldLevel field);
45  void addElement (std::shared_ptr<std::variant<Caravan,Barbarian,BarbarianVillage,ControlPawn,City>> element);
46  void removeElement (std::shared_ptr<std::variant<Caravan,Barbarian,BarbarianVillage,ControlPawn,City>> element);
47  void clearElement ();
48  private:
49  template<class Archive> void serialize (Archive& ar, const unsigned int version);
50  template <class Archive> void save (Archive& ar, const unsigned int version) const;
51  template <class Archive> void load (Archive& ar, const unsigned int version);
52  // Setters and Getters
53  };
54 
55 };
56 
57 #endif
class Hexagon -
Definition: Hexagon.hpp:31