diff options
author | Roderic Morris <roderic@ccs.neu.edu> | 2008-10-23 04:10:32 +0000 |
---|---|---|
committer | Roderic Morris <roderic@ccs.neu.edu> | 2008-10-23 04:10:32 +0000 |
commit | 2fdca71554dee26bae4b1ee0dc63469599144c59 (patch) | |
tree | bc154b7df7a9a929bc6e851caca93947663f0355 /src | |
parent | 5a4e1ac688d83a46b6c6cb5c4945535f1ae4151f (diff) | |
download | manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.gz manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.bz2 manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.tar.xz manaserv-2fdca71554dee26bae4b1ee0dc63469599144c59.zip |
ignore case in map object types (by Chuck Miller)
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 6 | ||||
-rw-r--r-- | src/game-server/mapreader.cpp | 16 | ||||
-rw-r--r-- | src/utils/string.cpp | 31 | ||||
-rw-r--r-- | src/utils/string.hpp | 31 |
4 files changed, 77 insertions, 7 deletions
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 |