6 #include <rapidjson/document.h>
9 #include "RehtiReader.hpp"
18 std::ofstream hppFile(Config.GENERATED_ANIMATIONS_HPP_PATH);
20 if (hppFile.is_open())
23 hppFile <<
" * WARNING: This file is auto-generated by a script. Do not modify manually.\n";
26 hppFile <<
"#pragma once\n\n";
28 hppFile <<
"#include <cstdint>\n";
29 hppFile <<
"#include <algorithm>\n";
30 hppFile <<
"#include <string>\n\n";
32 hppFile <<
"constexpr size_t ANIMATION_TYPE_COUNT = " << animationNames.size() <<
";\n\n";
33 hppFile <<
"enum class AnimationType : uint32_t\n";
36 for (
size_t i = 0; i < animationNames.size(); ++i)
38 std::string enumName = animationNames[i];
39 std::transform(enumName.begin(), enumName.end(), enumName.begin(), ::toupper);
41 hppFile <<
" " << enumName;
42 if (i < animationNames.size())
48 hppFile <<
" UNDEFINED\n";
51 hppFile <<
"inline const char* AnimationTypeStrings[] = {\n";
53 for (
size_t i = 0; i < animationNames.size(); ++i)
55 std::string lowercaseName = animationNames[i];
56 std::transform(lowercaseName.begin(), lowercaseName.end(), lowercaseName.begin(), ::tolower);
58 hppFile <<
" \"" << lowercaseName <<
"\"";
59 if (i < animationNames.size() - 1)
69 hppFile <<
"inline AnimationType getAnimationType(const std::string animationName) {\n";
70 hppFile <<
" std::string lowercaseName(animationName);\n";
71 hppFile <<
" std::transform(lowercaseName.begin(), lowercaseName.end(), lowercaseName.begin(), ::tolower);\n\n";
72 hppFile <<
" for (size_t i = 0; i < ANIMATION_TYPE_COUNT; ++i) {\n";
73 hppFile <<
" if (lowercaseName.find(AnimationTypeStrings[i]) != std::string::npos) {\n";
74 hppFile <<
" return static_cast<AnimationType>(i);\n";
77 hppFile <<
" return AnimationType::UNDEFINED;\n";
81 std::cout <<
"GeneratedAnimations.hpp generated successfully.\n";
85 std::cerr <<
"Unable to open GeneratedAnimations.hpp for writing.\n";
std::vector< std::string > readAnimations()
Reads animations described in JSON file.
Definition: AnimationReader.cpp:10
void generateAnimationHppFile()
Generate GeneratedAnimations.hpp file.
Definition: AnimationTypeGenerator.hpp:14