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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user