GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ResourcesContainersList.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2025 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include <vector>
9 
10 #include "GDCore/Project/ResourcesContainer.h"
11 #include "Variable.h"
12 
13 namespace gd {
14 class String;
15 class Project;
16 class Layout;
17 class EventsFunctionsExtension;
18 class EventsBasedObject;
19 class EventsBasedBehavior;
20 class EventsFunction;
21 } // namespace gd
22 
23 namespace gd {
24 
36 class GD_CORE_API ResourcesContainersList {
37 public:
38  virtual ~ResourcesContainersList(){};
39 
41  MakeNewResourcesContainersListForProject(const gd::Project &project);
42 
44  MakeNewResourcesContainersListForFreeEventsFunction(
45  const gd::Project &project, const gd::EventsFunctionsExtension &extension,
46  const gd::EventsFunction &eventsFunction,
47  gd::ResourcesContainer &parameterResourcesContainer);
48 
50  MakeNewResourcesContainersListForBehaviorEventsFunction(
51  const gd::Project &project, const gd::EventsFunctionsExtension &extension,
52  const gd::EventsBasedBehavior &eventsBasedBehavior,
53  const gd::EventsFunction &eventsFunction,
54  gd::ResourcesContainer &parameterResourcesContainer,
55  gd::ResourcesContainer &propertyResourcesContainer);
56 
58  MakeNewResourcesContainersListForObjectEventsFunction(
59  const gd::Project &project, const gd::EventsFunctionsExtension &extension,
60  const gd::EventsBasedObject &eventsBasedObject,
61  const gd::EventsFunction &eventsFunction,
62  gd::ResourcesContainer &parameterResourcesContainer,
63  gd::ResourcesContainer &propertyResourcesContainer);
64 
68  bool HasResourceNamed(const gd::String &name) const;
69 
70  const gd::Resource &GetResource(const gd::String &name) const;
71 
72  void
73  ForEachResource(std::function<void(const gd::Resource &resource)> fn) const;
74 
79  void ForEachNameMatchingSearch(
80  const gd::String &search,
81  std::function<void(const gd::Resource &resource)> fn) const;
82 
87  const gd::ResourcesContainer::SourceType
88  GetResourcesContainerSourceType(const gd::String &resourceName) const;
89 
93  const gd::ResourcesContainer &GetResourcesContainerFromResourceName(
94  const gd::String &resourceName) const;
95 
107  const gd::ResourcesContainer &GetResourcesContainer(std::size_t index) const {
108  return *resourcesContainers.at(index);
109  }
110 
114  std::size_t GetResourcesContainersCount() const{
115  return resourcesContainers.size();
116  }
117 
121 
122 private:
126  void Push(const gd::ResourcesContainer &resourcesContainer) {
127  resourcesContainers.push_back(&resourcesContainer);
128  };
129 
130  std::vector<const gd::ResourcesContainer *> resourcesContainers;
131  static Resource badResource;
132  static ResourcesContainer badResourcesContainer;
133 };
134 
135 } // namespace gd
Represents a behavior that is implemented with events.
Definition: EventsBasedBehavior.h:31
Represents an object that is implemented with events.
Definition: EventsBasedObject.h:32
Events that can be generated as a stand-alone function, and used as a condition, action or expression...
Definition: EventsFunction.h:38
Hold a list of Events Functions (gd::EventsFunction) and Events Based Behaviors.
Definition: EventsFunctionsExtension.h:41
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:50
Base class to describe a resource used by a game.
Definition: ResourcesContainer.h:27
Inventory all resources used by a project.
Definition: ResourcesContainer.h:628
A list of resources containers, useful for accessing resources in a scoped way, along with methods to...
Definition: ResourcesContainersList.h:36
ResourcesContainersList()
Definition: ResourcesContainersList.h:120
const gd::ResourcesContainer & GetResourcesContainer(std::size_t index) const
Return a the objects container at position index.
Definition: ResourcesContainersList.h:107
std::size_t GetResourcesContainersCount() const
Return the number of objects containers.
Definition: ResourcesContainersList.h:114
String represents an UTF8 encoded string.
Definition: String.h:33
Definition: CommonTools.h:24