diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-07-04 22:15:48 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-07-04 22:15:48 +0300 |
commit | 5c30a24b51538c8a0656977caeeced94277aa5b8 (patch) | |
tree | 574a680074cf5f69522b79ef48430d57b8be0787 /src/flooritem.cpp | |
parent | 146e9182d8c930e62fbcc281615b96c95319a5ea (diff) | |
download | plus-5c30a24b51538c8a0656977caeeced94277aa5b8.tar.gz plus-5c30a24b51538c8a0656977caeeced94277aa5b8.tar.bz2 plus-5c30a24b51538c8a0656977caeeced94277aa5b8.tar.xz plus-5c30a24b51538c8a0656977caeeced94277aa5b8.zip |
Add option to items.xml to set max floor item pixel offset.
Diffstat (limited to 'src/flooritem.cpp')
-rw-r--r-- | src/flooritem.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/flooritem.cpp b/src/flooritem.cpp index 0bb75fb1f..a6d45f788 100644 --- a/src/flooritem.cpp +++ b/src/flooritem.cpp @@ -53,10 +53,20 @@ FloorItem::FloorItem(int id, int itemId, int x, int y, Map *map, int amount, mHighlight(config.getBoolValue("floorItemsHighlight")) { setMap(map); + const ItemInfo &info = ItemDB::get(itemId); if (map) { - mPos.x = static_cast<float>(x * map->getTileWidth() + subX); - mPos.y = static_cast<float>(y * map->getTileHeight() + subY); + 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; + mPos.x = static_cast<float>(x * map->getTileWidth() + subX + 16 - 8); + mPos.y = static_cast<float>(y * map->getTileHeight() + subY + 32 - 8); } else { @@ -64,7 +74,6 @@ FloorItem::FloorItem(int id, int itemId, int x, int y, Map *map, int amount, mPos.y = 0; } - const ItemInfo &info = ItemDB::get(itemId); setupSpriteDisplay(info.getDisplay(), true, 1, info.getDyeColorsString(mColor)); mYDiff = 31; |