From 545a997276473c5ca440701cc58fa87a6d043b93 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 13 Jan 2021 16:20:09 +0100 Subject: [PATCH] Init --- .gitmodules | 3 + Common | 1 + core.lua | 196 ++++++++++++++++++++++++++++++++++++++++++++++++ icon2.tga | Bin 0 -> 3401 bytes license.txt | 6 ++ locale_deDE.lua | 48 ++++++++++++ locale_enUS.lua | 42 +++++++++++ pack.xml | 5 ++ zz_Repair.toc | 15 ++++ 9 files changed, 316 insertions(+) create mode 100644 .gitmodules create mode 160000 Common create mode 100644 core.lua create mode 100644 icon2.tga create mode 100644 license.txt create mode 100644 locale_deDE.lua create mode 100644 locale_enUS.lua create mode 100644 pack.xml create mode 100644 zz_Repair.toc 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 0000000000000000000000000000000000000000..42682c269d77475358d9f15f8b6b67672a8a1862 GIT binary patch literal 3401 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 F{2zaM9mfCw literal 0 HcmV?d00001 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 @@ + +