diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-10-10 19:00:20 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-10-10 19:31:42 +0300 |
commit | 675b9f793e5b36862294e4f0419c5cf2eab72164 (patch) | |
tree | 2750b8d336e6f670f4684a55800195f025cb846f | |
parent | 495110a8cb407548e227b062f6446b8eaa9605d0 (diff) | |
download | mv-675b9f793e5b36862294e4f0419c5cf2eab72164.tar.gz mv-675b9f793e5b36862294e4f0419c5cf2eab72164.tar.bz2 mv-675b9f793e5b36862294e4f0419c5cf2eab72164.tar.xz mv-675b9f793e5b36862294e4f0419c5cf2eab72164.zip |
Fix some asserts in text command editor.
-rw-r--r-- | src/progs/manaplus/client.cpp | 5 | ||||
-rw-r--r-- | src/resources/db/itemdb.cpp | 10 | ||||
-rw-r--r-- | src/resources/db/itemdb.h | 1 | ||||
-rw-r--r-- | src/textcommand.cpp | 8 |
4 files changed, 20 insertions, 4 deletions
diff --git a/src/progs/manaplus/client.cpp b/src/progs/manaplus/client.cpp index be5c7ca81..9bc4b03cb 100644 --- a/src/progs/manaplus/client.cpp +++ b/src/progs/manaplus/client.cpp @@ -1922,13 +1922,14 @@ void Client::loadData() TranslationManager::loadDictionaryLang(); PlayerInfo::stateChange(mState); + AttributesEnum::init(); + DbManager::loadDb(); + delete spellManager; spellManager = new SpellManager; delete spellShortcut; spellShortcut = new SpellShortcut; - AttributesEnum::init(); - DbManager::loadDb(); EquipmentWindow::prepareSlotNames(); ActorSprite::load(); diff --git a/src/resources/db/itemdb.cpp b/src/resources/db/itemdb.cpp index a98f0dad4..274b44bb2 100644 --- a/src/resources/db/itemdb.cpp +++ b/src/resources/db/itemdb.cpp @@ -801,6 +801,16 @@ bool ItemDB::exists(const int id) return i != mItemInfos.end(); } +bool ItemDB::exists(const std::string &name) +{ + if (!mLoaded) + return false; + + const NamedItemInfos::const_iterator i = mNamedItemInfos.find( + normalize(name)); + return i != mNamedItemInfos.end(); +} + const ItemInfo &ItemDB::get(const int id) { if (!mLoaded) diff --git a/src/resources/db/itemdb.h b/src/resources/db/itemdb.h index 96de60b6a..1515d3ba0 100644 --- a/src/resources/db/itemdb.h +++ b/src/resources/db/itemdb.h @@ -49,6 +49,7 @@ namespace ItemDB const StringVect &getTags(); bool exists(const int id) A_WARN_UNUSED; + bool exists(const std::string &name) A_WARN_UNUSED; const ItemInfo &get(const int id) A_WARN_UNUSED; const ItemInfo &get(const std::string &name) A_WARN_UNUSED; diff --git a/src/textcommand.cpp b/src/textcommand.cpp index 8a5949613..320e295a2 100644 --- a/src/textcommand.cpp +++ b/src/textcommand.cpp @@ -125,10 +125,14 @@ void TextCommand::loadImage() mImage = nullptr; } - if (getIcon().empty()) + if (mIcon.empty() || + !ItemDB::exists(mIcon)) + { return; + } - const SpriteDisplay display = ItemDB::get(getIcon()).getDisplay(); + const ItemInfo &info = ItemDB::get(mIcon); + const SpriteDisplay display = info.getDisplay(); mImage = Loader::getImage(pathJoin(paths.getStringValue("itemIcons"), display.image)); |