2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-06-12 03:32:12 +00:00

refactor: move asset type names to IGame implementations

This commit is contained in:
Jan Laupetin
2026-02-04 22:35:33 +00:00
parent e5784d09ed
commit 3b1e65e8cc
39 changed files with 72 additions and 607 deletions
+4 -21
View File
@@ -7,30 +7,13 @@
#include <string>
#include <unordered_map>
class IAssetNameResolver
class AssetNameResolver
{
public:
IAssetNameResolver() = default;
virtual ~IAssetNameResolver() = default;
IAssetNameResolver(const IAssetNameResolver& other) = default;
IAssetNameResolver(IAssetNameResolver&& other) noexcept = default;
IAssetNameResolver& operator=(const IAssetNameResolver& other) = default;
IAssetNameResolver& operator=(IAssetNameResolver&& other) noexcept = default;
AssetNameResolver() = default;
explicit AssetNameResolver(GameId gameId);
[[nodiscard]] virtual GameId GetGameId() const = 0;
[[nodiscard]] virtual std::optional<asset_type_t> GetAssetTypeByName(const std::string& assetTypeName) const = 0;
[[nodiscard]] virtual std::optional<const char*> GetAssetTypeName(asset_type_t assetType) const = 0;
static const IAssetNameResolver* GetResolverForGame(GameId game);
};
class HashMapBasedAssetNameResolver : public IAssetNameResolver
{
public:
[[nodiscard]] std::optional<asset_type_t> GetAssetTypeByName(const std::string& assetTypeName) const override;
protected:
void AddAssetTypeName(asset_type_t assetType, std::string name);
[[nodiscard]] std::optional<asset_type_t> GetAssetTypeByName(const std::string& assetTypeName) const;
private:
std::unordered_map<std::string, asset_type_t> m_asset_types_by_name;