|
|
|
@ -27,14 +27,7 @@ struct LayerTag{ |
|
|
|
|
std::vector<std::vector<int>> tiles; |
|
|
|
|
std::string str() { |
|
|
|
|
std::string displayStr=tag.tag+"\n"+tag.FormatTagData(tag.data); |
|
|
|
|
displayStr+=" DATA\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"; |
|
|
|
|
} |
|
|
|
|
displayStr+=" DATA ("+std::to_string(tiles[0].size())+"x"+std::to_string(tiles.size())+")\n"; |
|
|
|
|
return displayStr; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
@ -61,7 +54,6 @@ class TMXParser{ |
|
|
|
|
private: |
|
|
|
|
|
|
|
|
|
Map parsedMapInfo; |
|
|
|
|
LayerTag*activeLayer; |
|
|
|
|
|
|
|
|
|
void ParseTag(std::string tag) { |
|
|
|
|
XMLTag newTag; |
|
|
|
@ -89,7 +81,9 @@ class TMXParser{ |
|
|
|
|
parsedMapInfo.TilesetData=newTag; |
|
|
|
|
} else
|
|
|
|
|
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 { |
|
|
|
|
std::cout<<"Unsupported tag format! Ignoring."<<"\n"; |
|
|
|
|
} |
|
|
|
@ -97,7 +91,7 @@ class TMXParser{ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
TMXParser() { |
|
|
|
|
TMXParser(){ |
|
|
|
|
std::ifstream f("00_test_room.tmx",std::ios::in); |
|
|
|
|
|
|
|
|
|
std::string accumulator=""; |
|
|
|
@ -118,7 +112,16 @@ class TMXParser{ |
|
|
|
|
if (data[0]=='<') { |
|
|
|
|
//Beginning of XML tag.
|
|
|
|
|
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"; |
|
|
|
|