Peoplemon  0.1.0
Peoplemon 3 game source documentation
Event.hpp
Go to the documentation of this file.
1 #ifndef CORE_MAPS_EVENT_HPP
2 #define CORE_MAPS_EVENT_HPP
3 
4 #include <BLIB/Serialization.hpp>
5 #include <SFML/System/Vector2.hpp>
6 #include <cstdint>
7 #include <string>
8 
9 namespace core
10 {
11 namespace map
12 {
19 struct Event {
21  enum struct Trigger : std::uint8_t {
23  OnEnter = 1,
24 
26  OnExit = 2,
27 
29  onEnterOrExit = 3,
30 
32  WhileIn = 4,
33 
35  OnInteract = 5
36  };
37 
39  sf::Vector2i position;
40  sf::Vector2i areaSize;
41  std::string script;
42 
47  Event();
48 
57  Event(const std::string& script, const sf::Vector2i& pos, const sf::Vector2i& size,
59 };
60 
61 } // namespace map
62 } // namespace core
63 
64 namespace bl
65 {
66 namespace serial
67 {
68 template<>
69 struct SerializableObject<core::map::Event> : public SerializableObjectBase {
71 
72  SerializableField<1, E, core::map::Event::Trigger> trigger;
73  SerializableField<2, E, sf::Vector2i> position;
74  SerializableField<3, E, sf::Vector2i> areaSize;
75  SerializableField<4, E, std::string> script;
76 
78  : SerializableObjectBase("Event")
79  , trigger("trigger", *this, &E::trigger, SerializableFieldBase::Required{})
80  , position("position", *this, &E::position, SerializableFieldBase::Required{})
81  , areaSize("area", *this, &E::areaSize, SerializableFieldBase::Required{})
82  , script("script", *this, &E::script, SerializableFieldBase::Required{}) {}
83 };
84 
85 } // namespace serial
86 } // namespace bl
87 
88 #endif
Core classes and functionality for both the editor and game.
Represents an event in a Map. A script that is run on a trigger within a given region.
Definition: Event.hpp:19
sf::Vector2i position
Definition: Event.hpp:39
std::string script
Definition: Event.hpp:41
Trigger
What action triggers the event.
Definition: Event.hpp:21
@ OnInteract
The event triggers when the player interacts with the zone.
@ OnExit
The event triggers when the player steps out of the zone.
@ onEnterOrExit
The event triggers when the player either enters or exits the zone.
@ WhileIn
The event triggers repeatedly while the player is in the zone.
@ OnEnter
The event triggers when the player steps into the zone.
Event()
Creates an empty event.
Definition: Event.cpp:7
Trigger trigger
Definition: Event.hpp:38
sf::Vector2i areaSize
Definition: Event.hpp:40
SerializableField< 3, E, sf::Vector2i > areaSize
Definition: Event.hpp:74
SerializableField< 1, E, core::map::Event::Trigger > trigger
Definition: Event.hpp:72
SerializableField< 2, E, sf::Vector2i > position
Definition: Event.hpp:73
SerializableField< 4, E, std::string > script
Definition: Event.hpp:75