Mountain  1.0.0
Simple C++ 2D Game Framework
resource.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Mountain/core.hpp"
6 
9 
10 namespace Mountain
11 {
12  class File;
13 
25  class Resource
26  {
27  public:
29  MOUNTAIN_API Resource() = default;
30 
32  MOUNTAIN_API explicit Resource(std::string name);
33 
34  MOUNTAIN_API virtual ~Resource() = 0;
35 
36  DEFAULT_COPY_MOVE_OPERATIONS(Resource)
37 
38 
39  MOUNTAIN_API virtual bool_t SetSourceData(const uint8_t* buffer, int64_t length);
42 
46  MOUNTAIN_API virtual bool_t SetSourceData(const Pointer<File>& file);
47 
49  MOUNTAIN_API virtual void Load();
50 
52  MOUNTAIN_API virtual void Unload();
53 
55  MOUNTAIN_API virtual void ResetSourceData();
56 
62  MOUNTAIN_API virtual bool_t Reload(const uint8_t* buffer, int64_t length, bool_t reloadInBackend = true);
63 
69  MOUNTAIN_API virtual bool_t Reload(const Pointer<File>& file, bool_t reloadInBackend = true);
70 
77  MOUNTAIN_API virtual bool_t Reload(bool_t reloadInBackend = true);
78 
80  [[nodiscard]]
81  MOUNTAIN_API bool_t IsSourceDataSet() const;
82 
84  [[nodiscard]]
85  MOUNTAIN_API bool_t IsLoaded() const;
86 
88  [[nodiscard]]
89  MOUNTAIN_API const std::string& GetName() const;
90 
94  MOUNTAIN_API void SetName(const std::string& newName);
95 
97  MOUNTAIN_API void SetGuid(const Guid& guid);
98 
100  [[nodiscard]]
101  MOUNTAIN_API const Guid& GetGuid() const;
102 
104  [[nodiscard]]
105  MOUNTAIN_API Pointer<File> GetFile() const;
106 
107  MOUNTAIN_API void SetFile(const Pointer<File>& file);
108 
109  protected:
111  bool_t m_SourceDataSet = false;
113  bool_t m_Loaded = false;
114 
116  std::string m_Name;
118  Guid m_Guid;
119 
120  Pointer<File> m_File;
121 
122  // We need this in order to set m_File from the ResourceManager
123  // which is the only class that needs to modify this field
124  friend class ResourceManager;
125  };
126 }
127 
128 #include "Mountain/file/file.hpp"
Defines the Mountain::File class.
Defines the Mountain::Pointer class.
Defines the Mountain::Guid class.
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22