2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-05-13 13:51:41 +00:00

feat: accept aliases for asset type names

This commit is contained in:
Jan Laupetin
2026-05-02 17:42:55 +02:00
parent 0cbe0c2891
commit 08c128addd
20 changed files with 175 additions and 251 deletions
@@ -23,7 +23,12 @@ void SequenceZoneDefinitionEntry::ProcessMatch(ZoneDefinitionParserState* state,
{
const auto& typeNameToken = result.NextCapture(CAPTURE_TYPE_NAME);
const auto maybeAssetType = state->m_asset_name_resolver.GetAssetTypeByName(typeNameToken.FieldValue());
const auto maybeAssetType = state->m_game.and_then(
[&typeNameToken](const IGame* game)
{
return game->FindAssetTypeByName(typeNameToken.FieldValue());
});
if (!maybeAssetType)
throw ParsingException(typeNameToken.GetPos(), "Unknown asset type");
@@ -12,10 +12,10 @@ ZoneDefinitionParserState::ZoneDefinitionParserState(std::string targetName, ISe
m_definition->m_name = std::move(targetName);
}
void ZoneDefinitionParserState::SetGame(const GameId game)
void ZoneDefinitionParserState::SetGame(const GameId gameId)
{
m_definition->m_game = game;
m_asset_name_resolver = AssetNameResolver(game);
m_definition->m_game = gameId;
m_game = IGame::GetGameById(gameId);
}
namespace
@@ -2,7 +2,6 @@
#include "Parsing/IParserLineStream.h"
#include "SearchPath/ISearchPath.h"
#include "Zone/AssetNameResolver.h"
#include "Zone/Definition/ZoneDefinition.h"
#include <memory>
@@ -15,7 +14,7 @@ class ZoneDefinitionParserState
public:
ZoneDefinitionParserState(std::string targetName, ISearchPath& searchPath, IParserLineStream& underlyingStream);
void SetGame(GameId game);
void SetGame(GameId gameId);
void StartIPak(std::string ipakName);
void StartIwd(std::string iwdName);
@@ -26,7 +25,7 @@ public:
IParserLineStream& m_underlying_stream;
std::unordered_set<std::string> m_inclusions;
AssetNameResolver m_asset_name_resolver;
std::optional<IGame*> m_game;
std::optional<ZoneDefinitionObjContainer> m_current_ipak;
std::optional<ZoneDefinitionObjContainer> m_current_iwd;