8#ifndef MALENA_RESOURCES_H
9#define MALENA_RESOURCES_H
25 template<
typename Manifest,
typename EnumType,
typename =
void>
26 struct is_images_enum : std::false_type {};
27 template<
typename Manifest,
typename EnumType>
28 struct is_images_enum<
Manifest, EnumType,
29 std::void_t<typename Manifest::Images>>
31 std::is_same_v<EnumType, typename Manifest::Images>> {};
33 template<
typename Manifest,
typename EnumType,
typename =
void>
34 struct is_fonts_enum : std::false_type {};
35 template<
typename Manifest,
typename EnumType>
36 struct is_fonts_enum<
Manifest, EnumType,
37 std::void_t<typename Manifest::Fonts>>
39 std::is_same_v<EnumType, typename Manifest::Fonts>> {};
41 template<
typename Manifest,
typename EnumType,
typename =
void>
42 struct is_sounds_enum : std::false_type {};
43 template<
typename Manifest,
typename EnumType>
44 struct is_sounds_enum<
Manifest, EnumType,
45 std::void_t<typename Manifest::Sounds>>
47 std::is_same_v<EnumType, typename Manifest::Sounds>> {};
49 template<
typename Manifest,
typename EnumType>
50 struct is_asset_enum : std::bool_constant<
51 is_images_enum<Manifest, EnumType>::value ||
52 is_fonts_enum <Manifest, EnumType>::value ||
53 is_sounds_enum<Manifest, EnumType>::value
58 using const_ref_t = std::add_lvalue_reference_t<
60 std::remove_reference_t<T>>>;
100 template<
typename TManifest>
110 template<
typename EnumType>
111 static auto get(EnumType key)
113 is_asset_enum<TManifest, EnumType>::value,
125 template<
typename EnumType>
126 static auto get(EnumType key)
128 !is_asset_enum<TManifest, EnumType>::value,
134 template<
typename EnumType>
135 static std::enable_if_t<is_images_enum<TManifest, EnumType>::value>
141 template<
typename EnumType>
142 static std::enable_if_t<is_fonts_enum<TManifest, EnumType>::value>
148 template<
typename EnumType>
149 static std::enable_if_t<is_sounds_enum<TManifest, EnumType>::value>
static std::enable_if_t< has_Image< M >::value, const sf::Texture & > get(typename M::Images image)
Retrieve a cached sf::Texture by manifest enum value.
static std::enable_if_t< has_Strings< M >::value, const std::string & > get(typename M::Text config)
Retrieve a string config value.
Base class for all Malena manifests.
static void unload(Asset asset)
Unified manifest resource and config accessor.
static std::enable_if_t< is_fonts_enum< TManifest, EnumType >::value > unload(EnumType key)
static auto get(EnumType key) -> std::enable_if_t< !is_asset_enum< TManifest, EnumType >::value, decltype(ConfigManager< TManifest >::get(key))>
Retrieve a config value by enum key → ConfigManager.
static std::enable_if_t< is_sounds_enum< TManifest, EnumType >::value > unload(EnumType key)
static std::enable_if_t< is_images_enum< TManifest, EnumType >::value > unload(EnumType key)
static auto get(EnumType key) -> std::enable_if_t< is_asset_enum< TManifest, EnumType >::value, const_ref_t< decltype(AssetsManager< TManifest >::get(key))> >
Retrieve an asset by enum key → AssetsManager.