From 565a015b5fb29b7f6c3696c38b4ce3ae3eb1b07c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 29 Dec 2015 02:26:07 +0300 Subject: Move flooritem into being directory. --- src/CMakeLists.txt | 4 +- src/Makefile.am | 4 +- src/actormanager.h | 2 +- src/being/flooritem.cpp | 199 +++++++++++++++++++++++++++++++++++++++++++++++ src/being/flooritem.h | 147 ++++++++++++++++++++++++++++++++++ src/flooritem.cpp | 199 ----------------------------------------------- src/flooritem.h | 147 ---------------------------------- src/itemsoundmanager.cpp | 2 +- src/net/playerhandler.h | 2 +- 9 files changed, 353 insertions(+), 353 deletions(-) create mode 100644 src/being/flooritem.cpp create mode 100644 src/being/flooritem.h delete mode 100644 src/flooritem.cpp delete mode 100644 src/flooritem.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b483657e9..7be36dfbb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -916,8 +916,8 @@ SET(SRCS equipment.h eventsmanager.cpp eventsmanager.h - flooritem.cpp - flooritem.h + being/flooritem.cpp + being/flooritem.h game.cpp game.h gamemodifiers.cpp diff --git a/src/Makefile.am b/src/Makefile.am index a555b0a06..eb342132e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -757,8 +757,8 @@ manaplus_SOURCES += main.cpp \ beingequipbackend.h \ resources/item/shopitem.cpp \ resources/item/shopitem.h \ - flooritem.cpp \ - flooritem.h \ + being/flooritem.cpp \ + being/flooritem.h \ game.cpp \ game.h \ gamemodifiers.cpp \ diff --git a/src/actormanager.h b/src/actormanager.h index 4a50e4571..9d9675bca 100644 --- a/src/actormanager.h +++ b/src/actormanager.h @@ -23,7 +23,7 @@ #ifndef ACTORMANAGER_H #define ACTORMANAGER_H -#include "flooritem.h" +#include "being/flooritem.h" #include "enums/simpletypes/allowsort.h" #include "enums/simpletypes/allplayers.h" diff --git a/src/being/flooritem.cpp b/src/being/flooritem.cpp new file mode 100644 index 000000000..5a6c00005 --- /dev/null +++ b/src/being/flooritem.cpp @@ -0,0 +1,199 @@ +/* + * 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 . + */ + +#include "being/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(mX * map->getTileWidth() + + subX + mapTileSize / 2 - 8); + mPos.y = static_cast(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") +} diff --git a/src/being/flooritem.h b/src/being/flooritem.h new file mode 100644 index 000000000..5e8d4effa --- /dev/null +++ b/src/being/flooritem.h @@ -0,0 +1,147 @@ +/* + * 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 . + */ + +#ifndef BEING_FLOORITEM_H +#define BEING_FLOORITEM_H + +#include "enums/simpletypes/damaged.h" +#include "enums/simpletypes/identified.h" +#include "enums/simpletypes/itemcolor.h" + +#include "being/actorsprite.h" + +#include "resources/cursor.h" + +class ItemInfo; + +/** + * An item lying on the floor. + */ +class FloorItem final : public ActorSprite +{ + public: + /** + * Constructor. + * + * @param id the unique ID of this item instance + * @param itemId the item ID + * @param x the x position in tiles + * @param y the y position in tiles + * @param amount the item amount + * @param color the item color + */ + 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); + + A_DELETE_COPY(FloorItem) + + void postInit(Map *const map, int subX, int subY); + + ActorTypeT getType() const override final A_WARN_UNUSED + { return ActorType::FloorItem; } + + void draw(Graphics *const graphics, + const int offsetX, const int offsetY) + const override final A_NONNULL(2); + + /** + * Returns the item ID. + */ + int getItemId() const A_WARN_UNUSED + { return mItemId; } + + /** + * Returns the item info for this floor item. Useful for adding an item + * link for the floor item to chat. + */ + const ItemInfo &getInfo() const A_WARN_UNUSED; + + std::string getName() const A_WARN_UNUSED; + + int getTileX() const override final A_WARN_UNUSED + { return mX; } + + int getTileY() const override final A_WARN_UNUSED + { return mY; } + + void incrementPickup() + { mPickupCount ++; } + + unsigned getPickupCount() const A_WARN_UNUSED + { return mPickupCount; } + + ItemColor getColor() const A_WARN_UNUSED + { return mColor; } + + bool getShowMsg() const A_WARN_UNUSED + { return mShowMsg; } + + void setShowMsg(const bool n) + { mShowMsg = n; } + + void disableHightlight() + { mHighlight = false; } + + Cursor::Cursor getHoverCursor() const A_WARN_UNUSED + { return mCursor; } + + void setCards(const int *const cards, int sz); + + int getRefine() const A_WARN_UNUSED + { return mRefine; } + + int getItemType() const A_WARN_UNUSED + { return mItemType; } + + Identified getIdentified() const A_WARN_UNUSED + { return mIdentified; } + + Damaged getDamaged() const A_WARN_UNUSED + { return mDamaged; } + + private: + int mCards[4]; + int mItemId; + int mX, mY; + int mDropTime; + int mAmount; + int mRefine; + int mHeightPosDiff; + int mItemType; + unsigned int mPickupCount; + Cursor::Cursor mCursor; + ItemColor mColor; + Identified mIdentified; + Damaged mDamaged; + bool mShowMsg; + bool mHighlight; +}; + +#endif // BEING_FLOORITEM_H 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 . - */ - -#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(mX * map->getTileWidth() - + subX + mapTileSize / 2 - 8); - mPos.y = static_cast(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") -} diff --git a/src/flooritem.h b/src/flooritem.h deleted file mode 100644 index 71ae94b6f..000000000 --- a/src/flooritem.h +++ /dev/null @@ -1,147 +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 . - */ - -#ifndef FLOORITEM_H -#define FLOORITEM_H - -#include "enums/simpletypes/damaged.h" -#include "enums/simpletypes/identified.h" -#include "enums/simpletypes/itemcolor.h" - -#include "being/actorsprite.h" - -#include "resources/cursor.h" - -class ItemInfo; - -/** - * An item lying on the floor. - */ -class FloorItem final : public ActorSprite -{ - public: - /** - * Constructor. - * - * @param id the unique ID of this item instance - * @param itemId the item ID - * @param x the x position in tiles - * @param y the y position in tiles - * @param amount the item amount - * @param color the item color - */ - 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); - - A_DELETE_COPY(FloorItem) - - void postInit(Map *const map, int subX, int subY); - - ActorTypeT getType() const override final A_WARN_UNUSED - { return ActorType::FloorItem; } - - void draw(Graphics *const graphics, - const int offsetX, const int offsetY) - const override final A_NONNULL(2); - - /** - * Returns the item ID. - */ - int getItemId() const A_WARN_UNUSED - { return mItemId; } - - /** - * Returns the item info for this floor item. Useful for adding an item - * link for the floor item to chat. - */ - const ItemInfo &getInfo() const A_WARN_UNUSED; - - std::string getName() const A_WARN_UNUSED; - - int getTileX() const override final A_WARN_UNUSED - { return mX; } - - int getTileY() const override final A_WARN_UNUSED - { return mY; } - - void incrementPickup() - { mPickupCount ++; } - - unsigned getPickupCount() const A_WARN_UNUSED - { return mPickupCount; } - - ItemColor getColor() const A_WARN_UNUSED - { return mColor; } - - bool getShowMsg() const A_WARN_UNUSED - { return mShowMsg; } - - void setShowMsg(const bool n) - { mShowMsg = n; } - - void disableHightlight() - { mHighlight = false; } - - Cursor::Cursor getHoverCursor() const A_WARN_UNUSED - { return mCursor; } - - void setCards(const int *const cards, int sz); - - int getRefine() const A_WARN_UNUSED - { return mRefine; } - - int getItemType() const A_WARN_UNUSED - { return mItemType; } - - Identified getIdentified() const A_WARN_UNUSED - { return mIdentified; } - - Damaged getDamaged() const A_WARN_UNUSED - { return mDamaged; } - - private: - int mCards[4]; - int mItemId; - int mX, mY; - int mDropTime; - int mAmount; - int mRefine; - int mHeightPosDiff; - int mItemType; - unsigned int mPickupCount; - Cursor::Cursor mCursor; - ItemColor mColor; - Identified mIdentified; - Damaged mDamaged; - bool mShowMsg; - bool mHighlight; -}; - -#endif // FLOORITEM_H diff --git a/src/itemsoundmanager.cpp b/src/itemsoundmanager.cpp index 6c3bb0a85..565a4d988 100644 --- a/src/itemsoundmanager.cpp +++ b/src/itemsoundmanager.cpp @@ -20,9 +20,9 @@ #include "itemsoundmanager.h" -#include "flooritem.h" #include "soundmanager.h" +#include "being/flooritem.h" #include "being/localplayer.h" #include "resources/iteminfo.h" diff --git a/src/net/playerhandler.h b/src/net/playerhandler.h index 21c06b8bb..6930a0d48 100644 --- a/src/net/playerhandler.h +++ b/src/net/playerhandler.h @@ -23,7 +23,7 @@ #ifndef NET_PLAYERHANDLER_H #define NET_PLAYERHANDLER_H -#include "flooritem.h" +#include "being/flooritem.h" #include "enums/being/attributes.h" #include "enums/being/beingaction.h" -- cgit v1.2.3-60-g2f50