Menu conversion base

This commit is contained in:
Jan
2021-12-05 16:23:25 +01:00
parent 05de9cab29
commit 988620e23d
23 changed files with 454 additions and 33 deletions

View File

@ -0,0 +1,41 @@
#include "AbstractMenuConverter.h"
#include <iostream>
using namespace menu;
AbstractMenuConverter::AbstractMenuConverter(const bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager)
: m_legacy_mode(legacyMode),
m_search_path(searchPath),
m_memory(memory),
m_manager(manager)
{
}
void AbstractMenuConverter::PrintConversionExceptionDetails(const MenuConversionException& e)
{
std::cout << "ERROR while converting menu:\n";
std::cout << " Menu: " << e.m_menu->m_name << "\n";
if (e.m_item)
{
std::cout << "Item: ";
if (!e.m_item->m_name.empty())
{
std::cout << e.m_item->m_name << "\n";
}
std::cout << "\n";
}
std::cout << " Message: " << e.m_message << "\n";
}
const char* AbstractMenuConverter::ConvertString(const std::string& str) const
{
if (str.empty())
return nullptr;
return m_memory->Dup(str.c_str());
}

View File

@ -0,0 +1,26 @@
#pragma once
#include "MenuConversionException.h"
#include "AssetLoading/IAssetLoadingManager.h"
#include "SearchPath/ISearchPath.h"
#include "Utils/MemoryManager.h"
#include "Utils/ClassUtils.h"
namespace menu
{
class AbstractMenuConverter
{
protected:
bool m_legacy_mode;
ISearchPath* m_search_path;
MemoryManager* m_memory;
IAssetLoadingManager* m_manager;
AbstractMenuConverter(bool legacyMode, ISearchPath* searchPath, MemoryManager* memory, IAssetLoadingManager* manager);
_NODISCARD const char* ConvertString(const std::string& str) const;
public:
static void PrintConversionExceptionDetails(const MenuConversionException& e);
};
}

View File

@ -0,0 +1,17 @@
#include "MenuConversionException.h"
using namespace menu;
MenuConversionException::MenuConversionException(std::string message, const CommonMenuDef* menu)
: m_menu(menu),
m_item(nullptr),
m_message(std::move(message))
{
}
MenuConversionException::MenuConversionException(std::string message, const CommonMenuDef* menu, const CommonItemDef* item)
: m_menu(menu),
m_item(item),
m_message(std::move(message))
{
}

View File

@ -0,0 +1,16 @@
#pragma once
#include "Parsing/Menu/Domain/CommonMenuDef.h"
namespace menu
{
class MenuConversionException final : public std::exception
{
public:
const CommonMenuDef* m_menu;
const CommonItemDef* m_item;
std::string m_message;
explicit MenuConversionException(std::string message, const CommonMenuDef* menu);
MenuConversionException(std::string message, const CommonMenuDef* menu, const CommonItemDef* item);
};
}