GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ObjectsUsingResourceCollector.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 
7 #pragma once
8 
9 #include <vector>
10 
11 #include "GDCore/IDE/Project/ArbitraryObjectsWorker.h"
12 #include "GDCore/IDE/Project/ArbitraryResourceWorker.h"
13 #include "GDCore/String.h"
14 
15 namespace gd {
16 class Object;
17 } // namespace gd
18 
19 namespace gd {
20 
22  : public ArbitraryObjectsWorker {
23 public:
25  const gd::String &resourceName_)
26  : resourcesManager(&resourcesManager_), resourceName(resourceName_){};
28 
29  std::vector<gd::String>& GetObjectNames() { return objectNames; }
30 
31  private:
32  void DoVisitObject(gd::Object& object) override;
33 
34  std::vector<gd::String> objectNames;
35  gd::String resourceName;
36  gd::ResourcesManager *resourcesManager;
37 };
38 
39 class GD_CORE_API ResourceNameMatcher : public ArbitraryResourceWorker {
40 public:
41  ResourceNameMatcher(gd::ResourcesManager &resourcesManager,
42  const gd::String &resourceName_)
43  : resourceName(resourceName_),
44  matchesResourceName(false), gd::ArbitraryResourceWorker(
45  resourcesManager){};
46  virtual ~ResourceNameMatcher(){};
47 
48  bool AnyResourceMatches() { return matchesResourceName; }
49  void Reset() { matchesResourceName = false; }
50 
51  private:
52  virtual void ExposeFile(gd::String& resource) override{
53  /*Don't care, we just read resource names*/
54  };
55  virtual void ExposeImage(gd::String& otherResourceName) override {
56  MatchResourceName(otherResourceName);
57  };
58  virtual void ExposeAudio(gd::String& otherResourceName) override {
59  MatchResourceName(otherResourceName);
60  };
61  virtual void ExposeFont(gd::String& otherResourceName) override {
62  MatchResourceName(otherResourceName);
63  };
64  virtual void ExposeJson(gd::String& otherResourceName) override {
65  MatchResourceName(otherResourceName);
66  };
67  virtual void ExposeTilemap(gd::String& otherResourceName) override {
68  MatchResourceName(otherResourceName);
69  };
70  virtual void ExposeTileset(gd::String& otherResourceName) override {
71  MatchResourceName(otherResourceName);
72  };
73  virtual void ExposeVideo(gd::String& otherResourceName) override {
74  MatchResourceName(otherResourceName);
75  };
76  virtual void ExposeBitmapFont(gd::String& otherResourceName) override {
77  MatchResourceName(otherResourceName);
78  };
79  virtual void ExposeModel3D(gd::String& otherResourceName) override {
80  MatchResourceName(otherResourceName);
81  };
82  virtual void ExposeAtlas(gd::String& otherResourceName) override {
83  MatchResourceName(otherResourceName);
84  };
85  virtual void ExposeSpine(gd::String& otherResourceName) override {
86  MatchResourceName(otherResourceName);
87  };
88 
89  void MatchResourceName(gd::String& otherResourceName) {
90  if (otherResourceName == resourceName) matchesResourceName = true;
91  }
92 
93  gd::String resourceName;
94  bool matchesResourceName;
95 };
96 
97 }; // namespace gd
ArbitraryObjectsWorker is an abstract class used to browse objects (and behaviors) and do some work o...
Definition: ArbitraryObjectsWorker.h:30
ArbitraryResourceWorker is used so as to inventory resources and sometimes update them.
Definition: ArbitraryResourceWorker.h:44
Represent an object of a platform.
Definition: Object.h:37
Definition: ObjectsUsingResourceCollector.h:22
Definition: ObjectsUsingResourceCollector.h:39
Inventory all resources used by a project.
Definition: ResourcesManager.h:557
String represents an UTF8 encoded string.
Definition: String.h:31
Definition: CommonTools.h:24