2
0

TMXSceneEncoder.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef TMXSCENEEENCODER_H_
  2. #define TMXSCENEEENCODER_H_
  3. #include <fstream>
  4. #include <tinyxml2.h>
  5. #include "Base.h"
  6. #include "Vector2.h"
  7. #include "TMXTypes.h"
  8. #include "EncoderArguments.h"
  9. #include "Image.h"
  10. /**
  11. * Class for encoding an TMX file.
  12. */
  13. class TMXSceneEncoder
  14. {
  15. public:
  16. /**
  17. * Constructor.
  18. */
  19. TMXSceneEncoder();
  20. /**
  21. * Destructor.
  22. */
  23. ~TMXSceneEncoder();
  24. /**
  25. * Writes out encoded TMX file.
  26. */
  27. void write(const std::string& filepath, const gameplay::EncoderArguments& arguments);
  28. private:
  29. static std::vector<unsigned int> loadDataElement(const tinyxml2::XMLElement* data);
  30. bool parseTmx(const tinyxml2::XMLDocument& xmlDoc, gameplay::TMXMap& map, const std::string& outputDirectory) const;
  31. void parseProperties(const tinyxml2::XMLElement* xmlProperties, gameplay::TMXProperties& properties) const;
  32. void writeScene(const gameplay::TMXMap& map, const std::string& outputFilepath, const std::string& sceneName);
  33. void writeTileset(const gameplay::TMXMap& map, const gameplay::TMXLayer* layer, std::ofstream& file);
  34. void writeSoloTileset(const gameplay::TMXMap& map, const gameplay::TMXTileSet& tmxTileset, const gameplay::TMXLayer& tileset, std::ofstream& file, unsigned int resultOnlyForTileset = TMX_INVALID_ID);
  35. void writeSprite(const gameplay::TMXImageLayer* imageLayer, std::ofstream& file);
  36. void writeNodeProperties(bool enabled, std::ofstream& file, bool seperatorLineWritten = false);
  37. void writeNodeProperties(bool enabled, const gameplay::TMXProperties& properties, std::ofstream& file, bool seperatorLineWritten = false);
  38. void writeNodeProperties(bool enabled, const gameplay::Vector2& pos, std::ofstream& file, bool seperatorLineWritten = false);
  39. void writeNodeProperties(bool enabled, const gameplay::Vector2& pos, const gameplay::TMXProperties& properties, std::ofstream& file, bool seperatorLineWritten = false);
  40. void writeLine(std::ofstream& file, const std::string& line) const;
  41. unsigned int _tabCount;
  42. };
  43. inline void TMXSceneEncoder::writeNodeProperties(bool enabled, std::ofstream& file, bool seperatorLineWritten)
  44. {
  45. writeNodeProperties(enabled, gameplay::Vector2::zero(), file, seperatorLineWritten);
  46. }
  47. inline void TMXSceneEncoder::writeNodeProperties(bool enabled, const gameplay::TMXProperties& properties, std::ofstream& file, bool seperatorLineWritten)
  48. {
  49. writeNodeProperties(enabled, gameplay::Vector2::zero(), properties, file, seperatorLineWritten);
  50. }
  51. inline void TMXSceneEncoder::writeNodeProperties(bool enabled, const gameplay::Vector2& pos, std::ofstream& file, bool seperatorLineWritten)
  52. {
  53. gameplay::TMXProperties noOp;
  54. writeNodeProperties(enabled, pos, noOp, file, seperatorLineWritten);
  55. }
  56. #endif