Use setLevelDirError for level not found & parse errors

This exports the previously-internal setLevelDirError function in
FileSystemUtils and uses it for if a level is not found or there was a
parsing error. Previously, if a level failed to load in these ways, it
would take you to the error screen with no error, while printing it to
the console. But this makes it more user-friendly.

As a bonus, the text is localizable, just like the existing usage of
FILESYSTEM_setLevelDirError for if a path couldn't be mounted.
This commit is contained in:
Misa
2023-05-17 10:09:59 -07:00
parent a5eb361448
commit 9387186083
15 changed files with 38 additions and 4 deletions

View File

@@ -1018,13 +1018,22 @@ bool customlevelclass::load(std::string _path)
if (!FILESYSTEM_loadTiXml2Document(_path.c_str(), doc))
{
vlog_warn("%s not found", _path.c_str());
FILESYSTEM_setLevelDirError(
loc::gettext("Level {path} not found"),
"path:str",
_path.c_str()
);
goto fail;
}
if (doc.Error())
{
vlog_error("Error parsing %s: %s", _path.c_str(), doc.ErrorStr());
FILESYSTEM_setLevelDirError(
loc::gettext("Error parsing {path}: {error}"),
"path:str, error:str",
_path.c_str(),
doc.ErrorStr()
);
goto fail;
}