summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoderic Morris <roderic@ccs.neu.edu>2008-10-23 04:10:32 +0000
committerRoderic Morris <roderic@ccs.neu.edu>2008-10-23 04:10:32 +0000
commit2fdca71554dee26bae4b1ee0dc63469599144c59 (patch)
treebc154b7df7a9a929bc6e851caca93947663f0355
parent5a4e1ac688d83a46b6c6cb5c4945535f1ae4151f (diff)
downloadmanaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.gz
manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.bz2
manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.xz
manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.zip
ignore case in map object types (by Chuck Miller)
-rw-r--r--ChangeLog6
-rw-r--r--src/Makefile.am6
-rw-r--r--src/game-server/mapreader.cpp16
-rw-r--r--src/utils/string.cpp31
-rw-r--r--src/utils/string.hpp31
5 files changed, 83 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index daecf9df..bbaf72b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2008-10-22 Chuck Miller <shadowmil@gmail.com>
+ * src/game-server/mapreader.cpp, src/utils/sting.cpp
+ src/utils/string.hpp: Makes the values in tmx files
+ ignore case for convience
+
+2008-10-22 Chuck Miller <shadowmil@gmail.com>
+
* src/game-server/item.cpp, src/game-server/item.hpp
src/game-server/itemmanager.cpp: Added on item use scripts.
diff --git a/src/Makefile.am b/src/Makefile.am
index 936fd7b9..681a557e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -72,7 +72,8 @@ tmwserv_account_SOURCES = \
utils/tokendispenser.hpp \
utils/tokendispenser.cpp \
utils/xml.hpp \
- utils/xml.cpp
+ utils/xml.cpp \
+ utils/string.cpp
tmwserv_game_SOURCES = \
game-server/main-game.cpp \
@@ -169,7 +170,8 @@ tmwserv_game_SOURCES = \
utils/xml.hpp \
utils/xml.cpp \
utils/zlib.hpp \
- utils/zlib.cpp
+ utils/zlib.cpp \
+ utils/string.cpp
if BUILD_MYSQL
tmwserv_account_SOURCES += \
diff --git a/src/game-server/mapreader.cpp b/src/game-server/mapreader.cpp
index f67e3840..08ed68c3 100644
--- a/src/game-server/mapreader.cpp
+++ b/src/game-server/mapreader.cpp
@@ -38,6 +38,7 @@
#include "utils/trim.hpp"
#include "utils/xml.hpp"
#include "utils/zlib.hpp"
+#include "utils/string.hpp"
static std::vector< int > tilesetFirstGids;
@@ -120,7 +121,6 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
{
// Take the filename off the path
std::string pathDir = path.substr(0, path.rfind("/") + 1);
-
int w = XML::getProperty(node, "width", 0);
int h = XML::getProperty(node, "height", 0);
// We only support tile width of 32 at the moment
@@ -162,12 +162,13 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
std::string objName = XML::getProperty(objectNode, "name", "");
std::string objType = XML::getProperty(objectNode, "type", "");
+ objType = utils::toupper(objType);
int objX = XML::getProperty(objectNode, "x", 0);
int objY = XML::getProperty(objectNode, "y", 0);
int objW = XML::getProperty(objectNode, "width", 0);
int objH = XML::getProperty(objectNode, "height", 0);
Rectangle rect = { objX, objY, objW, objH };
-
+
if (objType == "WARP")
{
@@ -187,6 +188,7 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
if (xmlStrEqual(propertyNode->name, BAD_CAST "property"))
{
std::string value = XML::getProperty(propertyNode, "name", std::string());
+ value = utils::toupper(value);
if (value == "DEST_MAP")
{
destMapId = getObjectProperty(propertyNode, -1);
@@ -236,15 +238,17 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
{
if (xmlStrEqual(propertyNode->name, BAD_CAST "property"))
{
- if (XML::getProperty(propertyNode, "name", std::string()) == "MONSTER_ID")
+ std::string value = XML::getProperty(propertyNode, "name", std::string());
+ value = utils::toupper(value);
+ if (value == "MONSTER_ID")
{
monsterId = getObjectProperty(propertyNode, monsterId);
}
- else if (XML::getProperty(propertyNode, "name", std::string()) == "MAX_BEINGS")
+ else if (value == "MAX_BEINGS")
{
maxBeings = getObjectProperty(propertyNode, maxBeings);
}
- else if (XML::getProperty(propertyNode, "name", std::string()) == "SPAWN_RATE")
+ else if (value == "SPAWN_RATE")
{
spawnRate = getObjectProperty(propertyNode, spawnRate);
}
@@ -288,6 +292,7 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
if (xmlStrEqual(propertyNode->name, BAD_CAST "property"))
{
std::string value = XML::getProperty(propertyNode, "name", std::string());
+ value = utils::toupper(value);
if (value == "NPC_ID")
{
npcId = getObjectProperty(propertyNode, npcId);
@@ -334,6 +339,7 @@ Map* MapReader::readMap(xmlNodePtr node, std::string const &path,
if (xmlStrEqual(propertyNode->name, BAD_CAST "property"))
{
std::string value = XML::getProperty(propertyNode, "name", std::string());
+ value = utils::toupper(value);
if (value == "FILENAME")
{
scriptFilename = getObjectProperty(propertyNode, "");
diff --git a/src/utils/string.cpp b/src/utils/string.cpp
new file mode 100644
index 00000000..04d5f031
--- /dev/null
+++ b/src/utils/string.cpp
@@ -0,0 +1,31 @@
+/*
+ * The Mana World Server
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with The Mana World; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include <string>
+#include <cctype>
+#include "utils/string.hpp"
+
+std::string utils::toupper(std::string s)
+{
+ for (int j=0; j<s.length(); ++j)
+ s[j]=std::toupper(s[j]);
+ return s;
+}
+
diff --git a/src/utils/string.hpp b/src/utils/string.hpp
new file mode 100644
index 00000000..6561b9e4
--- /dev/null
+++ b/src/utils/string.hpp
@@ -0,0 +1,31 @@
+/*
+ * The Mana World Server
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with The Mana World; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#ifndef UTILS_STRING_HPP
+#define UTILS_STRING_HPP
+
+#include <string>
+
+namespace utils
+{
+ std::string toupper(std::string);
+}
+
+#endif