Symphony Of Empires
event.hpp
Go to the documentation of this file.
1 // Symphony of Empires
2 // Copyright (C) 2021, Symphony of Empires contributors
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <https://www.gnu.org/licenses/>.-----------------
16 // Name:
17 // event.hpp
18 //
19 // Abstract:
20 // Does some important stuff.
21 // ----------------------------------------------------------------------------
22 
23 #pragma once
24 
25 #include <string>
26 #include <vector>
27 
28 #include "eng3d/string.hpp"
29 #include "objects.hpp"
30 
31 struct Decision : RefnameEntity<DecisionId> {
34  Eng3D::StringRef extra_data; // Extra data for the decision
37 };
38 template<>
40  template<bool is_const>
42  template<bool is_serialize>
43  static inline void deser_dynamic(Eng3D::Deser::Archive& ar, type<is_serialize>& obj) {
44  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.cached_id);
45  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.ref_name);
46  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.name);
47  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.effects);
48  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.extra_data);
49  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.do_decision_function);
50  }
51 };
52 
53 class Nation;
54 struct Event : RefnameEntity<EventId> {
55  void take_decision(Nation& sender, Decision& dec);
57  std::vector<NationId> receiver_ids;
58  std::vector<Decision> decisions;
61  Eng3D::StringRef extra_data; // Extra data for the event
62  bool checked = false;
66 };
67 template<>
69  template<bool is_const>
71  template<bool is_serialize>
72  static inline void deser_dynamic(Eng3D::Deser::Archive& ar, type<is_serialize>& obj) {
73  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.cached_id);
74  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.ref_name);
75  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.name);
76  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.receiver_ids);
77  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.decisions);
78  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.text);
79  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.title);
80  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.extra_data);
81  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.checked);
82  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.conditions_function);
83  Eng3D::Deser::deser_dynamic<is_serialize>(ar, obj.do_event_function);
84  }
85 };
Eng3D::StringRef effects
Definition: event.hpp:33
Eng3D::StringRef name
Definition: event.hpp:32
int do_decision_function
Definition: event.hpp:36
Eng3D::StringRef extra_data
Definition: event.hpp:34
Base class that serves as archiver, stores (in memory) the data required for serialization/deserializ...
Definition: serializer.hpp:64
typename Eng3D::Deser::CondConstType< is_const, Decision >::type type
Definition: event.hpp:41
static void deser_dynamic(Eng3D::Deser::Archive &ar, type< is_serialize > &obj)
Definition: event.hpp:43
static void deser_dynamic(Eng3D::Deser::Archive &ar, type< is_serialize > &obj)
Definition: event.hpp:72
typename Eng3D::Deser::CondConstType< is_const, ::Event >::type type
Definition: event.hpp:70
A serializer (base class) which can be used to serialize objects and create per-object optimized clas...
Definition: serializer.hpp:111
A reference to a string on the global string pool.
Definition: string.hpp:39
Definition: event.hpp:54
std::vector< NationId > receiver_ids
Definition: event.hpp:57
int do_event_function
Definition: event.hpp:65
int conditions_function
Definition: event.hpp:64
void take_decision(Nation &sender, Decision &dec)
Definition: event.cpp:35
Eng3D::StringRef extra_data
Definition: event.hpp:61
std::vector< Decision > decisions
Definition: event.hpp:58
Eng3D::StringRef title
Definition: event.hpp:60
Eng3D::StringRef text
Definition: event.hpp:59
bool checked
Definition: event.hpp:62
Eng3D::StringRef name
Definition: event.hpp:56
An entity which can be referenced via a ref_name and also via id.
Definition: entity.hpp:160