GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ObjectMetadata.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 #pragma once
7 
8 #include "InstructionOrExpressionContainerMetadata.h"
9 
10 #include <functional>
11 #include <map>
12 #include <set>
13 #include <memory>
14 
15 #include "GDCore/Extensions/Metadata/ExpressionMetadata.h"
16 #include "GDCore/Extensions/Metadata/InstructionMetadata.h"
17 #include "GDCore/Project/Object.h"
18 #include "GDCore/Project/ObjectConfiguration.h"
19 #include "GDCore/String.h"
20 namespace gd {
21 class InstructionMetadata;
22 class MultipleInstructionMetadata;
23 class ExpressionMetadata;
24 } // namespace gd
25 
26 typedef std::function<std::unique_ptr<gd::ObjectConfiguration>()>
27  CreateFunPtr;
28 
29 namespace gd {
30 
38  public:
43  ObjectMetadata(const gd::String& extensionNamespace_,
44  const gd::String& name_,
45  const gd::String& fullname_,
46  const gd::String& description_,
47  const gd::String& icon24x24_,
48  std::shared_ptr<gd::ObjectConfiguration> blueprintObject_);
54  ObjectMetadata(const gd::String& extensionNamespace_,
55  const gd::String& name_,
56  const gd::String& fullname_,
57  const gd::String& description_,
58  const gd::String& icon24x24_);
59 
64  ObjectMetadata(const gd::String& extensionNamespace_,
65  const gd::String& name_,
66  const gd::String& fullname_,
67  const gd::String& description_,
68  const gd::String& icon24x24_,
69  CreateFunPtr createFunPtrP);
70  ObjectMetadata() : createFunPtr(NULL) {}
71  virtual ~ObjectMetadata(){};
72 
78  gd::InstructionMetadata& AddCondition(const gd::String& name_,
79  const gd::String& fullname_,
80  const gd::String& description_,
81  const gd::String& sentence_,
82  const gd::String& group_,
83  const gd::String& icon_,
84  const gd::String& smallicon_) override;
85 
91  gd::InstructionMetadata& AddAction(const gd::String& name_,
92  const gd::String& fullname_,
93  const gd::String& description_,
94  const gd::String& sentence_,
95  const gd::String& group_,
96  const gd::String& icon_,
97  const gd::String& smallicon_) override;
98 
102  gd::InstructionMetadata& AddScopedCondition(const gd::String& name_,
103  const gd::String& fullname_,
104  const gd::String& description_,
105  const gd::String& sentence_,
106  const gd::String& group_,
107  const gd::String& icon_,
108  const gd::String& smallicon_) override;
109 
113  gd::InstructionMetadata& AddScopedAction(const gd::String& name_,
114  const gd::String& fullname_,
115  const gd::String& description_,
116  const gd::String& sentence_,
117  const gd::String& group_,
118  const gd::String& icon_,
119  const gd::String& smallicon_) override;
120 
124  gd::ExpressionMetadata& AddExpression(const gd::String& name_,
125  const gd::String& fullname_,
126  const gd::String& description_,
127  const gd::String& group_,
128  const gd::String& smallicon_) override;
132  gd::ExpressionMetadata& AddStrExpression(const gd::String& name_,
133  const gd::String& fullname_,
134  const gd::String& description_,
135  const gd::String& group_,
136  const gd::String& smallicon_) override;
137 
144  gd::MultipleInstructionMetadata AddExpressionAndCondition(
145  const gd::String& type,
146  const gd::String& name,
147  const gd::String& fullname,
148  const gd::String& description,
149  const gd::String& sentenceName,
150  const gd::String& group,
151  const gd::String& icon) override;
152 
161  gd::MultipleInstructionMetadata AddExpressionAndConditionAndAction(
162  const gd::String& type,
163  const gd::String& name,
164  const gd::String& fullname,
165  const gd::String& description,
166  const gd::String& sentenceName,
167  const gd::String& group,
168  const gd::String& icon) override;
169 
176  gd::InstructionMetadata& AddDuplicatedAction(
177  const gd::String& newActionName, const gd::String& copiedActionName) override;
178 
185  gd::InstructionMetadata& AddDuplicatedCondition(
186  const gd::String& newConditionName,
187  const gd::String& copiedConditionName) override;
188 
192  ObjectMetadata& SetFullName(const gd::String& fullname_) override;
193 
197  ObjectMetadata& SetDescription(const gd::String& description_) override;
198 
203  const gd::String& GetHelpPath() const override { return helpPath; }
204 
212  ObjectMetadata& SetHelpPath(const gd::String& path) override {
213  helpPath = path;
214  return *this;
215  }
216 
221  ObjectMetadata& SetCategoryFullName(const gd::String& categoryFullName_) {
222  categoryFullName = categoryFullName_;
223  return *this;
224  }
225 
229  const std::set<gd::String>& GetDefaultBehaviors() const {
230  return defaultBehaviorTypes;
231  }
232 
236  bool HasDefaultBehavior(const gd::String& behaviorType) const {
237  return defaultBehaviorTypes.find(behaviorType) != defaultBehaviorTypes.end();
238  }
239 
244  const gd::String& behaviorType) {
245  defaultBehaviorTypes.insert(behaviorType);
246  return *this;
247  }
248 
249  const gd::String& GetName() const override { return name; }
250  const gd::String& GetFullName() const override { return fullname; }
251  const gd::String& GetCategoryFullName() const { return categoryFullName; }
252  const gd::String& GetHelpUrl() const { return helpUrl; }
253  const gd::String& GetDescription() const override { return description; }
254  const gd::String& GetIconFilename() const override { return iconFilename; }
255 
261  ObjectMetadata& SetHelpUrl(const gd::String& url);
262 
270  ObjectMetadata& SetIncludeFile(const gd::String& includeFile) override;
271 
275  ObjectMetadata& AddIncludeFile(const gd::String& includeFile) override;
276 
281  std::map<gd::String, gd::InstructionMetadata>& GetAllActions() override { return actionsInfos; };
282 
286  std::map<gd::String, gd::InstructionMetadata>& GetAllConditions() override { return conditionsInfos; };
287 
291  std::map<gd::String, gd::ExpressionMetadata>& GetAllExpressions() override { return expressionsInfos; };
292 
296  std::map<gd::String, gd::ExpressionMetadata>& GetAllStrExpressions() override { return strExpressionsInfos; };
297 
304  hidden = true;
305  return *this;
306  }
307 
311  bool IsHidden() const { return hidden; }
312 
317  isRenderedIn3D = true;
318  return *this;
319  }
320 
324  bool IsRenderedIn3D() const { return isRenderedIn3D; }
325 
326  std::map<gd::String, gd::InstructionMetadata> conditionsInfos;
327  std::map<gd::String, gd::InstructionMetadata> actionsInfos;
328  std::map<gd::String, gd::ExpressionMetadata> expressionsInfos;
329  std::map<gd::String, gd::ExpressionMetadata> strExpressionsInfos;
330 
331  std::vector<gd::String> includeFiles;
332  gd::String className;
333  CreateFunPtr createFunPtr;
334 
335  private:
336  gd::String extensionNamespace;
337  gd::String name;
338  gd::String helpPath;
339  gd::String helpUrl;
340  gd::String fullname;
341  gd::String description;
342  gd::String iconFilename;
343  gd::String categoryFullName;
344  std::set<gd::String> defaultBehaviorTypes;
345  bool hidden = false;
346  bool isRenderedIn3D = false;
347 
348  std::shared_ptr<gd::ObjectConfiguration>
349  blueprintObject;
354 };
355 
356 } // namespace gd
Describe user-friendly information about an expression, its parameters and the function name as well ...
Definition: ExpressionMetadata.h:47
Describe user-friendly information about an instruction (action or condition), its parameters and the...
Definition: InstructionMetadata.h:38
Contains user-friendly information about instructions and expressions (usually for a behavior or an o...
Definition: InstructionOrExpressionContainerMetadata.h:30
A "composite" metadata that can be used to easily declare both an expression and a related condition ...
Definition: MultipleInstructionMetadata.h:24
Contains user-friendly information about an object type, and a function to create a new gd::Object of...
Definition: ObjectMetadata.h:37
std::map< gd::String, gd::InstructionMetadata > & GetAllActions() override
Return a reference to a map containing the names of the actions (as keys) and the metadata associated...
Definition: ObjectMetadata.h:281
bool IsHidden() const
Return true if the object must be hidden in the IDE.
Definition: ObjectMetadata.h:311
const std::set< gd::String > & GetDefaultBehaviors() const
The "capabilities" that are offered by through behaviors.
Definition: ObjectMetadata.h:229
const gd::String & GetHelpPath() const override
Get the help path of the object, relative to the GDevelop documentation root.
Definition: ObjectMetadata.h:203
ObjectMetadata & SetHidden()
Set the object to be hidden in the IDE.
Definition: ObjectMetadata.h:303
std::map< gd::String, gd::InstructionMetadata > & GetAllConditions() override
Definition: ObjectMetadata.h:286
ObjectMetadata & MarkAsRenderedIn3D()
Declare a usage of the 3D renderer.
Definition: ObjectMetadata.h:316
bool IsRenderedIn3D() const
Return true if the object uses the 3D renderer.
Definition: ObjectMetadata.h:324
bool HasDefaultBehavior(const gd::String &behaviorType) const
Return true if object has a default behavior of the given type.
Definition: ObjectMetadata.h:236
std::map< gd::String, gd::ExpressionMetadata > & GetAllExpressions() override
Definition: ObjectMetadata.h:291
std::map< gd::String, gd::ExpressionMetadata > & GetAllStrExpressions() override
Definition: ObjectMetadata.h:296
ObjectMetadata & SetHelpPath(const gd::String &path) override
Set the help path of the object, relative to the GDevelop documentation root.
Definition: ObjectMetadata.h:212
ObjectMetadata & AddDefaultBehavior(const gd::String &behaviorType)
Add a "capability" that is offered by through a behavior.
Definition: ObjectMetadata.h:243
ObjectMetadata & SetCategoryFullName(const gd::String &categoryFullName_)
Set the (user friendly) name of the group this object must be categorised in.
Definition: ObjectMetadata.h:221
String represents an UTF8 encoded string.
Definition: String.h:31
Definition: CommonTools.h:24