mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-12-22 17:49:43 +01:00
De-duplicate quick/telesummary fetching in Game::init()
The less copy-pasted code, the less work for me later.
This commit is contained in:
parent
c58c357a81
commit
bbc2f06d81
1 changed files with 48 additions and 80 deletions
|
@ -98,6 +98,52 @@ static bool GetButtonFromString(const char *pText, SDL_GameControllerButton *but
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* get_summary(
|
||||||
|
const char* filename,
|
||||||
|
const char* save,
|
||||||
|
tinyxml2::XMLDocument& doc
|
||||||
|
) {
|
||||||
|
tinyxml2::XMLHandle hDoc(&doc);
|
||||||
|
tinyxml2::XMLElement* pElem;
|
||||||
|
tinyxml2::XMLHandle hRoot(NULL);
|
||||||
|
bool success;
|
||||||
|
const char* retval = "";
|
||||||
|
|
||||||
|
success = FILESYSTEM_loadTiXml2Document(filename, doc);
|
||||||
|
if (!success)
|
||||||
|
{
|
||||||
|
vlog_info("%s Not Found", save);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
pElem = hDoc.FirstChildElement().ToElement();
|
||||||
|
|
||||||
|
if (!pElem)
|
||||||
|
{
|
||||||
|
vlog_error("%s Appears Corrupted: No XML Root", save);
|
||||||
|
}
|
||||||
|
|
||||||
|
// save this for later
|
||||||
|
hRoot = tinyxml2::XMLHandle(pElem);
|
||||||
|
|
||||||
|
for (pElem = hRoot.FirstChildElement("Data").FirstChild().ToElement(); pElem; pElem = pElem->NextSiblingElement())
|
||||||
|
{
|
||||||
|
const char* pKey = pElem->Value();
|
||||||
|
const char* pText = pElem->GetText();
|
||||||
|
|
||||||
|
if (pText == NULL)
|
||||||
|
{
|
||||||
|
pText = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SDL_strcmp(pKey, "summary") == 0)
|
||||||
|
{
|
||||||
|
retval = pText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
void Game::init(void)
|
void Game::init(void)
|
||||||
{
|
{
|
||||||
|
@ -270,89 +316,11 @@ void Game::init(void)
|
||||||
saveFilePath = FILESYSTEM_getUserSaveDirectory();
|
saveFilePath = FILESYSTEM_getUserSaveDirectory();
|
||||||
|
|
||||||
tinyxml2::XMLDocument doc;
|
tinyxml2::XMLDocument doc;
|
||||||
if (!FILESYSTEM_loadTiXml2Document("saves/qsave.vvv", doc))
|
quicksummary = get_summary("saves/qsave.vvv", "Quick Save", doc);
|
||||||
{
|
|
||||||
quicksummary = "";
|
|
||||||
vlog_info("Quick Save Not Found");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tinyxml2::XMLHandle hDoc(&doc);
|
|
||||||
tinyxml2::XMLElement* pElem;
|
|
||||||
tinyxml2::XMLHandle hRoot(NULL);
|
|
||||||
|
|
||||||
pElem=hDoc.FirstChildElement().ToElement();
|
|
||||||
if (!pElem)
|
|
||||||
{
|
|
||||||
vlog_error("Quick Save Appears Corrupted: No XML Root");
|
|
||||||
}
|
|
||||||
|
|
||||||
// save this for later
|
|
||||||
hRoot=tinyxml2::XMLHandle(pElem);
|
|
||||||
|
|
||||||
for( pElem = hRoot.FirstChildElement( "Data" ).FirstChild().ToElement(); pElem; pElem=pElem->NextSiblingElement())
|
|
||||||
{
|
|
||||||
const char* pKey = pElem->Value();
|
|
||||||
const char* pText = pElem->GetText() ;
|
|
||||||
|
|
||||||
if (pText == NULL)
|
|
||||||
{
|
|
||||||
pText = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SDL_strcmp(pKey, "summary") == 0)
|
|
||||||
{
|
|
||||||
quicksummary = pText;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tinyxml2::XMLDocument docTele;
|
tinyxml2::XMLDocument docTele;
|
||||||
if (!FILESYSTEM_loadTiXml2Document("saves/tsave.vvv", docTele))
|
telesummary = get_summary("saves/tsave.vvv", "Teleporter Save", doc);
|
||||||
{
|
|
||||||
telesummary = "";
|
|
||||||
vlog_info("Teleporter Save Not Found");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tinyxml2::XMLHandle hDoc(&docTele);
|
|
||||||
tinyxml2::XMLElement* pElem;
|
|
||||||
tinyxml2::XMLHandle hRoot(NULL);
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
pElem=hDoc.FirstChildElement().ToElement();
|
|
||||||
// should always have a valid root but handle gracefully if it does
|
|
||||||
if (!pElem)
|
|
||||||
{
|
|
||||||
vlog_error("Teleporter Save Appears Corrupted: No XML Root");
|
|
||||||
}
|
|
||||||
|
|
||||||
// save this for later
|
|
||||||
hRoot=tinyxml2::XMLHandle(pElem);
|
|
||||||
}
|
|
||||||
|
|
||||||
for( pElem = hRoot.FirstChildElement( "Data" ).FirstChild().ToElement(); pElem; pElem=pElem->NextSiblingElement())
|
|
||||||
{
|
|
||||||
const char* pKey = pElem->Value();
|
|
||||||
const char* pText = pElem->GetText() ;
|
|
||||||
|
|
||||||
if (pText == NULL)
|
|
||||||
{
|
|
||||||
pText = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SDL_strcmp(pKey, "summary") == 0)
|
|
||||||
{
|
|
||||||
telesummary = pText;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
screenshake = flashlight = 0 ;
|
screenshake = flashlight = 0 ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue