GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
EventsListUnfolder.h
1 #include "GDCore/Events/Event.h"
2 #include "GDCore/Events/EventsList.h"
3 
4 class GD_CORE_API EventsListUnfolder {
5  public:
12  const gd::BaseEvent& eventToContain) {
13  for (size_t i = 0; i < list.size(); ++i) {
14  gd::BaseEvent& event = list[i];
15  if (event.CanHaveSubEvents() &&
16  event.GetSubEvents().Contains(eventToContain)) {
17  event.SetFolded(false);
18  UnfoldWhenContaining(event.GetSubEvents(), eventToContain);
19  }
20  }
21  }
22 
23  static void FoldAll(gd::EventsList& list) {
24  for (size_t i = 0; i < list.size(); ++i) {
25  gd::BaseEvent& event = list[i];
26  event.SetFolded(true);
27  if (event.CanHaveSubEvents() && event.GetSubEvents().size() > 0) {
28  FoldAll(event.GetSubEvents());
29  }
30  }
31  }
32 
38  static void UnfoldToLevel(gd::EventsList& list,
39  const int8_t maxLevel,
40  const std::size_t currentLevel = 0) {
41  if (maxLevel >= 0 && currentLevel > maxLevel) return;
42 
43  for (size_t i = 0; i < list.size(); ++i) {
44  gd::BaseEvent& event = list[i];
45  event.SetFolded(false);
46  if (event.CanHaveSubEvents() && event.GetSubEvents().size() > 0 &&
47  (maxLevel == -1 || currentLevel <= maxLevel)) {
48  UnfoldToLevel(event.GetSubEvents(), maxLevel, currentLevel + 1);
49  }
50  }
51  }
52 };
Definition: EventsListUnfolder.h:4
static void UnfoldWhenContaining(gd::EventsList &list, const gd::BaseEvent &eventToContain)
Recursively unfold all the event lists containing the specified event.
Definition: EventsListUnfolder.h:11
static void UnfoldToLevel(gd::EventsList &list, const int8_t maxLevel, const std::size_t currentLevel=0)
Recursively unfold all the events until a certain level of depth. 0 is the top level....
Definition: EventsListUnfolder.h:38
Base class defining an event.
Definition: Event.h:43
A list of events.
Definition: EventsList.h:32
size_t size() const
Alias for GetEventsCount()
Definition: EventsList.h:175