From 81c640c96d46a8791bf29291d4c8179b77306ce7 Mon Sep 17 00:00:00 2001
From: Jared Adams <jaxad0127@gmail.com>
Date: Thu, 10 Feb 2011 08:47:35 -0700
Subject: Add support for CSV map data

Reviewed-by: Freeyorp
---
 src/resources/mapreader.cpp | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp
index 07a1262c..14021406 100644
--- a/src/resources/mapreader.cpp
+++ b/src/resources/mapreader.cpp
@@ -288,7 +288,7 @@ void MapReader::readLayer(xmlNodePtr node, Map *map)
 
             int len = strlen((const char*)dataChild->content) + 1;
             unsigned char *charData = new unsigned char[len + 1];
-            const char *charStart = (const char*)dataChild->content;
+            const char *charStart = (const char*) xmlNodeGetContent(dataChild);
             unsigned char *charIndex = charData;
 
             while (*charStart)
@@ -357,6 +357,39 @@ void MapReader::readLayer(xmlNodePtr node, Map *map)
                 free(binData);
             }
         }
+        else if (encoding == "csv")
+        {
+            xmlNodePtr dataChild = childNode->xmlChildrenNode;
+            if (!dataChild)
+                continue;
+
+            const char *data = (const char*) xmlNodeGetContent(dataChild);
+            std::string csv(data);
+
+            size_t pos = 0;
+            size_t oldPos = 0;
+
+            while (oldPos != csv.npos)
+            {
+                pos = csv.find_first_of(",", oldPos);
+
+                const int gid = atoi(csv.substr(oldPos, pos - oldPos).c_str());
+
+                setTile(map, layer, x, y, gid);
+
+                x++;
+                if (x == w)
+                {
+                    x = 0; y++;
+
+                    // When we're done, don't crash on too much data
+                    if (y == h)
+                        break;
+                }
+
+                oldPos = pos + 1;
+            }
+        }
         else
         {
             // Read plain XML map file
-- 
cgit v1.2.3-70-g09d2