commit 545a997276473c5ca440701cc58fa87a6d043b93 Author: Robin Date: Wed Jan 13 16:20:09 2021 +0100 Init diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..34950ac --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Common"] + path = Common + url = https://git.grml.de/rilgamon/Common.git diff --git a/Common b/Common new file mode 160000 index 0000000..762c59c --- /dev/null +++ b/Common @@ -0,0 +1 @@ +Subproject commit 762c59c6c6abc6ecaa71f3e36bb2c6dd16b8e0ed diff --git a/core.lua b/core.lua new file mode 100644 index 0000000..7dc17cf --- /dev/null +++ b/core.lua @@ -0,0 +1,196 @@ +local name, addon = ... +local parentName = addon['parentName'] or "BrokerPack" +local childName = "zz_Repair" +local defaults = { + ["autorepair"] = true, + ["listall"] = true, +} +local options = { +} +local db + +local ldbicon = LibStub:GetLibrary("LibDBIcon-1.0") +local L = LibStub("AceLocale-3.0"):GetLocale(childName, true) + +local slotNames = { "HeadSlot","NeckSlot","ShoulderSlot","BackSlot","ChestSlot","ShirtSlot","TabardSlot", + "WristSlot","HandsSlot","WaistSlot","LegsSlot","FeetSlot","Finger0Slot","Finger1Slot", + "Trinket0Slot","Trinket1Slot","MainHandSlot","SecondaryHandSlot", + "Bag0Slot","Bag1Slot","Bag2Slot","Bag3Slot" +} + +local statusItem = {} +local player = UnitName('player') +local realm = GetRealmName() + +local function OnText(message) + addon:OnText(childName, message) +end + +local function pickColor(v) + local col = 'ffffff' + if(v > 90) then + col = '00ff00' -- grün + elseif(v > 40) then + col = 'ffff00' -- gelb + elseif(v > 0) then + col = 'ff9900' -- orange + else + col = 'ff0000' -- rot + end + return col +end + +local function OnDataUpdate() + local percent = 0 + local total = 0 + local cur = 0 + local lowest = 100 + wipe(statusItem) + for k,v in pairs(slotNames) do + local val, max = GetInventoryItemDurability(GetInventorySlotInfo(v)) + if(max) then + total = total + max + cur = cur + val + statusItem[v] = addon:round(val / (max/100),0) + if(statusItem[v] < lowest) then + lowest = statusItem[v] + end + end + end + + if(db['showlowest']) then + percent = lowest + else + percent = addon:round(cur / (total/100),0) + end + percent = addon:colorize(percent,pickColor(percent)) + OnText(percent.." %") +end + +local function getGBLimit() + local amount = GetGuildBankWithdrawMoney() + local guildBankMoney = GetGuildBankMoney() + if ( amount == -1 ) then + amount = guildBankMoney + else + amount = min(amount, guildBankMoney) + end + return amount +end + +local function MERCHANT_SHOW() + if(CanMerchantRepair()) then + local m = GetMoney() + local r = GetRepairAllCost() + local gbr = false + if(db['guildbankrepair']) then + if(CanGuildBankRepair()) then + gbr = true + end + end + if(r > 0 and (m > r or gbr) and db['autorepair']) then + if(gbr) then + if(getGBLimit() >= r) then + RepairAllItems(1) + addon:Print(L['repaircostgb'](r)) + else + if(m > r) then + RepairAllItems() + addon:Print(L['repaircost'](r)) + else + addon:Print(addon:colorize(L['Money low'],"ff0000")) + end + end + else + RepairAllItems() + addon:Print(L['repaircost'](r)) + end + db['repairstats'] = db['repairstats'] or {} + db['repairstats'][player] = db['repairstats'][player] or 0 + db['repairstats'][player] = db['repairstats'][player] + r + end + end +end + +local function OnClick(self, button) + if(IsShiftKeyDown() and button == "LeftButton") then + addon['db']['global']['ldbicons'][childName]['hide'] = not addon['db']['global']['ldbicons'][childName]['hide'] + if(ldbicon) then + if(addon['db']['global']['ldbicons'][childName]['hide']) then + ldbicon:Hide(childName) + else + ldbicon:Show(childName) + end + end + else + if(InterfaceOptionsFrame:IsVisible() and not InCombatLockdown()) then + InterfaceOptionsFrame:Hide() + else + InterfaceOptionsFrame_OpenToCategory(childName) + InterfaceOptionsFrame_OpenToCategory(childName) -- Twice because of a bug in InterfaceOptionsFrame_OpenToCategory + end + end +end + +local function OnTooltip(tip) + tip:AddLine(childName) + for k,v in pairs(statusItem) do + local stat = statusItem[k] + if(db['listall'] or stat < 100) then + stat = addon:colorize(stat,pickColor(stat)) + tip:AddDoubleLine(L[k], stat.." %") + end + end + tip:AddLine(" ") + tip:AddLine(L["Repair Charts"]) + local tmp = {} + if(addon['db']['sv']['profileKeys']) then + for k,v in pairs(addon['db']['sv']['profileKeys']) do + local n,_,m = strsplit(' ',k,3) + if(n) then + if(m == realm) then + if(db['repairstats'] and db['repairstats'][n] and db['repairstats'][n] > 0) then + tmp[n] = db['repairstats'][n] + end + end + end + end + end + for _,v in pairs(addon:sortArray(tmp,false)) do + tip:AddDoubleLine(addon:classcolor(v,db['classes'][v]), addon:buildMoneyString(db['repairstats'][v] or 0)) + end + tip:AddLine(" ") + tip:AddLine(L['HINT3']) +end + +local function getPref(info) + return db[info[#info]] +end + +local function setPref(info,value) + db[info[#info]] = value + OnDataUpdate() +end + +local function init() + realm = GetRealmName() + options = addon:InitConfig(childName, true, { + ['name'] = childName, + ['type'] = "data source", + ['OnClick'] = OnClick, + ['OnTooltipShow'] = OnTooltip, + }, getPref, setPref) + db = addon['db']['profile'][childName] + db['classes'] = db['classes'] or {} + local _, class, _ = UnitClass('player') + db['classes'][player] = class + db['repairstats'] = db['repairstats'] or {} + addon:AddConfigEntry(childName,"toggle","autorepair",L['Autorepair'],nil,1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","showlowest",L['Show lowest'],L['Show durability of your lowest item only'],1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","listall",L['Show all slots'],L['Show all slots in the tooltip instead of damaged only'],1,nil,nil,nil,nil,options['args'][childName]) + addon:AddConfigEntry(childName,"toggle","guildbankrepair",L['Allow Guildbank Repair'],nil,1,nil,nil,nil,nil,options['args'][childName]) + addon:RegisterFunc({'MERCHANT_SHOW'},"OnEvent", MERCHANT_SHOW) + addon:RegisterEventThrottle(childName,{"UPDATE_INVENTORY_DURABILITY","UPDATE_INVENTORY_ALERTS","UNIT_INVENTORY_CHANGED"}, 2, OnDataUpdate) + OnDataUpdate() +end +addon:startup(name, childName, init, true, defaults) diff --git a/icon2.tga b/icon2.tga new file mode 100644 index 0000000..42682c2 Binary files /dev/null and b/icon2.tga differ diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..b0c28cd --- /dev/null +++ b/license.txt @@ -0,0 +1,6 @@ +The following license excludes the libraries (Libs) included. See the libraries directory or website. + +This AddOn is public domain. That means you can change it, rename it or paint it yellow. +My name (Rilgamon) is valid only for WoWInterface.com and curse.com. +If you use/offer this addon on another website please remove my name. +If you want to give me credit you can replace it with a link to my profile on WoWInterface.com. \ No newline at end of file diff --git a/locale_deDE.lua b/locale_deDE.lua new file mode 100644 index 0000000..f6d64ea --- /dev/null +++ b/locale_deDE.lua @@ -0,0 +1,48 @@ +local addonname, addon = ... +local name = "zz_Repair" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "deDE", false) +if L then + L[name] = name + L[name..' Settings'] = name..' Einstellungen' + L['Autorepair'] = 'Automatisch reparieren' + L['Show lowest'] = 'Zeige Niedrigstes' + L['Show durability of your lowest item only'] = 'Zeigt die Haltbarkeit des niedrigsten Ausr\195\188stungsgegenstands statt dem Durchschnitt' + L['Show all slots'] = 'Zeige alle Slots' + L['Show all slots in the tooltip instead of damaged only'] ='Zeigt im Tooltip auch nicht besch\195\164digte Items' + L["HeadSlot"] = 'Kopf' + L["NeckSlot"] = 'Hals' + L["ShoulderSlot"] = 'Schulter' + L["BackSlot"] = 'R\195\188cken' + L["ChestSlot"] = 'Brust' + L["ShirtSlot"] = 'Hemd' + L["TabardSlot"] = 'Wappenrock' + L["WristSlot"] = 'Handgelenk' + L["HandsSlot"] = 'H\195\164nde' + L["WaistSlot"] = 'Taille' + L["LegsSlot"] = 'Beine' + L["FeetSlot"] = 'F\195\188\195\159e' + L["Finger0Slot"] = 'Erster Ring' + L["Finger1Slot"] = 'Zweiter Ring' + L["Trinket0Slot"] = 'Erstes Schmuckst\195\188ck' + L["Trinket1Slot"] = 'Zweites Schmuckst\195\188ck' + L["MainHandSlot"] = 'Waffenhand' + L["SecondaryHandSlot"] = 'Nebenhand' + L["RangedSlot"] = 'Fernkampf' + L["AmmoSlot"] = 'Munition' + L["Bag0Slot"] = 'Erste Tasche' + L["Bag1Slot"] = 'Zweite Tasche' + L["Bag2Slot"] = 'Dritte Tasche' + L["Bag3Slot"] = 'Vierte Tasche' + L['repaircost'] = function(r) return "Verschwendete Reparaturkosten: "..addon:buildMoneyString(r) end + L['repaircostgb'] = function(r) return "Verschwendete Reparaturkosten zu Lasten der Gildenbank: "..addon:buildMoneyString(r) end + L["Repair Charts"] = "Repair Charts" + L['Allow Guildbank Repair'] = "Repariere aus Gildenbank" + L['Money low'] = "Nicht genug Geld f\195\188r Reparatur!" + L['HINT3'] = "|c0000ff00Shift-Linksklick|r |c00ffffffschaltet Minimapicon an/aus|r" +end + +-- ö \195\182 ß \195\159 +-- ü \195\188 ä \195\164 +-- Ä \195\132 +-- ö \195\182 +-- Ü \195\156 \ No newline at end of file diff --git a/locale_enUS.lua b/locale_enUS.lua new file mode 100644 index 0000000..f4732cf --- /dev/null +++ b/locale_enUS.lua @@ -0,0 +1,42 @@ +local addonname, addon = ... +local name = "zz_Repair" +local L = LibStub("AceLocale-3.0"):NewLocale(name, "enUS", true) +if L then + L[name] = name + L[name..' Settings'] = name..' Settings' + L['Autorepair'] = 'Automatic repair' + L['Show lowest'] = 'Show lowest' + L['Show durability of your lowest item only'] = 'Show durability of your lowest item only' + L['Show all slots'] = 'Show all slots' + L['Show all slots in the tooltip instead of damaged only'] ='Show all slots in the tooltip instead of damaged only' + L["HeadSlot"] = 'Head' + L["NeckSlot"] = 'Neck' + L["ShoulderSlot"] = 'Shoulder' + L["BackSlot"] = 'Back' + L["ChestSlot"] = 'Chest' + L["ShirtSlot"] = 'Shirt' + L["TabardSlot"] = 'Tabard' + L["WristSlot"] = 'Wrist' + L["HandsSlot"] = 'Hands' + L["WaistSlot"] = 'Waist' + L["LegsSlot"] = 'Legs' + L["FeetSlot"] = 'Feet' + L["Finger0Slot"] = 'First Ring' + L["Finger1Slot"] = 'Second Ring' + L["Trinket0Slot"] = 'First Trinket' + L["Trinket1Slot"] = 'Second Trinket' + L["MainHandSlot"] = 'Main Hand' + L["SecondaryHandSlot"] = 'Offhand' + L["RangedSlot"] = 'Ranged' + L["AmmoSlot"] = 'Munition' + L["Bag0Slot"] = 'First Bag' + L["Bag1Slot"] = 'Second Bag' + L["Bag2Slot"] = 'Third Bag' + L["Bag3Slot"] = 'Fourth Bag' + L['repaircost'] = function(r) return "Wasted money for repairs: "..addon:buildMoneyString(r) end + L['repaircostgb'] = function(r) return "Wasted guildvaults money for repairs: "..addon:buildMoneyString(r) end + L["Repair Charts"] = "Repair Charts" + L['Allow Guildbank Repair'] = true + L['Money low'] = "No fund for repair!" + L['HINT3'] = "|c0000ff00Shift-Leftclick|r |c00fffffftoggles minimap icon|r" +end \ No newline at end of file diff --git a/pack.xml b/pack.xml new file mode 100644 index 0000000..8367b95 --- /dev/null +++ b/pack.xml @@ -0,0 +1,5 @@ + +