TrinityCore
Loading...
Searching...
No Matches
AuctionHouseBotSeller.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef AUCTION_HOUSE_BOT_SELLER_H
19#define AUCTION_HOUSE_BOT_SELLER_H
20
21#include "Define.h"
22#include "ItemTemplate.h"
23#include "AuctionHouseBot.h"
24
30
31typedef std::vector<ItemToSell> ItemsToSellArray;
32typedef std::vector<std::vector<uint32>> AllItemsArray;
33
39
45
51
53{
54public:
56
58 {
59 _houseType = houseType;
60 }
61
63
65
66 void SetMinTime(uint32 value)
67 {
68 _minTime = value;
69 }
71 {
72 return std::min(1u, std::min(_minTime, _maxTime));
73 }
74
75 void SetMaxTime(uint32 value) { _maxTime = value; }
76 uint32 GetMaxTime() const { return _maxTime; }
77
78 // Data access classified by item class and item quality
79 void SetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass, uint32 amount) { _itemInfo[quality][itemClass].AmountOfItems = amount; }
80 uint32 GetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass) const { return _itemInfo[quality][itemClass].AmountOfItems; }
81
82 void SetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass, uint32 found)
83 {
84 if (_itemInfo[quality][itemClass].AmountOfItems > found)
85 _itemInfo[quality][itemClass].MissItems = _itemInfo[quality][itemClass].AmountOfItems - found;
86 else
87 _itemInfo[quality][itemClass].MissItems = 0;
88 }
89 uint32 GetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass) const { return _itemInfo[quality][itemClass].MissItems; }
90
91 // Data for every quality of item
94
97
98 // data for every class of item
99 void SetPriceRatioPerClass(ItemClass itemClass, uint32 value) { _itemSharedClassInfo[itemClass].PriceRatio = value; }
101
104
105private:
109
111
114};
115
116// This class handle all Selling method
117// (holder of AHB_Seller_Config data for each auction house type)
119{
120public:
121 typedef std::vector<uint32> ItemPool;
122
125
126 bool Initialize() override;
127 bool Update(AuctionHouseType houseType) override;
128
129 void AddNewAuctions(SellerConfiguration& config);
130 void SetItemsRatio(uint32 al, uint32 ho, uint32 ne);
131 void SetItemsRatioForHouse(AuctionHouseType house, uint32 val);
132 void SetItemsAmount(std::array<uint32, MAX_AUCTION_QUALITY> const& amounts);
133 void SetItemsAmountForQuality(AuctionQuality quality, uint32 val);
134 void LoadConfig();
135
136private:
138
140
141 void LoadSellerValues(SellerConfiguration& config);
142 uint32 SetStat(SellerConfiguration& config);
143 bool GetItemsToSell(SellerConfiguration& config, ItemsToSellArray& itemsToSellArray, AllItemsArray const& addedItem);
144 void SetPricesOfItem(ItemTemplate const* itemProto, SellerConfiguration& config, uint32& buyp, uint32& bidp, uint32 stackcnt);
145 uint32 GetStackSizeForItem(ItemTemplate const* itemProto, SellerConfiguration& config) const;
146 void LoadItemsQuantity(SellerConfiguration& config);
147 static uint32 GetBuyModifier(ItemTemplate const* prototype);
148 static uint32 GetSellModifier(ItemTemplate const* itemProto);
149};
150
151#endif
std::vector< std::vector< uint32 > > AllItemsArray
std::vector< ItemToSell > ItemsToSellArray
#define MAX_AUCTION_QUALITY
AuctionQuality
#define MAX_AUCTION_HOUSE_TYPE
AuctionHouseType
@ AUCTION_HOUSE_NEUTRAL
#define TC_GAME_API
Definition Define.h:114
uint32_t uint32
Definition Define.h:133
ItemClass
#define MAX_ITEM_CLASS
@ MAX_ITEM_QUALITY
virtual bool Initialize()=0
virtual bool Update(AuctionHouseType houseType)=0
std::vector< uint32 > ItemPool
void SetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass, uint32 found)
SellerItemInfo _itemInfo[MAX_AUCTION_QUALITY][MAX_ITEM_CLASS]
void SetPriceRatioPerClass(ItemClass itemClass, uint32 value)
void SetMaxTime(uint32 value)
SellerItemClassSharedInfo _itemSharedClassInfo[MAX_ITEM_CLASS]
uint32 GetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass) const
void SetPriceRatioPerQuality(AuctionQuality quality, uint32 value)
uint32 GetRandomStackRatioPerClass(ItemClass itemClass) const
uint32 GetPriceRatioPerQuality(AuctionQuality quality) const
uint32 GetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass) const
void SetItemsAmountPerQuality(AuctionQuality quality, uint32 cnt)
void Initialize(AuctionHouseType houseType)
SellerItemQualitySharedInfo _itemSharedQualityInfo[MAX_ITEM_QUALITY]
uint32 GetPriceRatioPerClass(ItemClass itemClass) const
uint32 GetItemsAmountPerQuality(AuctionQuality quality) const
void SetMinTime(uint32 value)
void SetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass, uint32 amount)
AuctionHouseType GetHouseType() const
void SetRandomStackRatioPerClass(ItemClass itemClass, uint32 value)