aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Loot/LootMgr.h
diff options
context:
space:
mode:
authorIntel <chemicstry@gmail.com>2014-12-30 02:23:37 +0200
committerIntel <chemicstry@gmail.com>2015-01-15 22:37:10 +0200
commitdc9ce43c4506431bf13a303b4508cf9504b4fb58 (patch)
tree90b2bf6e2e19223a49c07edcb86cc884765bc925 /src/server/game/Loot/LootMgr.h
parent8e95ca9c578d6f8eb1076c88abd5ae4d05c0e9ce (diff)
Core/Loot: Implemented SMSG_LOOT_RESPONSE, SMSG_LOOT_REMOVED, CMSG_AUTOSTORE_LOOT_ITEM
AoE looting is work in progress.
Diffstat (limited to 'src/server/game/Loot/LootMgr.h')
-rw-r--r--src/server/game/Loot/LootMgr.h66
1 files changed, 38 insertions, 28 deletions
diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h
index 3bd5fadc49d..e6f48b45c28 100644
--- a/src/server/game/Loot/LootMgr.h
+++ b/src/server/game/Loot/LootMgr.h
@@ -29,6 +29,19 @@
#include <vector>
#include <list>
+namespace WorldPackets
+{
+ namespace Loot
+ {
+ class LootResponse;
+ }
+
+ namespace Item
+ {
+ struct ItemInstance;
+ }
+}
+
enum RollType
{
ROLL_PASS = 0,
@@ -116,7 +129,7 @@ enum LootSlotType
LOOT_SLOT_TYPE_ROLL_ONGOING = 1, // roll is ongoing. player cannot loot.
LOOT_SLOT_TYPE_MASTER = 2, // item can only be distributed by group loot master.
LOOT_SLOT_TYPE_LOCKED = 3, // item is shown in red. player cannot loot.
- LOOT_SLOT_TYPE_OWNER = 4 // ignore binding confirmation and etc, for single player looting
+ LOOT_SLOT_TYPE_OWNER = 4 // ignore binding confirmation and etc, for single player looting (6.x no longer used)
};
class Player;
@@ -176,6 +189,8 @@ struct LootItem
bool AllowedForPlayer(Player const* player) const;
void AddAllowedLooter(Player const* player);
GuidSet const& GetAllowedLooters() const { return allowedGUIDs; }
+
+ void BuildItemInstance(WorldPackets::Item::ItemInstance& instance) const;
};
struct QuestItem
@@ -301,15 +316,9 @@ class LootValidatorRefManager : public RefManager<Loot, LootValidatorRef>
};
//=====================================================
-struct LootView;
-
-ByteBuffer& operator<<(ByteBuffer& b, LootItem const& li);
-ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv);
struct Loot
{
- friend ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv);
-
QuestItemMap const& GetPlayerQuestItems() const { return PlayerQuestItems; }
QuestItemMap const& GetPlayerFFAItems() const { return PlayerFFAItems; }
QuestItemMap const& GetPlayerNonQuestNonFFAConditionalItems() const { return PlayerNonQuestNonFFAConditionalItems; }
@@ -329,6 +338,9 @@ struct Loot
Loot(uint32 _gold = 0) : gold(_gold), unlootedCount(0), roundRobinPlayer(), loot_type(LOOT_CORPSE), maxDuplicates(1) { }
~Loot() { clear(); }
+ ObjectGuid const& GetGUID() const { return _GUID; }
+ void SetGUID(ObjectGuid const& guid) { _GUID = guid; }
+
// For deleting items at loot removal since there is no backward interface to the Item()
void DeleteLootItemFromContainerItemDB(uint32 itemID);
void DeleteLootMoneyFromContainerItemDB();
@@ -384,28 +396,26 @@ struct Loot
bool hasItemFor(Player* player) const;
bool hasOverThresholdItem() const;
- private:
- void FillNotNormalLootFor(Player* player, bool presentAtLooting);
- QuestItemList* FillFFALoot(Player* player);
- QuestItemList* FillQuestLoot(Player* player);
- QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player, bool presentAtLooting);
-
- GuidSet PlayersLooting;
- QuestItemMap PlayerQuestItems;
- QuestItemMap PlayerFFAItems;
- QuestItemMap PlayerNonQuestNonFFAConditionalItems;
-
- // All rolls are registered here. They need to know, when the loot is not valid anymore
- LootValidatorRefManager i_LootValidatorRefManager;
-};
+ // Builds data for SMSG_LOOT_RESPONSE
+ void BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* viewer, PermissionTypes permission = ALL_PERMISSION) const;
-struct LootView
-{
- Loot &loot;
- Player* viewer;
- PermissionTypes permission;
- LootView(Loot &_loot, Player* _viewer, PermissionTypes _permission = ALL_PERMISSION)
- : loot(_loot), viewer(_viewer), permission(_permission) { }
+private:
+
+ void FillNotNormalLootFor(Player* player, bool presentAtLooting);
+ QuestItemList* FillFFALoot(Player* player);
+ QuestItemList* FillQuestLoot(Player* player);
+ QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player, bool presentAtLooting);
+
+ GuidSet PlayersLooting;
+ QuestItemMap PlayerQuestItems;
+ QuestItemMap PlayerFFAItems;
+ QuestItemMap PlayerNonQuestNonFFAConditionalItems;
+
+ // All rolls are registered here. They need to know, when the loot is not valid anymore
+ LootValidatorRefManager i_LootValidatorRefManager;
+
+ // Loot GUID
+ ObjectGuid _GUID;
};
extern LootStore LootTemplates_Creature;