40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <cstddef> // Para size_t
|
|
#include <cstdint> // Para uint8_t
|
|
#include <memory> // Para unique_ptr
|
|
#include <string> // Para string, basic_string
|
|
#include <vector> // Para vector
|
|
|
|
class ResourcePack;
|
|
|
|
class ResourceLoader {
|
|
private:
|
|
static std::unique_ptr<ResourceLoader> instance;
|
|
ResourcePack* resource_pack_;
|
|
std::string pack_path_;
|
|
bool fallback_to_files_;
|
|
|
|
ResourceLoader();
|
|
|
|
public:
|
|
static auto getInstance() -> ResourceLoader&;
|
|
~ResourceLoader();
|
|
|
|
auto initialize(const std::string& pack_file, bool enable_fallback = true) -> bool;
|
|
void shutdown();
|
|
|
|
auto loadResource(const std::string& filename) -> std::vector<uint8_t>;
|
|
auto resourceExists(const std::string& filename) -> bool;
|
|
|
|
void setFallbackToFiles(bool enable) { fallback_to_files_ = enable; }
|
|
[[nodiscard]] auto getFallbackToFiles() const -> bool { return fallback_to_files_; }
|
|
|
|
[[nodiscard]] auto getLoadedResourceCount() const -> size_t;
|
|
[[nodiscard]] auto getAvailableResources() const -> std::vector<std::string>;
|
|
|
|
private:
|
|
static auto loadFromFile(const std::string& filename) -> std::vector<uint8_t>;
|
|
static auto getDataPath(const std::string& filename) -> std::string;
|
|
};
|