21 template<
typename Manifest,
typename EnumType,
typename =
void>
22 struct is_images_enum : std::false_type {};
23 template<
typename Manifest,
typename EnumType>
24 struct is_images_enum<
Manifest, EnumType,
25 std::void_t<typename Manifest::Images>>
27 std::is_same_v<EnumType, typename Manifest::Images>> {};
29 template<
typename Manifest,
typename EnumType,
typename =
void>
30 struct is_fonts_enum : std::false_type {};
31 template<
typename Manifest,
typename EnumType>
32 struct is_fonts_enum<
Manifest, EnumType,
33 std::void_t<typename Manifest::Fonts>>
35 std::is_same_v<EnumType, typename Manifest::Fonts>> {};
37 template<
typename Manifest,
typename EnumType,
typename =
void>
38 struct is_sounds_enum : std::false_type {};
39 template<
typename Manifest,
typename EnumType>
40 struct is_sounds_enum<
Manifest, EnumType,
41 std::void_t<typename Manifest::Sounds>>
43 std::is_same_v<EnumType, typename Manifest::Sounds>> {};
45 template<
typename Manifest,
typename EnumType>
46 struct is_asset_enum : std::bool_constant<
47 is_images_enum<Manifest, EnumType>::value ||
48 is_fonts_enum <Manifest, EnumType>::value ||
49 is_sounds_enum<Manifest, EnumType>::value
54 using const_ref_t = std::add_lvalue_reference_t<
56 std::remove_reference_t<T>>>;
96 template<
typename Manifest>
106 template<
typename EnumType>
107 static auto get(EnumType key)
109 is_asset_enum<Manifest, EnumType>::value,
121 template<
typename EnumType>
122 static auto get(EnumType key)
124 !is_asset_enum<Manifest, EnumType>::value,
132 template<
typename EnumType>
133 static std::enable_if_t<is_images_enum<Manifest, EnumType>::value>
139 template<
typename EnumType>
140 static std::enable_if_t<is_fonts_enum<Manifest, EnumType>::value>
146 template<
typename EnumType>
147 static std::enable_if_t<is_sounds_enum<Manifest, 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)
Pulls manifest inner type aliases into a class's scope.
Unified manifest resource and config accessor.
static std::enable_if_t< is_sounds_enum< Manifest, EnumType >::value > unload(EnumType key)
static std::enable_if_t< is_images_enum< Manifest, EnumType >::value > unload(EnumType key)
static std::enable_if_t< is_fonts_enum< Manifest, EnumType >::value > unload(EnumType key)
static auto get(EnumType key) -> std::enable_if_t< !is_asset_enum< Manifest, EnumType >::value, decltype(ConfigManager< Manifest >::get(key))>
Retrieve a config value by enum key → ConfigManager.
static auto get(EnumType key) -> std::enable_if_t< is_asset_enum< Manifest, EnumType >::value, const_ref_t< decltype(AssetsManager< Manifest >::get(key))> >
Retrieve an asset by enum key → AssetsManager.