XmlEnemyFile.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (C) 2022 The V-Gears Team
  3. *
  4. * This file is part of V-Gears
  5. *
  6. * V-Gears is free software: you can redistribute it and/or modify it under
  7. * terms of the GNU General Public License as published by the Free Software
  8. * Foundation, version 3.0 (GPLv3) of the License.
  9. *
  10. * V-Gears is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. */
  15. #include "core/XmlEnemyFile.h"
  16. #include "core/Enemy.h"
  17. #include "core/Logger.h"
  18. XmlEnemyFile::XmlEnemyFile(const Ogre::String& file): XmlFile(file){}
  19. XmlEnemyFile::~XmlEnemyFile(){}
  20. void XmlEnemyFile::LoadEnemy(Enemy& enemy){
  21. TiXmlNode* node = file_.RootElement();
  22. if (node == nullptr || node->ValueStr() != "enemy"){
  23. LOG_ERROR(file_.ValueStr() + " is not a valid enemy map file! No <enemy> in root.");
  24. return;
  25. }
  26. enemy.SetEnemyId(GetInt(node, "id"));
  27. enemy.SetName(GetString(node, "name"));
  28. enemy.SetLevel(GetInt(node, "level"));
  29. enemy.SetExp(GetInt(node, "exp"));
  30. enemy.SetAp(GetInt(node, "ap"));
  31. enemy.SetMoney(GetInt(node, "money"));
  32. enemy.SetMorph(GetInt(node, "morph"));
  33. enemy.SetBackDamage(GetFloat(node, "back_damage"));
  34. node = node->FirstChild();
  35. while (node != nullptr){
  36. /*// Location data.
  37. if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "location"){
  38. int id = GetInt(node, "id");
  39. Ogre::String name(GetString(node, "name"));
  40. BattleManager::getSingleton().SetLocation(id, name);
  41. }
  42. else if (
  43. node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "arena"
  44. ){
  45. bool is_arena = GetInt(node, "is_arena") == 1;
  46. BattleManager::getSingleton().SetArenaBattle(is_arena);
  47. if (is_arena){
  48. // TODO: Read more info for arena battles
  49. }
  50. }
  51. else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "camera"){
  52. BattleManager::getSingleton().SetInitialCamera(GetInt(node, "initial"));
  53. // TODO: Loop cameras
  54. }
  55. else if (node->Type() == TiXmlNode::TINYXML_ELEMENT && node->ValueStr() == "enemies"){
  56. // TODO: Loop enemies
  57. }*/
  58. node = node->NextSibling();
  59. }
  60. }