From 36832f3a5378f739da7040f0711b7101dbc2af02 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Mon, 17 May 2010 21:58:00 -0600 Subject: Add support for different target cursor sizes for NPCs Moves the parsing logic for the size strings into BeingInfo to share the code. Reviewed-by: Freeyorp --- src/resources/beinginfo.cpp | 18 ++++++++++++++++++ src/resources/beinginfo.h | 2 ++ src/resources/monsterdb.cpp | 27 ++++----------------------- src/resources/npcdb.cpp | 5 ++++- 4 files changed, 28 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp index 30b4f86f..66addde9 100644 --- a/src/resources/beinginfo.cpp +++ b/src/resources/beinginfo.cpp @@ -21,6 +21,8 @@ #include "resources/beinginfo.h" +#include "log.h" + #include "utils/dtor.h" #include "utils/gettext.h" @@ -51,6 +53,22 @@ void BeingInfo::setDisplay(SpriteDisplay display) mDisplay = display; } +void BeingInfo::setTargetCursorSize(const std::string &size) +{ + if (size == "small") + setTargetCursorSize(ActorSprite::TC_SMALL); + else if (size == "medium") + setTargetCursorSize(ActorSprite::TC_MEDIUM); + else if (size == "large") + setTargetCursorSize(ActorSprite::TC_LARGE); + else + { + logger->log("Unknown target cursor type \"%s\" for %s - using medium " + "sized one", size.c_str(), getName().c_str()); + setTargetCursorSize(ActorSprite::TC_MEDIUM); + } +} + void BeingInfo::addSound(SoundEvent event, const std::string &filename) { if (mSounds.find(event) == mSounds.end()) diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h index def5426e..8485ac6c 100644 --- a/src/resources/beinginfo.h +++ b/src/resources/beinginfo.h @@ -83,6 +83,8 @@ class BeingInfo const SpriteDisplay &getDisplay() const { return mDisplay; } + void setTargetCursorSize(const std::string &size); + void setTargetCursorSize(ActorSprite::TargetCursorSize targetSize) { mTargetCursorSize = targetSize; } diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp index c70cee94..da89302d 100644 --- a/src/resources/monsterdb.cpp +++ b/src/resources/monsterdb.cpp @@ -23,14 +23,14 @@ #include "log.h" +#include "net/net.h" + #include "resources/beinginfo.h" #include "utils/dtor.h" #include "utils/gettext.h" #include "utils/xml.h" -#include "net/net.h" - #define OLD_TMWATHENA_OFFSET 1002 namespace @@ -74,27 +74,8 @@ void MonsterDB::load() currentInfo->setName(XML::getProperty(monsterNode, "name", _("unnamed"))); - std::string targetCursor; - targetCursor = XML::getProperty(monsterNode, "targetCursor", "medium"); - if (targetCursor == "small") - { - currentInfo->setTargetCursorSize(ActorSprite::TC_SMALL); - } - else if (targetCursor == "medium") - { - currentInfo->setTargetCursorSize(ActorSprite::TC_MEDIUM); - } - else if (targetCursor == "large") - { - currentInfo->setTargetCursorSize(ActorSprite::TC_LARGE); - } - else - { - logger->log("MonsterDB: Unknown target cursor type \"%s\" for %s -" - "using medium sized one", - targetCursor.c_str(), currentInfo->getName().c_str()); - currentInfo->setTargetCursorSize(ActorSprite::TC_MEDIUM); - } + currentInfo->setTargetCursorSize(XML::getProperty(monsterNode, + "targetCursor", "medium")); SpriteDisplay display; diff --git a/src/resources/npcdb.cpp b/src/resources/npcdb.cpp index 72a89748..03581e13 100644 --- a/src/resources/npcdb.cpp +++ b/src/resources/npcdb.cpp @@ -63,8 +63,11 @@ void NPCDB::load() } BeingInfo *currentInfo = new BeingInfo; - SpriteDisplay display; + currentInfo->setTargetCursorSize(XML::getProperty(npcNode, + "targetCursor", "medium")); + + SpriteDisplay display; for_each_xml_child_node(spriteNode, npcNode) { if (xmlStrEqual(spriteNode->name, BAD_CAST "sprite")) -- cgit v1.2.3-70-g09d2