2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-02-10 17:43:03 +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

View File

@@ -1,38 +1,28 @@
#include "AssetNameResolver.h"
#include "Game/IW3/AssetNameResolverIW3.h"
#include "Game/IW4/AssetNameResolverIW4.h"
#include "Game/IW5/AssetNameResolverIW5.h"
#include "Game/T5/AssetNameResolverT5.h"
#include "Game/T6/AssetNameResolverT6.h"
#include "Utils/StringUtils.h"
#include <cassert>
const IAssetNameResolver* IAssetNameResolver::GetResolverForGame(GameId game)
AssetNameResolver::AssetNameResolver(const GameId gameId)
{
static const IAssetNameResolver* assetNameResolvers[static_cast<unsigned>(GameId::COUNT)]{
new IW3::AssetNameResolver(),
new IW4::AssetNameResolver(),
new IW5::AssetNameResolver(),
new T5::AssetNameResolver(),
new T6::AssetNameResolver(),
};
const auto* game = IGame::GetGameById(gameId);
const auto assetTypeCount = game->GetAssetTypeCount();
assert(static_cast<unsigned>(game) < static_cast<unsigned>(GameId::COUNT));
const auto* result = assetNameResolvers[static_cast<unsigned>(game)];
assert(result);
for (asset_type_t assetType = 0; assetType < assetTypeCount; assetType++)
{
auto maybeAssetTypeName = game->GetAssetTypeName(assetType);
assert(maybeAssetTypeName);
if (!maybeAssetTypeName)
continue;
return result;
std::string lowerCaseName(*maybeAssetTypeName);
utils::MakeStringLowerCase(lowerCaseName);
m_asset_types_by_name.emplace(lowerCaseName, assetType);
}
}
void HashMapBasedAssetNameResolver::AddAssetTypeName(asset_type_t assetType, std::string name)
{
utils::MakeStringLowerCase(name);
m_asset_types_by_name.emplace(std::move(name), assetType);
}
std::optional<asset_type_t> HashMapBasedAssetNameResolver::GetAssetTypeByName(const std::string& assetTypeName) const
std::optional<asset_type_t> AssetNameResolver::GetAssetTypeByName(const std::string& assetTypeName) const
{
std::string lowerCaseName = assetTypeName;
utils::MakeStringLowerCase(lowerCaseName);