XmlMapsFile.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "core/XmlMapsFile.h"
  2. #include "core/Logger.h"
  3. XmlMapsFile::XmlMapsFile( const Ogre::String& file ):
  4. XmlFile( file )
  5. {
  6. }
  7. XmlMapsFile::~XmlMapsFile()
  8. {
  9. }
  10. const Ogre::String
  11. XmlMapsFile::GetMapFileNameByName( const Ogre::String& name )
  12. {
  13. TiXmlNode* node = m_File.RootElement();
  14. if( node == NULL || node->ValueStr() != "maps" )
  15. {
  16. LOG_ERROR( "Field XML Manager: " + m_File.ValueStr() + " is not a valid maps file! No <maps> in root." );
  17. return "";
  18. }
  19. node = node->FirstChild();
  20. while( node != NULL )
  21. {
  22. if( node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "map" )
  23. {
  24. if( GetString( node, "name" ) == name )
  25. {
  26. return GetString( node, "file_name" );
  27. }
  28. }
  29. node = node->NextSibling();
  30. }
  31. LOG_WARNING( "Can't find map \"" + name + "\" in " + m_File.ValueStr() + "." );
  32. return "";
  33. }
  34. void
  35. XmlMapsFile::GetMapNames( Ogre::StringVector& complete_params )
  36. {
  37. TiXmlNode* node = m_File.RootElement();
  38. if( node == NULL || node->ValueStr() != "maps" )
  39. {
  40. LOG_ERROR( "Field XML Manager: " + m_File.ValueStr() + " is not a valid maps file! No <maps> in root." );
  41. return;
  42. }
  43. node = node->FirstChild();
  44. while( node != NULL )
  45. {
  46. if( node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "map" )
  47. {
  48. complete_params.push_back( GetString( node, "name" ) );
  49. }
  50. node = node->NextSibling();
  51. }
  52. }