From c177cdec188bc879dd0750629d5230afc4621f17 Mon Sep 17 00:00:00 2001 From: Xruptor Date: Wed, 24 Aug 2016 09:49:53 -0400 Subject: [PATCH] Some more Cleanup --- BagSync.lua | 236 ++++++++++++++++++++----------------------------------- locale/koKR.lua | 12 +-- 2 files changed, 88 insertions(+), 160 deletions(-) diff --git a/BagSync.lua b/BagSync.lua index 3d82e00..e1ababb 100644 --- a/BagSync.lua +++ b/BagSync.lua @@ -436,7 +436,7 @@ end ---------------------- function BSYC:SaveBag(bagname, bagid) - if not bagname or not bagid then return nil end + if not bagname or not bagid then return end self.db.player[bagname] = self.db.player[bagname] or {} --reset our tooltip data since we scanned new items (we want current data not old) @@ -500,30 +500,30 @@ function BSYC:ScanEntireBank() end function BSYC:ScanVoidBank() + --for some reason blizzard pushes out events for void storage even after you close the window, to prevent this check for the frame + if not VoidStorageFrame or not VoidStorageFrame:IsVisible() then return end + self.db.player["void"] = self.db.player["void"] or {} - - if VoidStorageFrame and VoidStorageFrame:IsShown() then + self:Debug("void scanned") + --reset our tooltip data since we scanned new items (we want current data not old) + self.PreviousItemLink = nil + self.PreviousItemTotals = {} - --reset our tooltip data since we scanned new items (we want current data not old) - self.PreviousItemLink = nil - self.PreviousItemTotals = {} + local numTabs = 2 + local index = 0 + local slotItems = {} - local numTabs = 2 - local index = 0 - local slotItems = {} - - for tab = 1, numTabs do - for i = 1, 80 do - local itemID, textureName, locked, recentDeposit, isFiltered = GetVoidItemInfo(tab, i) - if (itemID) then - index = index + 1 - slotItems[index] = itemID and tostring(itemID) or nil - end + for tab = 1, numTabs do + for i = 1, 80 do + local itemID, textureName, locked, recentDeposit, isFiltered = GetVoidItemInfo(tab, i) + if (itemID) then + index = index + 1 + slotItems[index] = itemID and tostring(itemID) or nil end end - - self.db.player["void"][0] = slotItems end + + self.db.player["void"][0] = slotItems end function BSYC:ScanGuildBank() @@ -792,101 +792,38 @@ function BSYC:ResetTooltip() end function BSYC:CreateItemTotals(countTable) - local info + local info = "" local total = 0 - - if countTable["bag"] > 0 then - info = L["Bags: %d"]:format(countTable["bag"]) - total = total + countTable["bag"] - end - - if countTable["bank"] > 0 then - local count = L["Bank: %d"]:format(countTable["bank"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["bank"] - end - - if countTable["reagentbank"] > 0 then - local count = L["Reagent: %d"]:format(countTable["reagentbank"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["reagentbank"] - end - - if countTable["equip"] > 0 then - local count = L["Equip: %d"]:format(countTable["equip"]) - if info then - info = strjoin(", ", info, count) - else - info = count + local grouped = 0 + + --order in which we want stuff displayed + local list = { + [1] = { "bag", L["Bags: %d"] }, + [2] = { "bank", L["Bank: %d"] }, + [3] = { "reagentbank", L["Reagent: %d"] }, + [4] = { "equip", L["Equip: %d"] }, + [5] = { "guild", L["Guild: %d"] }, + [6] = { "mailbox", L["Mail: %d"] }, + [7] = { "void", L["Void: %d"] }, + [8] = { "auction", L["AH: %d"] }, + } + + for i = 1, #list do + local count = countTable[list[i][1]] + if count > 0 then + info = info..", "..list[i][2]:format(count) + total = total + count + grouped = grouped + 1 end - total = total + countTable["equip"] end - if countTable["guild"] > 0 and self.options.enableGuild and not self.options.showGuildNames then - local count = L["Guild: %d"]:format(countTable["guild"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["guild"] --add the guild count only if we don't have showguildnames on, otherwise it's counted twice - end - - if countTable["mailbox"] > 0 and self.options.enableMailbox then - local count = L["Mail: %d"]:format(countTable["mailbox"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["mailbox"] - end - - if countTable["void"] > 0 then - local count = L["Void: %d"]:format(countTable["void"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["void"] - end - - if countTable["auction"] > 0 and self.options.enableAuction then - local count = L["AH: %d"]:format(countTable["auction"]) - if info then - info = strjoin(", ", info, count) - else - info = count - end - total = total + countTable["auction"] + if grouped > 0 then + local totalStr = tooltipColor(self.options.colors.first, total) + return totalStr .. tooltipColor(self.options.colors.second, format(" (%s)", info)) + else + return tooltipColor(self.options.colors.first, info) end - if info and info ~= "" then - --check to see if we show multiple items or just a single one per character - local totalPass = false - for q, v in pairs(countTable) do - if v == total then - totalPass = true - break - end - end - - if not totalPass then - local totalStr = tooltipColor(self.options.colors.first, total) - return totalStr .. tooltipColor(self.options.colors.second, format(" (%s)", info)) - else - return tooltipColor(self.options.colors.first, info) - end - end end function BSYC:GetClassColor(sName, sClass) @@ -900,7 +837,8 @@ function BSYC:GetClassColor(sName, sClass) return tooltipColor(self.options.colors.first, sName) end -function BSYC:AddCurrencyToTooltip(frame, currencyName) +function BSYC:AddTokenTooltip(frame, currencyName) + if not BagSyncOpt.enableTooltips then return end if currencyName and self.db.token[self.currentRealm][currencyName] then if self.options.enableTooltipSeperator then frame:AddLine(" ") @@ -915,7 +853,8 @@ function BSYC:AddCurrencyToTooltip(frame, currencyName) end function BSYC:AddItemToTooltip(frame, link) --workaround - + if not BagSyncOpt.enableTooltips then return end + --if we can't convert the item link then lets just ignore it altogether local itemLink = ToShortLink(link) if not itemLink then @@ -1094,7 +1033,7 @@ function BSYC:HookTooltip(tooltip) end) tooltip:HookScript("OnTooltipSetItem", function(self) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end local name, link = self:GetItem() if link and ToShortLink(link) then self.isModified = true @@ -1119,28 +1058,25 @@ function BSYC:HookTooltip(tooltip) --------------------------------- --Special thanks to GetItem() being broken we need to capture the ItemLink before the tooltip shows sometimes hooksecurefunc(tooltip, "SetBagItem", function(self, tab, slot) - if not BagSyncOpt.enableTooltips then return end local link = GetContainerItemLink(tab, slot) if link and ToShortLink(link) then self.lastHyperLink = link end end) hooksecurefunc(tooltip, "SetInventoryItem", function(self, tab, slot) - if not BagSyncOpt.enableTooltips then return end local link = GetInventoryItemLink(tab, slot) if link and ToShortLink(link) then self.lastHyperLink = link end end) hooksecurefunc(tooltip, "SetGuildBankItem", function(self, tab, slot) - if not BagSyncOpt.enableTooltips then return end local link = GetGuildBankItemLink(tab, slot) if link and ToShortLink(link) then self.lastHyperLink = link end end) hooksecurefunc(tooltip, "SetHyperlink", function(self, link) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end if link and ToShortLink(link) then --I'm pretty sure there is a better way to do this but since Recipes fire OnTooltipSetItem with empty/nil GetItem(). There is really no way to my knowledge to grab the current itemID --without storing the ItemLink from the bag parsing or at least grabbing the current SetHyperLink. @@ -1153,7 +1089,7 @@ function BSYC:HookTooltip(tooltip) --lets hook other frames so we can show tooltips there as well hooksecurefunc(tooltip, "SetRecipeReagentItem", function(self, recipeID, reagentIndex) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end local link = C_TradeSkillUI.GetRecipeReagentItemLink(recipeID, reagentIndex) if link and ToShortLink(link) then self.isModified = true @@ -1161,7 +1097,7 @@ function BSYC:HookTooltip(tooltip) end end) hooksecurefunc(tooltip, "SetRecipeResultItem", function(self, recipeID) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end local link = C_TradeSkillUI.GetRecipeItemLink(recipeID) if link and ToShortLink(link) then self.isModified = true @@ -1169,7 +1105,7 @@ function BSYC:HookTooltip(tooltip) end end) hooksecurefunc(tooltip, "SetQuestLogItem", function(self, itemType, index) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end local link = GetQuestLogItemLink(itemType, index) if link and ToShortLink(link) then self.isModified = true @@ -1177,7 +1113,7 @@ function BSYC:HookTooltip(tooltip) end end) hooksecurefunc(tooltip, "SetQuestItem", function(self, itemType, index) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end local link = GetQuestItemLink(itemType, index) if link and ToShortLink(link) then self.isModified = true @@ -1194,28 +1130,28 @@ function BSYC:HookTooltip(tooltip) -------------------------------------------------- hooksecurefunc(tooltip, "SetCurrencyToken", function(self, index) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end self.isModified = true local currencyName = GetCurrencyListInfo(index) - BSYC:AddCurrencyToTooltip(self, currencyName) + BSYC:AddTokenTooltip(self, currencyName) end) hooksecurefunc(tooltip, "SetCurrencyByID", function(self, id) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end self.isModified = true local currencyName = GetCurrencyInfo(id) - BSYC:AddCurrencyToTooltip(self, currencyName) + BSYC:AddTokenTooltip(self, currencyName) end) hooksecurefunc(tooltip, "SetBackpackToken", function(self, index) - if self.isModified or not BagSyncOpt.enableTooltips then return end + if self.isModified then return end self.isModified = true local currencyName = GetBackpackCurrencyInfo(index) - BSYC:AddCurrencyToTooltip(self, currencyName) + BSYC:AddTokenTooltip(self, currencyName) end) -- hooksecurefunc(tooltip, 'SetTradeSkillReagentInfo', function(self, index) - -- if self.isModified or not BagSyncOpt.enableTooltips then return end + -- if self.isModified then return end -- self.isModified = true -- local currencyName = GetTradeSkillReagentInfo(index,1) - -- BSYC:AddCurrencyToTooltip(self, currencyName) + -- BSYC:AddTokenTooltip(self, currencyName) -- end) end @@ -1611,10 +1547,10 @@ end -- PROFESSION -- ------------------------------ -function BSYC:doRegularTradeSkill(numIndex, dbIdx) +function BSYC:doRegularTradeSkill(numIndex, dbPlayer, dbIdx) local name, icon, skillLevel, maxSkillLevel, numAbilities, spelloffset, skillLine, skillModifier = GetProfessionInfo(numIndex) if name and skillLevel then - self.db.profession[self.currentRealm][self.currentPlayer][dbIdx] = format("%s,%s", name, skillLevel) + dbPlayer[dbIdx] = format("%s,%s", name, skillLevel) end end @@ -1635,62 +1571,64 @@ function BSYC:TRADE_SKILL_SHOW() ["Interface\\Icons\\INV_Pick_02"] = true, --this is Mining } + local dbPlayer = self.db.profession[self.currentRealm][self.currentPlayer] + --prof1 if prof1 and (GetProfessionInfo(prof1) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then local skill = select(3, GetProfessionInfo(prof1)) - self.db.profession[self.currentRealm][self.currentPlayer][1] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } + dbPlayer[1] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } elseif prof1 and iconProf1 and noLinkTS[iconProf1] then --only store if it's herbalism, skinning, or mining - self:doRegularTradeSkill(prof1, 1) - elseif not prof1 and self.db.profession[self.currentRealm][self.currentPlayer][1] then + self:doRegularTradeSkill(prof1, dbPlayer, 1) + elseif not prof1 and dbPlayer[1] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][1] = nil + dbPlayer[1] = nil end --prof2 if prof2 and (GetProfessionInfo(prof2) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then local skill = select(3, GetProfessionInfo(prof2)) - self.db.profession[self.currentRealm][self.currentPlayer][2] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } + dbPlayer[2] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } elseif prof2 and iconProf2 and noLinkTS[iconProf2] then --only store if it's herbalism, skinning, or mining - self:doRegularTradeSkill(prof2, 2) - elseif not prof2 and self.db.profession[self.currentRealm][self.currentPlayer][2] then + self:doRegularTradeSkill(prof2, dbPlayer, 2) + elseif not prof2 and dbPlayer[2] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][2] = nil + dbPlayer[2] = nil end --archaeology if archaeology then - self:doRegularTradeSkill(archaeology, 3) - elseif not archaeology and self.db.profession[self.currentRealm][self.currentPlayer][3] then + self:doRegularTradeSkill(archaeology, dbPlayer, 3) + elseif not archaeology and dbPlayer[3] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][3] = nil + dbPlayer[3] = nil end --fishing if fishing then - self:doRegularTradeSkill(fishing, 4) - elseif not fishing and self.db.profession[self.currentRealm][self.currentPlayer][4] then + self:doRegularTradeSkill(fishing, dbPlayer, 4) + elseif not fishing and dbPlayer[4] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][4] = nil + dbPlayer[4] = nil end --cooking if cooking and (GetProfessionInfo(cooking) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then local skill = select(3, GetProfessionInfo(cooking)) - self.db.profession[self.currentRealm][self.currentPlayer][5] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } - elseif not cooking and self.db.profession[self.currentRealm][self.currentPlayer][5] then + dbPlayer[5] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } + elseif not cooking and dbPlayer[5] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][5] = nil + dbPlayer[5] = nil end --firstAid if firstAid and (GetProfessionInfo(firstAid) == tradename) and C_TradeSkillUI.GetTradeSkillListLink() then local skill = select(3, GetProfessionInfo(firstAid)) - self.db.profession[self.currentRealm][self.currentPlayer][6] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } - elseif not firstAid and self.db.profession[self.currentRealm][self.currentPlayer][6] then + dbPlayer[6] = { tradename, C_TradeSkillUI.GetTradeSkillListLink(), skill } + elseif not firstAid and dbPlayer[6] then --they removed a profession - self.db.profession[self.currentRealm][self.currentPlayer][6] = nil + dbPlayer[6] = nil end end diff --git a/locale/koKR.lua b/locale/koKR.lua index a6893c1..4e6bd6f 100644 --- a/locale/koKR.lua +++ b/locale/koKR.lua @@ -18,7 +18,6 @@ L["Professions"] = "전문기술" L["Blacklist"] = "차단목록" L["Gold"] = "골드" L["Close"] = "닫기" -L["FixDB"] = "FixDB" L["Config"] = "설정" L["Select a profile to delete.\nNOTE: This is irreversible!"] = "삭제할 프로필을 선택하세요.\nNOTE: 되돌릴수 없습니다!!!" L["Delete"] = "삭제" @@ -29,8 +28,6 @@ L["Toggle Profiles"] = "프로필 토글" L["Toggle Professions"] = "전문기술 토글" L["Toggle Blacklist"] = "차단목록 토글" L["A FixDB has been performed on BagSync! The database is now optimized!"] = "BagSync에 FixDB가 실행되었습니다! 데이터베이스가 최적화됩니다!" -L["ON"] = "ON" -L["OFF"] = "OFF" L["Left Click = Search Window"] = "클릭 = 검색창" L["Right Click = BagSync Menu"] = "오른쪽 클릭 = BagSync 메뉴" L["Left Click = Link to view tradeskill."] = "클릭 = 전문기술 링크하기" @@ -41,14 +38,7 @@ L["BagSync: Error user not found!"] = "BagSync: 오류 사용자를 찾을 수 L["Please enter an itemid. (Use Wowhead.com)"] = "아이템ID를 입력해주세요. (Wowhead.com 이용)" L["Add ItemID"] = "아이템ID 추가" L["Remove ItemID"] = "아이템ID 제거" -L["[itemname]"] = "[아이템이름]" -L["search"] = "search" -L["gold"] = "gold" -L["tokens"] = "tokens" -L["fixdb"] = "fixdb" -L["profiles"] = "profiles" -L["professions"] = "professions" -L["blacklist"] = "blacklist" +L["[itemname]"] = "[아이템이름]" L["/bgs [itemname] - Does a quick search for an item"] = "/bgs [아이템이름] - 빠른 아이템 찾기" L["/bgs search - Opens the search window"] = "/bgs search - 검색창 열기" L["/bgs gold - Displays a tooltip with the amount of gold on each character."] = "/bgs gold - 툴팁에 각 케릭터의 골드량을 표시합니다." -- 1.7.9.5