#pragma once #include "../common/types.h" #include class Item; class Entity; struct TradeItemInfo { Item* item; int32 quantity; }; class Trade { public: Trade(Entity* trader1, Entity* trader2); ~Trade(); int8 AddItemToTrade(Entity* character, Item* item, int8 quantity, int8 slot); void RemoveItemFromTrade(Entity* character, int8 slot); void AddCoinToTrade(Entity* character, int64 amount); void RemoveCoinFromTrade(Entity* character, int64 amount); Entity* GetTradee(Entity* character); bool SetTradeAccepted(Entity* character); bool HasAcceptedTrade(Entity* character); void CancelTrade(Entity* character); int8 CheckItem(Entity* trader, Item* item, bool other_is_bot); private: void Trader1ItemAdd(Item* item, int8 quantity, int8 slot); void Trader2ItemAdd(Item* item, int8 quantity, int8 slot); void CompleteTrade(); void OpenTradeWindow(); void SendTradePacket(); void CalculateCoins(int64 val, int32& plat, int32& gold, int32& silver, int32& copper); int8 GetNextFreeSlot(Entity* character); Entity* trader1; map trader1_items; int64 trader1_coins; bool trader1_accepted; Entity* trader2; map trader2_items; int64 trader2_coins; bool trader2_accepted; };