1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-21 00:19:29 +02:00

Fixed missing translation strings on loading campaign save

- campaign header now contains text container and stores campaign texts
- map header now contains text container instead of inheriting it
- moved text container registration logic to a wraper class
- fixed registration of copied text containers (from copied map header)
This commit is contained in:
Ivan Savenko
2024-01-15 13:10:25 +02:00
parent d3a1cdb97a
commit c7897300c0
9 changed files with 67 additions and 25 deletions

View File

@ -264,11 +264,14 @@ void TextLocalizationContainer::registerStringOverride(const std::string & modCo
void TextLocalizationContainer::addSubContainer(const TextLocalizationContainer & container)
{
assert(!vstd::contains(subContainers, &container));
subContainers.push_back(&container);
}
void TextLocalizationContainer::removeSubContainer(const TextLocalizationContainer & container)
{
assert(vstd::contains(subContainers, &container));
subContainers.erase(std::remove(subContainers.begin(), subContainers.end(), &container), subContainers.end());
}
@ -414,6 +417,28 @@ void TextLocalizationContainer::jsonSerialize(JsonNode & dest) const
}
}
TextContainerRegistrable::TextContainerRegistrable()
{
VLC->generaltexth->addSubContainer(*this);
}
TextContainerRegistrable::~TextContainerRegistrable()
{
VLC->generaltexth->removeSubContainer(*this);
}
TextContainerRegistrable::TextContainerRegistrable(const TextContainerRegistrable & other)
: TextLocalizationContainer(other)
{
VLC->generaltexth->addSubContainer(*this);
}
TextContainerRegistrable::TextContainerRegistrable(TextContainerRegistrable && other) noexcept
:TextLocalizationContainer(other)
{
VLC->generaltexth->addSubContainer(*this);
}
void CGeneralTextHandler::readToVector(const std::string & sourceID, const std::string & sourceName)
{
CLegacyConfigParser parser(TextPath::builtin(sourceName));