summaryrefslogtreecommitdiff
path: root/src/resources/iteminfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources/iteminfo.cpp')
-rw-r--r--src/resources/iteminfo.cpp483
1 files changed, 0 insertions, 483 deletions
diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp
deleted file mode 100644
index 60810e000..000000000
--- a/src/resources/iteminfo.cpp
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "resources/iteminfo.h"
-
-#include "const/resources/spriteaction.h"
-
-#include "const/resources/map/map.h"
-
-#include "enums/resources/spritedirection.h"
-
-#include "resources/itemmenuitem.h"
-
-#include "resources/db/colordb.h"
-#include "resources/db/itemdb.h"
-
-#include "utils/checkutils.h"
-#include "utils/dtor.h"
-#include "utils/stringutils.h"
-
-#include "debug.h"
-
-ItemInfo::ItemInfo() :
- mDisplay(),
- mMissile(),
- mName(),
- mNameEn(),
- mDescription(),
- mEffect(),
- mUseButton(),
- mUseButton2(),
- mType(ItemDbType::UNUSABLE),
- mWeight(0),
- mView(0),
- mId(0),
- mIsRemoveSprites(false),
- mSpriteToItemReplaceList(),
- mAttackAction(SpriteAction::INVALID),
- mSkyAttackAction(SpriteAction::INVALID),
- mWaterAttackAction(SpriteAction::INVALID),
- mRideAttackAction(SpriteAction::INVALID),
- mAttackRange(0),
- mMissileParticle(),
- mAnimationFiles(),
- mSounds(),
- mTags(),
- mColorsList(nullptr),
- mIconColorsList(nullptr),
- mInventoryMenu(),
- mStorageMenu(),
- mCartMenu(),
- mColorsListName(),
- mIconColorsListName(),
- mCardColor(ItemColor_zero),
- mHitEffectId(-1),
- mCriticalHitEffectId(-1),
- mMissEffectId(-1),
- maxFloorOffsetX(mapTileSize),
- maxFloorOffsetY(mapTileSize),
- mPickupCursor(Cursor::CURSOR_POINTER),
- mProtected(false)
-{
- for (int f = 0; f < 10; f ++)
- {
- mSpriteToItemReplaceMap[f] = nullptr;
- mDrawBefore[f] = -1;
- mDrawAfter[f] = -1;
- mDrawPriority[f] = 0;
- }
-}
-
-ItemInfo::~ItemInfo()
-{
- delete_all(mSpriteToItemReplaceList);
- mSpriteToItemReplaceList.clear();
- for (int f = 0; f < 10; f ++)
- mSpriteToItemReplaceMap[f] = nullptr;
-}
-
-const std::string &ItemInfo::getSprite(const GenderT gender,
- const BeingTypeId race) const
-{
- if (mView != 0)
- {
- // Forward the request to the item defining how to view this item
- return ItemDB::get(mView).getSprite(gender, race);
- }
- static const std::string empty;
- std::map<int, std::string>::const_iterator i =
- mAnimationFiles.find(CAST_S32(gender) +
- toInt(race, int) * 4);
-
- if (i != mAnimationFiles.end())
- return i->second;
- i = mAnimationFiles.find(CAST_S32(gender));
- if (i != mAnimationFiles.end())
- return i->second;
- return empty;
-}
-
-void ItemInfo::setAttackAction(const std::string &attackAction)
-{
- if (attackAction.empty())
- mAttackAction = SpriteAction::ATTACK; // (Equal to unarmed animation)
- else
- mAttackAction = attackAction;
-}
-
-void ItemInfo::setSkyAttackAction(const std::string &attackAction)
-{
- if (attackAction.empty())
- mSkyAttackAction = SpriteAction::ATTACKSKY;
- else
- mSkyAttackAction = attackAction;
-}
-
-void ItemInfo::setWaterAttackAction(const std::string &attackAction)
-{
- if (attackAction.empty())
- mWaterAttackAction = SpriteAction::ATTACKWATER;
- else
- mWaterAttackAction = attackAction;
-}
-
-void ItemInfo::setRideAttackAction(const std::string &attackAction)
-{
- if (attackAction.empty())
- mRideAttackAction = SpriteAction::ATTACKRIDE;
- else
- mRideAttackAction = attackAction;
-}
-
-void ItemInfo::addSound(const ItemSoundEvent::Type event,
- const std::string &filename, const int delay)
-{
- mSounds[event].push_back(SoundInfo(
- filename,
- delay));
-}
-
-const SoundInfo &ItemInfo::getSound(const ItemSoundEvent::Type event) const
-{
- static const SoundInfo empty("", 0);
- std::map<ItemSoundEvent::Type, SoundInfoVect>::const_iterator i;
-
- i = mSounds.find(event);
-
- if (i == mSounds.end())
- return empty;
- return (!i->second.empty()) ? i->second[CAST_U32(rand())
- % i->second.size()] : empty;
-}
-
-IntMap *ItemInfo::addReplaceSprite(const int sprite,
- const int direction)
-{
- if (direction < 0 || direction >= 10)
- return nullptr;
-
- SpriteToItemMap *spMap = mSpriteToItemReplaceMap[direction];
-
- if (spMap == nullptr)
- {
- spMap = new SpriteToItemMap;
- mSpriteToItemReplaceMap[direction] = spMap;
- mSpriteToItemReplaceList.push_back(spMap);
- }
-
- SpriteToItemMap::iterator it = spMap->find(sprite);
- if (it == spMap->end())
- {
- IntMap tmp;
- (*mSpriteToItemReplaceMap[direction])[sprite] = tmp;
- it = mSpriteToItemReplaceMap[direction]->find(sprite);
- }
- return &it->second;
-}
-
-void ItemInfo::setColorsList(const std::string &name)
-{
- if (name.empty())
- {
- mColorsList = nullptr;
- mColorsListName.clear();
- }
- else
- {
- mColorsList = ColorDB::getColorsList(name);
- mColorsListName = name;
- }
-}
-
-void ItemInfo::setIconColorsList(const std::string &name)
-{
- if (name.empty())
- {
- mIconColorsList = nullptr;
- mIconColorsListName.clear();
- }
- else
- {
- mIconColorsList = ColorDB::getColorsList(name);
- mIconColorsListName = name;
- }
-}
-
-std::string ItemInfo::getDyeColorsString(const ItemColor color) const
-{
- if ((mColorsList == nullptr) || mColorsListName.empty())
- return "";
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mColorsList->find(color);
- if (it == mColorsList->end())
- return "";
-
- return it->second.color;
-}
-
-std::string ItemInfo::getDyeIconColorsString(const ItemColor color) const
-{
- if ((mIconColorsList == nullptr) || mIconColorsListName.empty())
- return "";
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mIconColorsList->find(color);
- if (it == mIconColorsList->end())
- return "";
-
- return it->second.color;
-}
-
-const std::string ItemInfo::getDescription(const ItemColor color) const
-{
- return replaceColors(mDescription, color);
-}
-
-const std::string ItemInfo::getName(const ItemColor color) const
-{
- return replaceColors(mName, color);
-}
-
-const std::string ItemInfo::getNameEn(const ItemColor color) const
-{
- return replaceColors(mNameEn, color);
-}
-
-const std::string ItemInfo::replaceColors(std::string str,
- const ItemColor color) const
-{
- std::string name;
- if ((mColorsList != nullptr) && !mColorsListName.empty())
- {
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mColorsList->find(color);
- if (it == mColorsList->end())
- name = "unknown";
- else
- name = it->second.name;
- }
- else
- {
- name = "unknown";
- }
-
- str = replaceAll(str, "%color%", name);
- if (!name.empty())
- name[0] = CAST_S8(toupper(name[0]));
-
- return replaceAll(str, "%Color%", name);
-}
-
-const SpriteToItemMap *ItemInfo::getSpriteToItemReplaceMap(const int direction)
- const
-{
- if (direction < 0 || direction >= 10)
- return nullptr;
-
- const SpriteToItemMap *const spMap = mSpriteToItemReplaceMap[direction];
- if (spMap != nullptr)
- return spMap;
- if (direction == SpriteDirection::UPLEFT
- || direction == SpriteDirection::UPRIGHT)
- {
- return mSpriteToItemReplaceMap[SpriteDirection::UP];
- }
-
- if (direction == SpriteDirection::DOWNLEFT
- || direction == SpriteDirection::DOWNRIGHT)
- {
- return mSpriteToItemReplaceMap[SpriteDirection::DOWN];
- }
-
- return nullptr;
-}
-
-void ItemInfo::setSpriteOrder(int *const ptr,
- const int direction,
- const int n,
- const int def)
-{
- switch (direction)
- {
- case -1:
- {
- for (int f = 0; f < 10; f ++)
- {
- if (ptr[f] == def)
- ptr[f] = n;
- }
- return;
- }
- case -2:
- {
- ptr[SpriteDirection::DOWN] = n;
- ptr[SpriteDirection::DOWNLEFT] = n;
- ptr[SpriteDirection::DOWNRIGHT] = n;
- return;
- }
- case -3:
- {
- ptr[SpriteDirection::UP] = n;
- ptr[SpriteDirection::UPLEFT] = n;
- ptr[SpriteDirection::UPRIGHT] = n;
- return;
- }
- default:
- break;
- }
- if (direction < 0 || direction >= 9)
- return;
-
- if (direction == SpriteDirection::UP)
- {
- if (ptr[SpriteDirection::UPLEFT] == def)
- ptr[SpriteDirection::UPLEFT] = n;
- if (ptr[SpriteDirection::UPRIGHT] == def)
- ptr[SpriteDirection::UPRIGHT] = n;
- }
- else if (direction == SpriteDirection::DOWN)
- {
- if (ptr[SpriteDirection::DOWNLEFT] == def)
- ptr[SpriteDirection::DOWNLEFT] = n;
- if (ptr[SpriteDirection::DOWNRIGHT] == def)
- ptr[SpriteDirection::DOWNRIGHT] = n;
- }
- ptr[direction] = n;
-}
-
-void ItemInfo::setDrawBefore(const int direction, const int n)
-{
- setSpriteOrder(&mDrawBefore[0], direction, n);
-}
-
-void ItemInfo::setDrawAfter(const int direction, const int n)
-{
- setSpriteOrder(&mDrawAfter[0], direction, n);
-}
-
-void ItemInfo::setDrawPriority(const int direction, const int n)
-{
- setSpriteOrder(&mDrawPriority[0], direction, n, 0);
-}
-
-int ItemInfo::getDrawBefore(const int direction) const
-{
- if (direction < 0 || direction >= 10)
- return -1;
- return mDrawBefore[direction];
-}
-
-int ItemInfo::getDrawAfter(const int direction) const
-{
- if (direction < 0 || direction >= 10)
- return -1;
- return mDrawAfter[direction];
-}
-
-int ItemInfo::getDrawPriority(const int direction) const
-{
- if (direction < 0 || direction >= 10)
- return 0;
- return mDrawPriority[direction];
-}
-
-void ItemInfo::setSprite(const std::string &animationFile,
- const GenderT gender,
- const int race)
-{
- mAnimationFiles[CAST_S32(gender) + race * 4] = animationFile;
-}
-
-std::string ItemInfo::getColorName(const ItemColor idx) const
-{
- if (mColorsList == nullptr)
- return std::string();
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mColorsList->find(idx);
- if (it == mColorsList->end())
- {
- reportAlways("Color %d for palette %s not found",
- CAST_S32(idx),
- mColorsListName.c_str());
- return std::string();
- }
- return it->second.name;
-}
-
-std::string ItemInfo::getColor(const ItemColor idx) const
-{
- if (mColorsList == nullptr)
- return std::string();
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mColorsList->find(idx);
- if (it == mColorsList->end())
- {
- reportAlways("Color %d for palette %s not found",
- CAST_S32(idx),
- mColorsListName.c_str());
- return std::string();
- }
- return it->second.color;
-}
-
-std::string ItemInfo::getIconColorName(const ItemColor idx) const
-{
- if (mIconColorsList == nullptr)
- return std::string();
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mIconColorsList->find(idx);
- if (it == mIconColorsList->end())
- {
- reportAlways("Color %d for palette %s not found",
- CAST_S32(idx),
- mColorsListName.c_str());
- return std::string();
- }
- return it->second.name;
-}
-
-std::string ItemInfo::getIconColor(const ItemColor idx) const
-{
- if (mIconColorsList == nullptr)
- return std::string();
-
- const std::map <ItemColor, ItemColorData>::const_iterator
- it = mIconColorsList->find(idx);
- if (it == mIconColorsList->end())
- {
- reportAlways("Color %d for palette %s not found",
- CAST_S32(idx),
- mColorsListName.c_str());
- return std::string();
- }
- return it->second.color;
-}
-
-const std::string ItemInfo::getLink() const
-{
- return strprintf("[@@%d|%s@@]", mId, mName.c_str());
-}