Basic TMXParser without the data piece yet

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
sigonasr2 2022-10-10 16:19:22 -05:00
parent 344322ada4
commit 274231a62f
2 changed files with 15 additions and 12 deletions

Binary file not shown.

View File

@ -27,14 +27,7 @@ struct LayerTag{
std::vector<std::vector<int>> tiles; std::vector<std::vector<int>> tiles;
std::string str() { std::string str() {
std::string displayStr=tag.tag+"\n"+tag.FormatTagData(tag.data); std::string displayStr=tag.tag+"\n"+tag.FormatTagData(tag.data);
displayStr+=" DATA\n"; displayStr+=" DATA ("+std::to_string(tiles[0].size())+"x"+std::to_string(tiles.size())+")\n";
for (int row=0;row<tiles.size();row++) {
displayStr+=" ";
for (int col=0;col<tiles[row].size();col++) {
displayStr+=std::to_string(tiles[row][col])+",";
}
displayStr+="\n";
}
return displayStr; return displayStr;
} }
}; };
@ -61,7 +54,6 @@ class TMXParser{
private: private:
Map parsedMapInfo; Map parsedMapInfo;
LayerTag*activeLayer;
void ParseTag(std::string tag) { void ParseTag(std::string tag) {
XMLTag newTag; XMLTag newTag;
@ -89,7 +81,9 @@ class TMXParser{
parsedMapInfo.TilesetData=newTag; parsedMapInfo.TilesetData=newTag;
} else } else
if (newTag.tag=="layer") { if (newTag.tag=="layer") {
parsedMapInfo.LayerData.push_back({newTag}); LayerTag l = {newTag};
parsedMapInfo.LayerData.push_back(l);
std::cout<<"Insert layer: "+std::to_string(parsedMapInfo.LayerData.size());
} else { } else {
std::cout<<"Unsupported tag format! Ignoring."<<"\n"; std::cout<<"Unsupported tag format! Ignoring."<<"\n";
} }
@ -97,7 +91,7 @@ class TMXParser{
} }
public: public:
TMXParser() { TMXParser(){
std::ifstream f("00_test_room.tmx",std::ios::in); std::ifstream f("00_test_room.tmx",std::ios::in);
std::string accumulator=""; std::string accumulator="";
@ -118,7 +112,16 @@ class TMXParser{
if (data[0]=='<') { if (data[0]=='<') {
//Beginning of XML tag. //Beginning of XML tag.
accumulator=data; accumulator=data;
} } else {
//Start reading in data for this layer.
std::vector<int>rowData;
while (data.find(",")!=std::string::npos) {
std::string datapiece = data.substr(0,data.find(","));
data = data.substr(data.find(",")+1,std::string::npos);
rowData.push_back(stoi(datapiece));
}
parsedMapInfo.LayerData[parsedMapInfo.LayerData.size()-1].tiles.push_back(rowData);
}
} }
std::cout<<"Parsed Map Data:\n"<<parsedMapInfo<<"\n"; std::cout<<"Parsed Map Data:\n"<<parsedMapInfo<<"\n";