summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-06-15 19:25:09 +0300
committerAndrei Karas <akaras@inbox.ru>2013-06-15 19:25:09 +0300
commit649fdb1c512e9608aa05c99a08b867c8758eeaf8 (patch)
tree36aefb040eefdc08cef57f760b3ac67a842b56b8 /src/resources
parentffabda4c473711ffa8fdfe37c2a4460fe31347ac (diff)
downloadmv-649fdb1c512e9608aa05c99a08b867c8758eeaf8.tar.gz
mv-649fdb1c512e9608aa05c99a08b867c8758eeaf8.tar.bz2
mv-649fdb1c512e9608aa05c99a08b867c8758eeaf8.tar.xz
mv-649fdb1c512e9608aa05c99a08b867c8758eeaf8.zip
Add support for monster look.
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/beinginfo.cpp21
-rw-r--r--src/resources/beinginfo.h6
-rw-r--r--src/resources/monsterdb.cpp4
3 files changed, 31 insertions, 0 deletions
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp
index b1d6c1d0c..361dead4d 100644
--- a/src/resources/beinginfo.cpp
+++ b/src/resources/beinginfo.cpp
@@ -46,6 +46,7 @@ BeingInfo::BeingInfo() :
| Map::BLOCKMASK_MONSTER | Map::BLOCKMASK_AIR
| Map::BLOCKMASK_WATER),
mBlockType(Map::BLOCKTYPE_CHARACTER),
+ mColors(nullptr),
mTargetOffsetX(0),
mTargetOffsetY(0),
mMaxHP(0),
@@ -151,3 +152,23 @@ void BeingInfo::init()
empty->mMissEffectId = paths.getIntValue("missEffectId");
}
}
+
+void BeingInfo::setColorsList(const std::string &name)
+{
+ if (name.empty())
+ mColors = nullptr;
+ else
+ mColors = ColorDB::getColorsList(name);
+}
+
+std::string BeingInfo::getColor(const int idx) const
+{
+ if (!mColors)
+ return std::string();
+
+ const std::map <int, ColorDB::ItemColor>::const_iterator
+ it = mColors->find(idx);
+ if (it == mColors->end())
+ return std::string();
+ return it->second.color;
+}
diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h
index e62dda149..d94e3db30 100644
--- a/src/resources/beinginfo.h
+++ b/src/resources/beinginfo.h
@@ -25,6 +25,7 @@
#include "actorsprite.h"
+#include "resources/colordb.h"
#include "resources/cursor.h"
#include "resources/soundinfo.h"
@@ -207,6 +208,10 @@ class BeingInfo final
void setHeight(const int n)
{ mHeight = n; }
+ void setColorsList(const std::string &name);
+
+ std::string getColor(const int idx) const;
+
static void init();
static void clear();
@@ -220,6 +225,7 @@ class BeingInfo final
Attacks mAttacks;
unsigned char mWalkMask;
Map::BlockType mBlockType;
+ const std::map <int, ColorDB::ItemColor> *mColors;
int mTargetOffsetX;
int mTargetOffsetY;
int mMaxHP;
diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp
index 3d6473fd6..9e8da1b44 100644
--- a/src/resources/monsterdb.cpp
+++ b/src/resources/monsterdb.cpp
@@ -112,12 +112,16 @@ void MonsterDB::loadXmlFile(const std::string &fileName)
currentInfo->setMaxHP(XML::getProperty(monsterNode, "maxHP", 0));
+
currentInfo->setSortOffsetY(XML::getProperty(
monsterNode, "sortOffsetY", 0));
currentInfo->setDeadSortOffsetY(XML::getProperty(
monsterNode, "deadSortOffsetY", 31));
+ currentInfo->setColorsList(XML::getProperty(monsterNode,
+ "colors", ""));
+
unsigned char block = 0;
std::string walkStr = XML::getProperty(
monsterNode, "walkType", "walk");