GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ObjectsContainersList.h
1 #pragma once
2 #include <vector>
3 
4 #include "Variable.h"
5 
6 namespace gd {
7 class String;
8 class Project;
9 class Layout;
10 class ObjectsContainer;
11 class VariablesContainer;
12 class Object;
13 class ObjectConfiguration;
14 } // namespace gd
15 
16 namespace gd {
17 
29 class GD_CORE_API ObjectsContainersList {
30  public:
31  virtual ~ObjectsContainersList(){};
32 
33  static ObjectsContainersList MakeNewObjectsContainersListForProjectAndLayout(
34  const gd::Project& project, const gd::Layout& layout);
35 
36  static ObjectsContainersList MakeNewObjectsContainersListForContainers(
37  const gd::ObjectsContainer& globalObjectsContainer,
38  const gd::ObjectsContainer& objectsContainer);
39 
43  bool HasObjectOrGroupNamed(const gd::String& name) const;
44 
45  enum VariableExistence {
46  DoesNotExist,
47  Exists,
48  GroupIsEmpty,
49  ExistsOnlyOnSomeObjectsOfTheGroup
50  };
51 
56  VariableExistence HasObjectOrGroupWithVariableNamed(
57  const gd::String& objectOrGroupName,
58  const gd::String& variableName) const;
59 
64  bool HasObjectOrGroupVariablesContainer(
65  const gd::String& objectOrGroupName,
66  const gd::VariablesContainer& variablesContainer) const;
67 
72  const gd::VariablesContainer* GetObjectOrGroupVariablesContainer(
73  const gd::String& objectOrGroupName) const;
74 
78  gd::Variable::Type GetTypeOfObjectOrGroupVariable(const gd::String& objectOrGroupName, const gd::String& variableName) const;
79 
88  gd::String GetTypeOfObject(const gd::String& objectName) const;
89 
93  bool HasBehaviorInObjectOrGroup(const gd::String& objectOrGroupName,
94  const gd::String& behaviorName) const;
95 
101  const gd::String& objectOrGroupName,
102  const gd::String& behaviorName,
103  bool searchInGroups = true) const;
104 
110  gd::String GetTypeOfBehavior(const gd::String& behaviorName,
111  bool searchInGroups = true) const;
112 
120  std::vector<gd::String> GetBehaviorsOfObject(
121  const gd::String& objectName, bool searchInGroups = true) const;
122 
132  std::vector<gd::String> ExpandObjectName(
133  const gd::String& objectOrGroupName,
134  const gd::String& onlyObjectToSelectIfPresent = "") const;
135 
136  void ForEachObject(std::function<void(const gd::Object& object)> fn) const;
137 
142  void ForEachNameMatchingSearch(
143  const gd::String& search,
144  std::function<void(const gd::String& name,
145  const gd::ObjectConfiguration* objectConfiguration)>
146  fn) const;
147 
152  void ForEachObjectOrGroupVariableMatchingSearch(
153  const gd::String& objectOrGroupName,
154  const gd::String& search,
155  std::function<void(const gd::String& variableName,
156  const gd::Variable& variable)> fn) const;
157 
161 
162  private:
163  bool HasObjectNamed(const gd::String& name) const;
164 
165  bool HasObjectWithVariableNamed(const gd::String& objectName,
166  const gd::String& variableName) const;
167 
168  bool HasObjectVariablesContainer(
169  const gd::String& objectName,
170  const gd::VariablesContainer& variablesContainer) const;
171 
172  const gd::VariablesContainer* GetObjectVariablesContainer(
173  const gd::String& objectName) const;
174 
175  gd::Variable::Type GetTypeOfObjectVariable(const gd::String& objectName, const gd::String& variableName) const;
176 
177  void ForEachObjectVariableMatchingSearch(
178  const gd::String& objectOrGroupName,
179  const gd::String& search,
180  std::function<void(const gd::String& variableName,
181  const gd::Variable& variable)> fn) const;
182 
183  void Add(const gd::ObjectsContainer& objectsContainer) {
184  objectsContainers.push_back(&objectsContainer);
185  };
186 
187  std::vector<const gd::ObjectsContainer*> objectsContainers;
188 };
189 
190 } // namespace gd
Represent a layout ( also called a scene ) of a project.
Definition: Layout.h:39
Base class used to represent an object configuration. For example, this can be the animations in a sp...
Definition: ObjectConfiguration.h:38
Represent an object of a platform.
Definition: Object.h:37
Used as a base class for classes that will own objects (see gd::Object).
Definition: ObjectsContainer.h:36
A list of objects containers, useful for accessing objects in a scoped way, along with methods to acc...
Definition: ObjectsContainersList.h:29
ObjectsContainersList()
Definition: ObjectsContainersList.h:160
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:50
String represents an UTF8 encoded string.
Definition: String.h:31
Defines a variable which can be used by an object, a layout or a project.
Definition: Variable.h:29
Class defining a container for gd::Variable.
Definition: VariablesContainer.h:30
Definition: CommonTools.h:24
gd::String GD_CORE_API GetTypeOfObject(const gd::ObjectsContainer &project, const gd::ObjectsContainer &layout, gd::String name, bool searchInGroups)
Get a type from an object/group name.
Definition: Layout.cpp:447
gd::String GD_CORE_API GetTypeOfBehaviorInObjectOrGroup(const gd::ObjectsContainer &project, const gd::ObjectsContainer &layout, const gd::String &objectOrGroupName, const gd::String &behaviorName, bool searchInGroups)
Get the type of a behavior if an object or all objects of a group has it.
Definition: Layout.cpp:693
gd::String GD_CORE_API GetTypeOfBehavior(const gd::ObjectsContainer &project, const gd::ObjectsContainer &layout, gd::String name, bool searchInGroups)
Get a type from a behavior name.
Definition: Layout.cpp:745
vector< gd::String > GD_CORE_API GetBehaviorsOfObject(const gd::ObjectsContainer &project, const gd::ObjectsContainer &layout, const gd::String &name, bool searchInGroups)
Get behaviors of an object/group.
Definition: Layout.cpp:767
bool GD_CORE_API HasBehaviorInObjectOrGroup(const gd::ObjectsContainer &project, const gd::ObjectsContainer &layout, const gd::String &objectOrGroupName, const gd::String &behaviorName, bool searchInGroups)
Check if an object or all objects of a group has a behavior.
Definition: Layout.cpp:597