Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
|
Template loader: Handles the loading of entity template files for: More...
#include <TemplateLoader.h>
Public Member Functions | |
CTemplateLoader () | |
const CParamNode & | GetTemplateFileData (const std::string &templateName) |
Provides the file data for requested template. More... | |
bool | TemplateExists (const std::string &templateName) const |
Check if the template XML file exits, without trying to load it. More... | |
std::vector< std::string > | FindTemplates (const std::string &path, bool includeSubdirectories, ETemplatesType templatesType) const |
Returns a list of strings that could be validly passed as templateName to LoadTemplateFile. More... | |
std::vector< std::string > | FindTemplatesUnrestricted (const std::string &path, bool includeSubdirectories) const |
Returns a list of strings that could validly be passed as templateName to LoadTemplateFile. More... | |
Private Member Functions | |
bool | LoadTemplateFile (CParamNode &node, std::string_view templateName, bool compositing, int depth) |
(Re)loads the given template, regardless of whether it exists already, and saves into m_TemplateFileData. More... | |
void | ConstructTemplateActor (std::string_view actorName, CParamNode &out) |
Constructs a standard static-decorative-object template for the given actor. More... | |
Private Attributes | |
std::unordered_map< std::string, CParamNode > | m_TemplateFileData |
Map from template name (XML filename or special |-separated string) to the most recently loaded non-broken template data. More... | |
Template loader: Handles the loading of entity template files for:
Template names are intentionally restricted to ASCII strings for storage/serialization efficiency (we have a lot of strings so this is significant); they correspond to filenames so they shouldn't contain non-ASCII anyway.
TODO: Find a way to validate templates outside of the simulation.
|
inline |
|
private |
Constructs a standard static-decorative-object template for the given actor.
std::vector< std::string > CTemplateLoader::FindTemplates | ( | const std::string & | path, |
bool | includeSubdirectories, | ||
ETemplatesType | templatesType | ||
) | const |
Returns a list of strings that could be validly passed as templateName
to LoadTemplateFile.
(This includes "actor|foo" etc names).
std::vector< std::string > CTemplateLoader::FindTemplatesUnrestricted | ( | const std::string & | path, |
bool | includeSubdirectories | ||
) | const |
Returns a list of strings that could validly be passed as templateName
to LoadTemplateFile.
Not ignoring any special directories.
const CParamNode & CTemplateLoader::GetTemplateFileData | ( | const std::string & | templateName | ) |
Provides the file data for requested template.
|
private |
(Re)loads the given template, regardless of whether it exists already, and saves into m_TemplateFileData.
Also loads any parents that are not yet loaded. Returns false on error.
templateName | - XML filename to load (may be a |-separated string) |
compositing | - whether this template is an intermediary layer in a |-separated string. |
depth | - the current recursion depth. |
bool CTemplateLoader::TemplateExists | ( | const std::string & | templateName | ) | const |
Check if the template XML file exits, without trying to load it.
|
private |
Map from template name (XML filename or special |-separated string) to the most recently loaded non-broken template data.
This includes files that will fail schema validation. (Failed loads won't remove existing entries under the same name, so we behave more nicely when hotloading broken files)