diff options
-rw-r--r-- | src/actormanager.cpp | 4 | ||||
-rw-r--r-- | src/being/being.cpp | 4 | ||||
-rw-r--r-- | src/being/being.h | 4 | ||||
-rw-r--r-- | src/being/localplayer.cpp | 2 | ||||
-rw-r--r-- | src/gui/windows/charcreatedialog.cpp | 3 | ||||
-rw-r--r-- | src/gui/windows/npcdialog.cpp | 2 |
6 files changed, 12 insertions, 7 deletions
diff --git a/src/actormanager.cpp b/src/actormanager.cpp index 694b1de36..f37cc9a18 100644 --- a/src/actormanager.cpp +++ b/src/actormanager.cpp @@ -238,8 +238,8 @@ Being *ActorManager::createBeing(const int id, const ActorSprite::Type type, const uint16_t subtype) { - Being *const being = new Being(id, type, subtype); - being->setMap(mMap); + Being *const being = new Being(id, type, subtype, mMap); + mActors.insert(being); return being; } diff --git a/src/being/being.cpp b/src/being/being.cpp index 4745f516e..fdd706bbe 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -99,7 +99,8 @@ std::list<BeingCacheEntry*> beingInfoCache; typedef std::map<int, Guild*>::const_iterator GuildsMapCIter; typedef std::map<int, int>::const_iterator IntMapCIter; -Being::Being(const int id, const Type type, const uint16_t subtype) : +Being::Being(const int id, const Type type, const uint16_t subtype, + Map *const map) : ActorSprite(id), mNextSound(), mInfo(BeingInfo::unknown), @@ -189,6 +190,7 @@ Being::Being(const int id, const Type type, const uint16_t subtype) : mSpriteHide[f] = 0; } + setMap(map); setSubtype(subtype, 0); if (mType == PLAYER) diff --git a/src/being/being.h b/src/being/being.h index 90a351af0..313a92c2d 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -155,8 +155,10 @@ class Being : public ActorSprite, public ConfigListener * * @param id a unique being id * @param subtype partly determines the type of the being + * @param map the map the being is on */ - Being(const int id, const Type type, const uint16_t subtype); + Being(const int id, const Type type, const uint16_t subtype, + Map *const map); A_DELETE_COPY(Being) diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 17424e6a8..6df48dec7 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -88,7 +88,7 @@ extern MiniStatusWindow *miniStatusWindow; extern SkillDialog *skillDialog; LocalPlayer::LocalPlayer(const int id, const int subtype) : - Being(id, PLAYER, subtype), + Being(id, PLAYER, subtype, nullptr), mGMLevel(0), mInvertDirection(0), mCrazyMoveType(config.getIntValue("crazyMoveType")), diff --git a/src/gui/windows/charcreatedialog.cpp b/src/gui/windows/charcreatedialog.cpp index d23a40f7a..5164c89b6 100644 --- a/src/gui/windows/charcreatedialog.cpp +++ b/src/gui/windows/charcreatedialog.cpp @@ -121,7 +121,8 @@ CharCreateDialog::CharCreateDialog(CharSelectDialog *const parent, mLook(0), mMinLook(CharDB::getMinLook()), mMaxLook(CharDB::getMaxLook()), - mPlayer(new Being(0, ActorSprite::PLAYER, static_cast<uint16_t>(mRace))), + mPlayer(new Being(0, ActorSprite::PLAYER, static_cast<uint16_t>(mRace), + nullptr)), mPlayerBox(new PlayerBox(mPlayer, "charcreate_playerbox.xml", "charcreate_selectedplayerbox.xml")), mHairStyle(0), diff --git a/src/gui/windows/npcdialog.cpp b/src/gui/windows/npcdialog.cpp index 9192b66b9..3b5d0d772 100644 --- a/src/gui/windows/npcdialog.cpp +++ b/src/gui/windows/npcdialog.cpp @@ -851,7 +851,7 @@ void NpcDialog::showAvatar(const uint16_t avatarId) if (needShow) { delete mAvatarBeing; - mAvatarBeing = new Being(0, ActorSprite::AVATAR, avatarId); + mAvatarBeing = new Being(0, ActorSprite::AVATAR, avatarId, nullptr); mPlayerBox->setPlayer(mAvatarBeing); if (!mAvatarBeing->empty()) { |