summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-12-25 17:13:24 +0300
committerAndrei Karas <akaras@inbox.ru>2013-12-25 17:13:24 +0300
commit8357e89fc0923f4b97cf8b990a4ffba2716bfabf (patch)
tree9253ddf8d30e97a947683e12dc195f3ec69ee7bc
parent63446aa820db2a6ad83cb25c64a013e9e1418bd5 (diff)
downloadmanaplus-8357e89fc0923f4b97cf8b990a4ffba2716bfabf.tar.gz
manaplus-8357e89fc0923f4b97cf8b990a4ffba2716bfabf.tar.bz2
manaplus-8357e89fc0923f4b97cf8b990a4ffba2716bfabf.tar.xz
manaplus-8357e89fc0923f4b97cf8b990a4ffba2716bfabf.zip
add support for pet sit direction logic.
New pet db attribute: sitDirectionType It can be set same values like in directionType.
-rw-r--r--src/being/being.cpp3
-rw-r--r--src/resources/beinginfo.cpp3
-rw-r--r--src/resources/beinginfo.h7
-rw-r--r--src/resources/db/petdb.cpp3
4 files changed, 15 insertions, 1 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp
index 235bd6455..7a3a198c1 100644
--- a/src/being/being.cpp
+++ b/src/being/being.cpp
@@ -1713,7 +1713,8 @@ void Being::petLogic()
}
if (mAction == STAND)
{
- const int directionType = mInfo->getDirectionType();
+ const int directionType = mOwner->getCurrentAction() != SIT
+ ? mInfo->getDirectionType() : mInfo->getSitDirectionType();
int newDir = 0;
switch (directionType)
{
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp
index fc23bf231..20a15429c 100644
--- a/src/resources/beinginfo.cpp
+++ b/src/resources/beinginfo.cpp
@@ -66,6 +66,9 @@ BeingInfo::BeingInfo() :
mWalkSpeed(0),
mSitOffsetX(0),
mSitOffsetY(0),
+ mThinkTime(50),
+ mDirectionType(1),
+ mSitDirectionType(1),
mStaticMaxHP(false),
mTargetSelection(true)
{
diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h
index c1d53ccde..bb8f6b6ff 100644
--- a/src/resources/beinginfo.h
+++ b/src/resources/beinginfo.h
@@ -272,6 +272,12 @@ class BeingInfo final
int getDirectionType() const A_WARN_UNUSED
{ return mDirectionType; }
+ void setSitDirectionType(const int n)
+ { mSitDirectionType = n; }
+
+ int getSitDirectionType() const A_WARN_UNUSED
+ { return mSitDirectionType; }
+
void setColorsList(const std::string &name);
std::string getColor(const int idx) const A_WARN_UNUSED;
@@ -310,6 +316,7 @@ class BeingInfo final
int mSitOffsetY;
int mThinkTime;
int mDirectionType;
+ int mSitDirectionType;
bool mStaticMaxHP;
bool mTargetSelection;
};
diff --git a/src/resources/db/petdb.cpp b/src/resources/db/petdb.cpp
index 072dad7c0..631dceb60 100644
--- a/src/resources/db/petdb.cpp
+++ b/src/resources/db/petdb.cpp
@@ -103,8 +103,11 @@ void PETDB::load()
currentInfo->setThinkTime(XML::getProperty(petNode,
"thinkTime", 500) / 10);
+
currentInfo->setDirectionType(XML::getProperty(petNode,
"directionType", 1));
+ currentInfo->setSitDirectionType(XML::getProperty(petNode,
+ "sitDirectionType", 1));
SpriteDisplay display;
for_each_xml_child_node(spriteNode, petNode)