diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-12-29 02:26:07 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-12-29 02:26:07 +0300 |
commit | 565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c (patch) | |
tree | 41171ba7879af0e746815dfcc8f237b1b3a6d8be /src/flooritem.cpp | |
parent | 75802940ea0f10c4ecce5ab55140c38a164ba574 (diff) | |
download | plus-565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c.tar.gz plus-565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c.tar.bz2 plus-565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c.tar.xz plus-565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c.zip |
Move flooritem into being directory.
Diffstat (limited to 'src/flooritem.cpp')
-rw-r--r-- | src/flooritem.cpp | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/src/flooritem.cpp b/src/flooritem.cpp deleted file mode 100644 index 49a64ff43..000000000 --- a/src/flooritem.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2015 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 "flooritem.h" - -#include "configuration.h" - -#include "render/graphics.h" - -#include "gui/gui.h" -#include "gui/userpalette.h" - -#include "gui/fonts/font.h" - -#include "resources/iteminfo.h" - -#include "resources/item/item.h" - -#include "resources/map/map.h" - -#include "net/serverfeatures.h" - -#include "debug.h" - -extern volatile int cur_time; - -FloorItem::FloorItem(const BeingId id, - const int itemId, - const int x, const int y, - const int itemType, - const int amount, - const int refine, - const ItemColor color, - const Identified identified, - const Damaged damaged, - const int *const cards) : - ActorSprite(id), - mCards(), - mItemId(itemId), - mX(x), - mY(y), - mDropTime(cur_time), - mAmount(amount), - mRefine(refine), - mHeightPosDiff(0), - mItemType(itemType), - mPickupCount(0), - mCursor(Cursor::CURSOR_PICKUP), - mColor(color), - mIdentified(identified), - mDamaged(damaged), - mShowMsg(true), - mHighlight(config.getBoolValue("floorItemsHighlight")) -{ - setCards(cards, maxCards); -} - -void FloorItem::postInit(Map *const map, int subX, int subY) -{ - setMap(map); - const ItemInfo &info = ItemDB::get(mItemId); - if (map) - { - const int max = info.getMaxFloorOffset(); - if (subX > max) - subX = max; - else if (subX < -max) - subX = -max; - if (subY > max) - subY = max; - else if (subY < -max) - subY = -max; - mHeightPosDiff = map->getHeightOffset(mX, mY) * 16; - mPos.x = static_cast<float>(mX * map->getTileWidth() - + subX + mapTileSize / 2 - 8); - mPos.y = static_cast<float>(mY * map->getTileHeight() - + subY + mapTileSize - 8 - mHeightPosDiff); - mYDiff = 31 - mHeightPosDiff; - } - else - { - mPos.x = 0; - mPos.y = 0; - mYDiff = 31; - } - - mCursor = info.getPickupCursor(); - setupSpriteDisplay(info.getDisplay(), - ForceDisplay_true, - 1, - info.getDyeIconColorsString(mColor)); -} - -void FloorItem::setCards(const int *const cards, - int sz) -{ - if (sz < 0 || !cards) - return; - if (sz > maxCards) - sz = maxCards; - for (int f = 0; f < sz; f ++) - mCards[f] = cards[f]; -} - -const ItemInfo &FloorItem::getInfo() const -{ - return ItemDB::get(mItemId); -} - -std::string FloorItem::getName() const -{ - const ItemInfo &info = ItemDB::get(mItemId); - if (serverFeatures->haveItemColors()) - return info.getName(mColor); - else - return info.getName(); -} - -void FloorItem::draw(Graphics *const graphics, - const int offsetX, const int offsetY) const -{ - if (!mMap) - return; - - BLOCK_START("FloorItem::draw") - const int x = mX * mMap->getTileWidth() + offsetX; - const int y = mY * mMap->getTileHeight() + offsetY - mHeightPosDiff; - Font *font = nullptr; - - if (mHighlight) - { - const int curTime = cur_time; - font = gui->getFont(); - if (mDropTime < curTime) - { - const int dx = mapTileSize; - const int dy = mapTileSize; - - if (curTime > mDropTime + 28 && curTime < mDropTime + 50) - { - graphics->setColor(Color(80, 200, 20, 200)); - graphics->fillRectangle(Rect( - x, y, dx, dy)); - } - else if (curTime > mDropTime + 19 - && curTime < mDropTime + 28) - { - graphics->setColor(Color(200, 80, 20, - 80 + 10 * (curTime - mDropTime - 18))); - graphics->fillRectangle(Rect( - x, y, dx, dy)); - } - else if (curTime > mDropTime && curTime < mDropTime + 20) - { - graphics->setColor(Color(20, 20, 255, - 7 * (curTime - mDropTime))); - graphics->fillRectangle(Rect(x, y, dx, dy)); - } - } - } - - const int px = getActorX() + offsetX; - const int py = getActorY() + offsetY; - ActorSprite::draw1(graphics, px, py); - CompoundSprite::draw(graphics, px, py); - - if (mHighlight) - { - if (font && mAmount > 1) - { - const Color &color = userPalette->getColor( - UserColorId::FLOOR_ITEM_TEXT); - font->drawString(graphics, - color, color, - toString(mAmount), - x, y); - } - } - BLOCK_END("FloorItem::draw") -} |