mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-29 17:38:16 +03:00
Add cutscene test menu
This allows translators to test all text boxes in the scripts. It doesn't run the scripts themselves - it only shows the basic appearance of each text box individually, so context may be lost but it's good to have a way to see any text boxes that might otherwise not be easily seen because they require specific circumstances to appear.
This commit is contained in:
committed by
Misa Elizabeth Kai
parent
0ed7717dd5
commit
3937a12a85
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "FileSystemUtils.h"
|
||||
#include "Graphics.h"
|
||||
#include "Script.h"
|
||||
#include "Vlogging.h"
|
||||
#include "XMLUtils.h"
|
||||
|
||||
@@ -419,4 +420,76 @@ void global_limits_check(void)
|
||||
limitscheck_current_overflow = 0;
|
||||
}
|
||||
|
||||
void populate_testable_script_ids(void)
|
||||
{
|
||||
testable_script_ids.clear();
|
||||
|
||||
tinyxml2::XMLDocument doc;
|
||||
tinyxml2::XMLHandle hDoc(&doc);
|
||||
tinyxml2::XMLElement* pElem;
|
||||
|
||||
if (!load_lang_doc("cutscenes", doc))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FOR_EACH_XML_ELEMENT(hDoc, pElem)
|
||||
{
|
||||
EXPECT_ELEM(pElem, "cutscene");
|
||||
|
||||
const char* id = pElem->Attribute("id");
|
||||
if (id != NULL)
|
||||
{
|
||||
testable_script_ids.push_back(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool populate_cutscene_test(const char* script_id)
|
||||
{
|
||||
tinyxml2::XMLDocument doc;
|
||||
tinyxml2::XMLHandle hDoc(&doc);
|
||||
tinyxml2::XMLElement* pElem;
|
||||
|
||||
if (!load_lang_doc("cutscenes", doc))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* original = get_level_original_lang(hDoc);
|
||||
|
||||
FOR_EACH_XML_ELEMENT(hDoc, pElem)
|
||||
{
|
||||
EXPECT_ELEM(pElem, "cutscene");
|
||||
|
||||
if (SDL_strcmp(pElem->Attribute("id"), script_id) != 0)
|
||||
{
|
||||
/* Not the correct cutscene */
|
||||
continue;
|
||||
}
|
||||
|
||||
tinyxml2::XMLElement* subElem;
|
||||
FOR_EACH_XML_SUB_ELEMENT(pElem, subElem)
|
||||
{
|
||||
EXPECT_ELEM(subElem, "dialogue");
|
||||
|
||||
const char* tra = subElem->Attribute("translation");
|
||||
const char* speaker = subElem->Attribute("speaker");
|
||||
const char* eng = subElem->Attribute(original);
|
||||
if (tra != NULL && tra[0] != '\0' && speaker != NULL && eng != NULL)
|
||||
{
|
||||
script.add_test_line(
|
||||
speaker,
|
||||
eng,
|
||||
subElem->UnsignedAttribute("case", 1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
} /* namespace loc */
|
||||
|
||||
Reference in New Issue
Block a user