TrinityCore
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#include <array>
25
27{
30};
31
32typedef std::vector<ItemToSell> ItemsToSellArray;
33typedef std::array<std::array<uint32, MAX_ITEM_CLASS>, MAX_ITEM_QUALITY> AllItemsArray;
34
36{
39};
40
42{
45};
46
48{
51};
52
54{
55public:
57
59 {
60 _houseType = houseType;
61 }
62
64
66
67 void SetMinTime(uint32 value)
68 {
69 _minTime = value;
70 }
72 {
73 return std::min(1u, std::min(_minTime, _maxTime));
74 }
75
76 void SetMaxTime(uint32 value) { _maxTime = value; }
77 uint32 GetMaxTime() const { return _maxTime; }
78
79 // Data access classified by item class and item quality
80 void SetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass, uint32 amount) { _itemInfo[quality][itemClass].AmountOfItems = amount; }
81 uint32 GetItemsAmountPerClass(AuctionQuality quality, ItemClass itemClass) const { return _itemInfo[quality][itemClass].AmountOfItems; }
82
83 void SetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass, uint32 found)
84 {
85 if (_itemInfo[quality][itemClass].AmountOfItems > found)
86 _itemInfo[quality][itemClass].MissItems = _itemInfo[quality][itemClass].AmountOfItems - found;
87 else
88 _itemInfo[quality][itemClass].MissItems = 0;
89 }
90 uint32 GetMissedItemsPerClass(AuctionQuality quality, ItemClass itemClass) const { return _itemInfo[quality][itemClass].MissItems; }
91
92 // Data for every quality of item
95
98
99 // data for every class of item
100 void SetPriceRatioPerClass(ItemClass itemClass, uint32 value) { _itemSharedClassInfo[itemClass].PriceRatio = value; }
102
105
106private:
110
112
115};
116
117// This class handle all Selling method
118// (holder of AHB_Seller_Config data for each auction house type)
120{
121public:
122 typedef std::vector<uint32> ItemPool;
123
126
127 bool Initialize() override;
128 bool Update(AuctionHouseType houseType) override;
129
130 void AddNewAuctions(SellerConfiguration& config);
131 void SetItemsRatio(uint32 al, uint32 ho, uint32 ne);
132 void SetItemsRatioForHouse(AuctionHouseType house, uint32 val);
133 void SetItemsAmount(std::array<uint32, MAX_AUCTION_QUALITY> const& amounts);
134 void SetItemsAmountForQuality(AuctionQuality quality, uint32 val);
135 void LoadConfig();
136
137private:
139
141
142 void LoadSellerValues(SellerConfiguration& config);
143 uint32 SetStat(SellerConfiguration& config);
144 bool GetItemsToSell(SellerConfiguration& config, ItemsToSellArray& itemsToSellArray, AllItemsArray const& addedItem);
145 void SetPricesOfItem(ItemTemplate const* itemProto, SellerConfiguration& config, uint32& buyout, uint32& bid, uint32 stackcnt);
146 uint32 GetStackSizeForItem(ItemTemplate const* itemProto, SellerConfiguration& config) const;
147 void LoadItemsQuantity(SellerConfiguration& config);
148 static uint32 GetBuyModifier(ItemTemplate const* prototype);
149 static uint32 GetSellModifier(ItemTemplate const* itemProto);
150};
151
152#endif
std::vector< ItemToSell > ItemsToSellArray
std::array< std::array< uint32, MAX_ITEM_CLASS >, MAX_ITEM_QUALITY > AllItemsArray
#define MAX_AUCTION_QUALITY
AuctionQuality
#define MAX_AUCTION_HOUSE_TYPE
AuctionHouseType
@ AUCTION_HOUSE_NEUTRAL
#define TC_GAME_API
Definition: Define.h:123
uint32_t uint32
Definition: Define.h:142
ItemClass
Definition: ItemTemplate.h:419
#define MAX_ITEM_CLASS
Definition: ItemTemplate.h:442
@ 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]
AuctionHouseType _houseType
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)