GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
EventsList.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #if defined(GD_IDE_ONLY)
7 #ifndef GDCORE_EVENTSLIST_H
8 #define GDCORE_EVENTSLIST_H
9 #include <memory>
10 #include <vector>
11 #include "GDCore/String.h"
12 namespace gd {
13 class Project;
14 }
15 namespace gd {
16 class BaseEvent;
17 }
18 namespace gd {
19 class SerializerElement;
20 }
21 class TiXmlElement;
22 
23 #undef CreateEvent
24 
25 namespace gd {
26 
33 class GD_CORE_API EventsList {
34  public:
35  EventsList();
36  EventsList(const EventsList&);
37  virtual ~EventsList(){};
38  EventsList& operator=(const EventsList& rhs);
39 
48  gd::BaseEvent& InsertEvent(const gd::BaseEvent& event,
49  size_t position = (size_t)-1);
50 
59  void InsertEvent(std::shared_ptr<gd::BaseEvent> event,
60  size_t position = (size_t)-1);
61 
70  gd::BaseEvent& InsertNewEvent(gd::Project& project,
71  const gd::String& eventType,
72  size_t position = (size_t)-1);
73 
77  void InsertEvents(const EventsList& otherEvents,
78  size_t begin,
79  size_t end,
80  size_t position = (size_t)-1);
81 
85  size_t GetEventsCount() const { return events.size(); };
86 
91  std::shared_ptr<BaseEvent> GetEventSmartPtr(size_t index) {
92  return events[index];
93  };
94 
99  std::shared_ptr<const BaseEvent> GetEventSmartPtr(size_t index) const {
100  return events[index];
101  };
102 
107  gd::BaseEvent& GetEvent(size_t index) { return *events[index]; };
108 
113  const gd::BaseEvent& GetEvent(size_t index) const { return *events[index]; };
114 
118  void RemoveEvent(const gd::BaseEvent& event);
119 
123  void RemoveEvent(size_t index);
124 
128  bool IsEmpty() const { return events.empty(); };
129 
133  void Clear() { return events.clear(); };
134 
139 
144  bool Contains(const gd::BaseEvent& eventToSearch,
145  bool recursive = true) const;
146 
162  bool MoveEventToAnotherEventsList(const gd::BaseEvent& eventToMove,
163  gd::EventsList& newEventsList,
164  std::size_t newPosition);
166 
171 
176  size_t size() const { return GetEventsCount(); }
177 
182  gd::BaseEvent& operator[](size_t index) { return GetEvent(index); };
183 
188  const gd::BaseEvent& operator[](size_t index) const {
189  return GetEvent(index);
190  };
192 
197 
201  void SerializeTo(SerializerElement& element) const;
202 
207  void UnserializeFrom(gd::Project& project, const SerializerElement& element);
209 
210  private:
211  std::vector<std::shared_ptr<BaseEvent> > events;
212 
217  void Init(const gd::EventsList& other);
218 };
219 
220 } // namespace gd
221 
222 #endif
223 #endif
Base class defining an event.
Definition: Event.h:44
A list of events.
Definition: EventsList.h:33
size_t size() const
Alias for GetEventsCount()
Definition: EventsList.h:176
const gd::BaseEvent & GetEvent(size_t index) const
Return a reference to the event at position index in the events list.
Definition: EventsList.h:113
const gd::BaseEvent & operator[](size_t index) const
Alias for GetEvent()
Definition: EventsList.h:188
std::shared_ptr< BaseEvent > GetEventSmartPtr(size_t index)
Return the smart pointer to the event at position index in the events list.
Definition: EventsList.h:91
size_t GetEventsCount() const
Return the number of events.
Definition: EventsList.h:85
void Clear()
Clear the list of events.
Definition: EventsList.h:133
bool IsEmpty() const
Return true if there isn't any event in the list.
Definition: EventsList.h:128
gd::BaseEvent & GetEvent(size_t index)
Return a reference to the event at position index in the events list.
Definition: EventsList.h:107
std::shared_ptr< const BaseEvent > GetEventSmartPtr(size_t index) const
Return the smart pointer to the event at position index in the events list.
Definition: EventsList.h:99
gd::BaseEvent & operator[](size_t index)
Alias for GetEvent()
Definition: EventsList.h:182
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:50
A generic container that can represent a value ( containing a string, double, bool or int),...
Definition: SerializerElement.h:37
String represents an UTF8 encoded string.
Definition: String.h:31
Definition: CommonTools.h:24