diff --git a/Crawler/Crawler.h b/Crawler/Crawler.h index 5be77c89..a09ce89e 100644 --- a/Crawler/Crawler.h +++ b/Crawler/Crawler.h @@ -7,6 +7,9 @@ #include "Player.h" #include "olcUTIL_Camera2D.h" #include "Effect.h" +#include "Map.h" +#include "TMXParser.h" + class Crawler : public olc::PixelGameEngine { @@ -17,6 +20,7 @@ class Crawler : public olc::PixelGameEngine GFX_Heart,GFX_BLOCK_BUBBLE,GFX_Ranger_Sheet,GFX_Wizard_Sheet, GFX_Battlecry_Effect,GFX_Mana,GFX_SonicSlash; std::vectorforegroundEffects,backgroundEffects; + std::mapMAP_DATA; vf2d worldShake={}; float worldShakeTime=0; float lastWorldShakeAdjust=0; diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj index 364e6471..ee718fef 100644 --- a/Crawler/Crawler.vcxproj +++ b/Crawler/Crawler.vcxproj @@ -171,6 +171,7 @@ + diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters index 067fd35e..517f8c84 100644 --- a/Crawler/Crawler.vcxproj.filters +++ b/Crawler/Crawler.vcxproj.filters @@ -81,6 +81,9 @@ Header Files + + Header Files + diff --git a/Crawler/Map.h b/Crawler/Map.h new file mode 100644 index 00000000..854317b1 --- /dev/null +++ b/Crawler/Map.h @@ -0,0 +1,5 @@ +#pragma once +enum MapName{ + LEVEL1, + LEVEL2, +}; \ No newline at end of file diff --git a/Crawler/TMXParser.h b/Crawler/TMXParser.h index 96dad3dc..e07efc6a 100644 --- a/Crawler/TMXParser.h +++ b/Crawler/TMXParser.h @@ -7,60 +7,24 @@ using namespace olc; struct XMLTag{ std::string tag; std::map data; - const std::string FormatTagData(std::maptiles) { - std::string displayStr=""; - for (std::map::iterator it=data.begin();it!=data.end();it++) { - displayStr+=" "+it->first+": "+it->second+"\n"; - } - return displayStr; - } - friend std::ostream& operator << (std::ostream& os, XMLTag& rhs) { - os << - rhs.tag <<"\n"<< - rhs.FormatTagData(rhs.data) <<"\n"; - - return os; } - - int GetInteger(std::string dataTag) { - return std::stoi(data[dataTag]); - } - double GetDouble(std::string dataTag) { - return std::stod(data[dataTag]); - } - bool GetBool(std::string dataTag) { - if (data[dataTag]=="0") { - return false; - } else { - return true; - } - - } + const std::string FormatTagData(std::maptiles); + friend std::ostream& operator << (std::ostream& os, XMLTag& rhs); + int GetInteger(std::string dataTag); + double GetDouble(std::string dataTag); + bool GetBool(std::string dataTag); }; struct LayerTag{ XMLTag tag; std::vector> tiles; - std::string str() { - std::string displayStr=tag.tag+"\n"+tag.FormatTagData(tag.data); - displayStr+=" DATA ("+std::to_string(tiles[0].size())+"x"+std::to_string(tiles.size())+")\n"; - return displayStr; - } + std::string str(); }; struct SpawnerTag{ XMLTag ObjectData; std::vectorproperties; - std::string str() { - std::string displayStr=ObjectData.tag+"\n"+ObjectData.FormatTagData(ObjectData.data); - for(XMLTag tag:properties){ - displayStr+=" ("+tag.FormatTagData(tag.data)+")\n"; - } - return displayStr; - } - friend std::ostream& operator << (std::ostream& os, SpawnerTag& rhs) { - os << rhs.str()<<"\n"; - - return os; } + std::string str(); + friend std::ostream& operator << (std::ostream& os, SpawnerTag& rhs); }; struct Map{ @@ -68,45 +32,96 @@ struct Map{ XMLTag TilesetData; std::vector LayerData; std::vector SpawnerData; - std::string FormatLayerData(std::ostream& os, std::vectortiles) { + std::string FormatLayerData(std::ostream& os, std::vectortiles); + std::string FormatSpawnerData(std::ostream& os, std::vectortiles); + friend std::ostream& operator << (std::ostream& os, Map& rhs); +}; + +class TMXParser{ + public: + Map GetData(); + private: + Map parsedMapInfo; + bool buildingSpawner=false; + SpawnerTag obj; + void ParseTag(std::string tag); + public: + TMXParser(std::string file); +}; + +#ifdef TMX_PARSER_SETUP +#undef TMX_PARSER_SETUP + const std::string XMLTag::FormatTagData(std::maptiles){ + std::string displayStr=""; + for (std::map::iterator it=data.begin();it!=data.end();it++) { + displayStr+=" "+it->first+": "+it->second+"\n"; + } + return displayStr; + } + std::ostream& operator << (std::ostream& os, XMLTag& rhs){ + os << + rhs.tag <<"\n"<< + rhs.FormatTagData(rhs.data) <<"\n"; + + return os; + } + int XMLTag::GetInteger(std::string dataTag) { + return std::stoi(data[dataTag]); + } + double XMLTag::GetDouble(std::string dataTag) { + return std::stod(data[dataTag]); + } + bool XMLTag::GetBool(std::string dataTag) { + if (data[dataTag]=="0") { + return false; + } else { + return true; + } + } + + std::string LayerTag::str() { + std::string displayStr=tag.tag+"\n"+tag.FormatTagData(tag.data); + displayStr+=" DATA ("+std::to_string(tiles[0].size())+"x"+std::to_string(tiles.size())+")\n"; + return displayStr; + } + std::string SpawnerTag::str() { + std::string displayStr=ObjectData.tag+"\n"+ObjectData.FormatTagData(ObjectData.data); + for(XMLTag tag:properties){ + displayStr+=" ("+tag.FormatTagData(tag.data)+")\n"; + } + return displayStr; + } + std::ostream& operator << (std::ostream& os, SpawnerTag& rhs) { + os << rhs.str()<<"\n"; + return os; + } + std::string Map::FormatLayerData(std::ostream& os, std::vectortiles) { std::string displayStr; for (int i=0;itiles) { + std::string Map::FormatSpawnerData(std::ostream& os, std::vectortiles) { std::string displayStr; for (int i=0;i