vanilla-wow-addons – Rev 1
?pathlinks?
--===========================================================================--
---------------------------- LootTracker by PNB ----------------------------
--===========================================================================--
-- LootTrackerPlayerDetailsUI.lua
--
-- Code behind the player details UI
--===========================================================================--
------------------------------------------------------------------------------
-- SetPlayer
------------------------------------------------------------------------------
function LT_SetPlayer(player)
LT_DebugMessage(2, string.format("Viewing player %s", player.Name));
LT_PlayerDetails:Show();
LT_ItemDetails:Hide();
LT_KillDetails:Hide();
LT_SettingsFrame:Hide();
local description = player.Name;
description = description .. string.format("\nLevel %d", player.Level);
description = description .. string.format("\n%s %s %s", player.Gender, player.Race, player.Class);
if (player.TimesKilled ~= nil) then
local deaths = getn(player.TimesKilled);
if (deaths == 1) then
description = description .. string.format("\n%d death", deaths);
else
description = description .. string.format("\n%d deaths", deaths);
end
end
LT_Player_DescriptionText:SetText(description);
local totalValue = 0;
local items = LT_GetItems();
foreach(player.Loot, function(k,v)
local item = items[k];
if (item.Value) then
totalValue = totalValue + (item.Value * v);
end
end);
local totalValueString = LT_GetValueString(totalValue, true);
LT_Player_ValueText:SetText(totalValueString);
LT_Player_GearList.Data = player;
LT_Player_LootList.Data = player;
LT_PlayerDetails.Data = player;
LT_UpdateGenericScroller(LT_Player_GearList);
LT_UpdateGenericScroller(LT_Player_LootList);
end
------------------------------------------------------------------------------
-- Player_Update
------------------------------------------------------------------------------
function LT_Player_Update()
local player = LT_PlayerDetails.Data;
LT_UpdatePlayer(player);
LT_UpdateGenericScroller(LT_Player_GearList);
end
------------------------------------------------------------------------------
-- Player_Loot_GetTotal
------------------------------------------------------------------------------
function LT_Player_Loot_GetTotal(scroller)
if (scroller.Data == nil) then
LT_DebugMessage(1, "No player: Unable to get Loot total");
return 0;
end
if (scroller.Data.Loot == nil) then
LT_DebugMessage(1, "No loot list: Unable to get Loot total");
return 0;
end
local uniqueCount = 0;
local totalCount = 0;
foreach(scroller.Data.Loot, function(k,v)
uniqueCount = uniqueCount + 1;
totalCount = totalCount + v;
end);
scroller.TotalCount = totalCount;
return uniqueCount;
end
------------------------------------------------------------------------------
-- Player_Loot_GetItemLabel
------------------------------------------------------------------------------
function LT_Player_Loot_GetItemLabel(scroller, index)
if (scroller.Data == nil) then
return "Unknown";
end
local label, data = LT_GetItemLabel(scroller, scroller.Data.Loot, index, LT_Player_Loot_GetItemLabelWorker);
return label, data;
end
------------------------------------------------------------------------------
-- Player_Loot_GetItemLabelWorker
------------------------------------------------------------------------------
function LT_Player_Loot_GetItemLabelWorker(scroller, k, v)
local items = LT_GetItems();
local item = items[k];
if (item == nil) then
return "Unknown", k;
end
local count = v;
local qualityColor = LT_QualityColors[tostring(item.Quality)];
local description = LT_ColorText(item.Name, qualityColor);
local valueString = "";
if (item.Value) then
valueString = "(" .. LT_GetValueString(item.Value, true) .. ")";
end
local label = string.format("%s: %d %s", description, count, valueString);
local data = k;
return label, data;
end
------------------------------------------------------------------------------
-- Player_Gear_GetTotal
------------------------------------------------------------------------------
function LT_Player_Gear_GetTotal(scroller)
if (scroller.Data == nil) then
LT_DebugMessage(1, "No player: Unable to get Gear total");
return 0;
end
if (scroller.Data.Gear == nil) then
LT_DebugMessage(1, "No gear list: Unable to get Gear total");
return 0;
end
local uniqueCount = 0;
local totalCount = 0;
foreach(scroller.Data.Gear, function(k,v)
uniqueCount = uniqueCount + 1;
end);
scroller.TotalCount = uniqueCount;
return uniqueCount;
end
------------------------------------------------------------------------------
-- Player_Gear_GetItemLabel
------------------------------------------------------------------------------
function LT_Player_Gear_GetItemLabel(scroller, index)
if (scroller.Data == nil) then
return "Unknown";
end
local label, data = LT_GetItemLabel(scroller, scroller.Data.Gear, index, LT_Player_Gear_GetItemLabelWorker);
return label, data;
end
------------------------------------------------------------------------------
-- Player_Gear_GetItemLabelWorker
------------------------------------------------------------------------------
function LT_Player_Gear_GetItemLabelWorker(scroller, k, v)
local item = v;
local qualityColor = LT_QualityColors[tostring(item.Quality)];
local description = LT_ColorText(item.Name, qualityColor);
return description, item.Name;
end
------------------------------------------------------------------------------
-- OnPlayerButtonClicked
------------------------------------------------------------------------------
function LT_OnPlayerButtonClicked(button)
local name = button.Data;
LT_DebugMessage(2, string.format("Clicked %s", name));
local players = LT_GetPlayers();
local player = players[name];
LT_SetPlayer(player);
end