diff options
| author | Gigi1237 <luigi.sciolla@gmail.com> | 2015-08-22 20:29:17 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-04-11 18:22:09 +0200 |
| commit | c19172cad9a3302b7f5c8d5ca1d96de9a7311847 (patch) | |
| tree | 674d46c12b63b15a726909093f082aaa58128f7b /src/server/game/Server/Packets | |
| parent | 116c8070769b32b67400b4506a2e5b999764185a (diff) | |
Core/Blackmarket: Implemented black market
Diffstat (limited to 'src/server/game/Server/Packets')
| -rw-r--r-- | src/server/game/Server/Packets/AllPackets.h | 1 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/BlackMarketPackets.cpp | 114 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/BlackMarketPackets.h | 93 |
3 files changed, 207 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index 0d6d28446bc..2c2aa528bb1 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -22,6 +22,7 @@ #include "AuctionHousePackets.h" #include "AuthenticationPackets.h" #include "BankPackets.h" +#include "BlackMarketPackets.h" #include "BattlefieldPackets.h" #include "BattlegroundPackets.h" #include "BattlenetPackets.h" diff --git a/src/server/game/Server/Packets/BlackMarketPackets.cpp b/src/server/game/Server/Packets/BlackMarketPackets.cpp index d67f778a0b7..fb1098941b6 100644 --- a/src/server/game/Server/Packets/BlackMarketPackets.cpp +++ b/src/server/game/Server/Packets/BlackMarketPackets.cpp @@ -16,6 +16,35 @@ */ #include "BlackMarketPackets.h" +#include "BlackMarketMgr.h" +#include "Player.h" + +void WorldPackets::BlackMarket::BlackMarketItem::Initialize(BlackMarketEntry *const entry, Player* player) +{ + BlackMarketTemplate const* templ = entry->GetTemplate(); + + MarketID = entry->GetMarketId(); + SellerNPC = templ->SellerNPC; + Item = templ->Item; + Quantity = templ->Quantity; + + // No bids yet + if (!entry->GetNumBids()) + { + MinBid = templ->MinBid; + MinIncrement = 1; + } + else + { + MinIncrement = entry->GetMinIncrement(); // 5% increment minimum + MinBid = entry->GetCurrentBid() + MinIncrement; + } + + CurrentBid = entry->GetCurrentBid(); + SecondsRemaining = entry->GetSecondsRemaining(); + HighBid = (entry->GetBidder() == player->GetGUID().GetCounter()); + NumBids = entry->GetNumBids(); +} void WorldPackets::BlackMarket::BlackMarketOpen::Read() { @@ -30,3 +59,88 @@ WorldPacket const* WorldPackets::BlackMarket::BlackMarketOpenResult::Write() return &_worldPacket; } + +void WorldPackets::BlackMarket::BlackMarketRequestItems::Read() +{ + _worldPacket >> Guid; + _worldPacket >> uint32(LastUpdateID); +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::BlackMarket::BlackMarketItem const& blackMarketItem) +{ + data << int32(blackMarketItem.MarketID); + data << int32(blackMarketItem.SellerNPC); + data << blackMarketItem.Item; + data << int32(blackMarketItem.Quantity); + data << uint64(blackMarketItem.MinBid); + data << uint64(blackMarketItem.MinIncrement); + data << uint64(blackMarketItem.CurrentBid); + data << int32(blackMarketItem.SecondsRemaining); + data << int32(blackMarketItem.NumBids); + data.WriteBit(blackMarketItem.HighBid); + data.FlushBits(); + + return data; +} + +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::BlackMarket::BlackMarketItem& blackMarketItem) +{ + data >> blackMarketItem.MarketID; + data >> blackMarketItem.SellerNPC; + data >> blackMarketItem.Item; + data >> blackMarketItem.Quantity; + data >> blackMarketItem.MinBid; + data >> blackMarketItem.MinIncrement; + data >> blackMarketItem.CurrentBid; + data >> blackMarketItem.SecondsRemaining; + data >> blackMarketItem.NumBids; + blackMarketItem.HighBid = data.ReadBit(); + + return data; +} + +WorldPacket const* WorldPackets::BlackMarket::BlackMarketRequestItemsResult::Write() +{ + _worldPacket << uint32(LastUpdateID); + _worldPacket << uint32(Items.size()); + + for (BlackMarketItem const& item : Items) + _worldPacket << item; + + return &_worldPacket; +} + +void WorldPackets::BlackMarket::BlackMarketBidOnItem::Read() +{ + _worldPacket >> Guid; + _worldPacket >> MarketID; + _worldPacket >> Item; + _worldPacket >> BidAmount; +} + +WorldPacket const* WorldPackets::BlackMarket::BlackMarketBidOnItemResult::Write() +{ + _worldPacket << int32(MarketID); + _worldPacket << Item; + _worldPacket << int32(Result); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::BlackMarket::BlackMarketOutbid::Write() +{ + _worldPacket << int32(MarketID); + _worldPacket << Item; + _worldPacket << int32(RandomPropertiesID); + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::BlackMarket::BlackMarketWon::Write() +{ + _worldPacket << int32(MarketID); + _worldPacket << Item; + _worldPacket << int32(RandomPropertiesID); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/BlackMarketPackets.h b/src/server/game/Server/Packets/BlackMarketPackets.h index 0fb6280811d..1193a9f0147 100644 --- a/src/server/game/Server/Packets/BlackMarketPackets.h +++ b/src/server/game/Server/Packets/BlackMarketPackets.h @@ -20,12 +20,31 @@ #include "Packet.h" #include "ObjectGuid.h" -#include "WorldSession.h" +#include "ItemPackets.h" + +class Player; +class BlackMarketEntry; namespace WorldPackets { namespace BlackMarket { + struct BlackMarketItem + { + void Initialize(BlackMarketEntry *const entry, Player* player); + + int32 MarketID = 0; + int32 SellerNPC = 0; + Item::ItemInstance Item; + int32 Quantity = 0; + uint64 MinBid = 0; + uint64 MinIncrement = 0; + uint64 CurrentBid = 0; + int32 SecondsRemaining = 0; + int32 NumBids = 0; + bool HighBid = false; + }; + class BlackMarketOpen final : public ClientPacket { public: @@ -46,6 +65,78 @@ namespace WorldPackets ObjectGuid Guid; bool Enable = true; }; + + class BlackMarketRequestItems final : public ClientPacket + { + public: + BlackMarketRequestItems(WorldPacket&& packet) : ClientPacket(CMSG_BLACK_MARKET_REQUEST_ITEMS, std::move(packet)) { } + + void Read() override; + + ObjectGuid Guid; + uint32 LastUpdateID = 0; + }; + + class BlackMarketRequestItemsResult final : public ServerPacket + { + public: + BlackMarketRequestItemsResult() : ServerPacket(SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, 4) { } + + WorldPacket const* Write() override; + + uint32 LastUpdateID = 0; + std::vector<BlackMarketItem> Items; + }; + + class BlackMarketBidOnItem final : public ClientPacket + { + public: + BlackMarketBidOnItem(WorldPacket&& packet) : ClientPacket(CMSG_BLACK_MARKET_BID_ON_ITEM, std::move(packet)) { } + + void Read() override; + + ObjectGuid Guid; + int32 MarketID = 0; + Item::ItemInstance Item; + uint64 BidAmount = 0; + }; + + class BlackMarketBidOnItemResult final : public ServerPacket + { + public: + BlackMarketBidOnItemResult() : ServerPacket(SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT, 4 + 76 + 4) { } + + WorldPacket const* Write() override; + + int32 MarketID = 0; + Item::ItemInstance Item; + int32 Result = 0; + }; + + class BlackMarketOutbid final : public ServerPacket + { + public: + BlackMarketOutbid() : ServerPacket(SMSG_BLACK_MARKET_OUTBID, 4 + 76 + 4) { } + + WorldPacket const* Write() override; + + int32 MarketID = 0; + Item::ItemInstance Item; + int32 RandomPropertiesID; + }; + + class BlackMarketWon final : public ServerPacket + { + public: + BlackMarketWon() : ServerPacket(SMSG_BLACK_MARKET_WON, 4 + 76 + 4) { } + + WorldPacket const* Write() override; + + int32 MarketID = 0; + Item::ItemInstance Item; + int32 RandomPropertiesID; + }; } } + #endif // BlackMarketPackets_h__ |
