forked from rilgamon/zz_Money
modify and add files for zz2
This commit is contained in:
parent
89c2112488
commit
a8424e2050
|
@ -0,0 +1,163 @@
|
|||
local addonName, addonTable = ...
|
||||
addonTable['events'] = addonTable['events'] or {}
|
||||
local db, mailSum, mailRec, player, dbb, dbr, dbf, L, faction, realm
|
||||
local events = addonTable['events']
|
||||
function addonTable:SetupBanker()
|
||||
player = UnitName('player')
|
||||
L = addonTable['storage']['L']
|
||||
db = addonTable['storage']['db']
|
||||
dbr = addonTable['storage']['dbr']
|
||||
dbf = addonTable['storage']['dbf']
|
||||
dbb = dbf['banker']
|
||||
faction = addonTable['storage']['faction']
|
||||
realm = addonTable['storage']['realm']
|
||||
addonTable['bankHandler'] :SetDB(db[faction]['banker'])
|
||||
end
|
||||
local mailframes = {}
|
||||
local posFrame = CreateFrame("Frame")
|
||||
posFrame:SetSize(32,1)
|
||||
posFrame:SetPoint("TOPRIGHT",SendMailFrame,"TOPRIGHT",-10,-12)
|
||||
posFrame:SetScript("OnEvent", function(self, event, ...)
|
||||
self:UnregisterEvent('MAIL_FAILED')
|
||||
self:UnregisterEvent('MAIL_SEND_SUCCESS')
|
||||
if(event == "MAIL_SEND_SUCCESS") then
|
||||
if(mailRec and mailSum) then
|
||||
dbr[mailRec]['incoming'] = (dbr[mailRec]['incoming'] or 0) + mailSum
|
||||
print(L['Success'](mailRec,mailSum))
|
||||
mailframes[mailRec]:Hide()
|
||||
end
|
||||
elseif(event == "MAIL_FAILED") then
|
||||
print(L['Fail'])
|
||||
end
|
||||
mailRec = nil
|
||||
mailSum = nil
|
||||
end)
|
||||
local function GetFactionList()
|
||||
local n,m,_
|
||||
local l = {}
|
||||
if(addonTable['db']['sv']['profileKeys']) then
|
||||
for k,v in pairs(addonTable['db']['sv']['profileKeys']) do
|
||||
n,_,m = strsplit(' ',k,3)
|
||||
if(n) then
|
||||
if(m == realm) then
|
||||
if(faction == dbr[n]['faction']) then
|
||||
l[n] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return l
|
||||
end
|
||||
local function getDeliver(name)
|
||||
if(not dbr[name] or not dbr[name]['currentGold']) then return 0 end
|
||||
local sendSum,offset
|
||||
local lim, mon
|
||||
if(dbb['banker'] ~= player) then
|
||||
lim = dbb['maxLimit'] or 100
|
||||
mon = GetMoney()
|
||||
sendSum = mon - lim*10000 - 30
|
||||
offset = 0
|
||||
else
|
||||
lim = dbb['minLimit'] or 100
|
||||
mon = dbr[name]['currentGold']
|
||||
sendSum = lim*10000 - mon
|
||||
offset = 30
|
||||
end
|
||||
if(sendSum + offset > GetMoney()) then
|
||||
sendSum = GetMoney()
|
||||
end
|
||||
return sendSum - (dbb['banker'] == name and 0 or (dbr[name]['incoming'] or 0))
|
||||
end
|
||||
local function Click(self,button)
|
||||
local sendSum = getDeliver(self['destName'])
|
||||
if(addonTable:IsTwink(self['destName']) and self['destName']~=player) then
|
||||
if(sendSum>0) then
|
||||
if(SetSendMailMoney(sendSum)) then
|
||||
posFrame:RegisterEvent('MAIL_SEND_SUCCESS')
|
||||
posFrame:RegisterEvent('MAIL_FAILED')
|
||||
mailRec = self['destName']
|
||||
mailSum = sendSum
|
||||
SendMail(self['destName'],L['Subject'],nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function Mouse(self)
|
||||
local tip = GameTooltip
|
||||
tip:SetOwner(self, "ANCHOR_BOTTOM")
|
||||
tip:ClearLines()
|
||||
self['tooltip'] = tip
|
||||
if(dbb['banker'] ~= player) then
|
||||
tip:AddLine(format("%s %s",L['Bankier'],dbb['banker']))
|
||||
tip:AddLine(format("%s %s",L['Goldgrenze'],dbb['maxLimit']))
|
||||
else
|
||||
tip:AddLine(format("%s %s",L['Empfaenger'],self['destName']))
|
||||
tip:AddLine(format("%s %s",L['Goldgrenze'],dbb['minLimit']))
|
||||
end
|
||||
local sendSum = getDeliver(self['destName'])
|
||||
tip:AddLine(format("%s %s",L['Sende'],GetCoinTextureString(sendSum)))
|
||||
tip:Show()
|
||||
end
|
||||
local function MouseOut(self)
|
||||
self['tooltip']:Hide()
|
||||
end
|
||||
local function MainFrame(name)
|
||||
if(getDeliver(name)<0) then return nil end
|
||||
local mailframe = mailframes[name] and mailframes[name] or CreateFrame("Button",nil,SendMailFrame,"ActionButtonTemplate SecureActionButtonTemplate")
|
||||
mailframe:SetSize(32,32)
|
||||
mailframe:SetPoint("TOPRIGHT",lastframe,"BOTTOMRIGHT",0,-8)
|
||||
mailframe:EnableMouse(true)
|
||||
mailframe:RegisterForClicks("AnyUp")
|
||||
mailframe['destName'] = name
|
||||
mailframe:SetScript("OnClick", Click)
|
||||
mailframe:SetScript("OnEnter", Mouse)
|
||||
mailframe:SetScript("OnLeave", MouseOut)
|
||||
if(not mailframe['texture']) then
|
||||
mailframe['texture'] = mailframe:CreateTexture(nil,"BACKGROUND")
|
||||
mailframe['texture']:SetTexture("Interface\\Icons\\INV_Misc_Bag_10_Blue")
|
||||
mailframe['texture']:SetAllPoints(mailframe)
|
||||
mailframe['texture']:SetPoint("CENTER",0,0)
|
||||
mailframe['texture']:Show()
|
||||
end
|
||||
return mailframe
|
||||
end
|
||||
local function buildMailFrames()
|
||||
local banker = dbb['banker']
|
||||
if(banker and mailframes) then
|
||||
for k,v in pairs(mailframes) do
|
||||
mailframes[k]:Hide()
|
||||
mailframes[k] = nil
|
||||
end
|
||||
mailframes = {}
|
||||
end
|
||||
if(db["disableBanker"]) then return end
|
||||
posFrame:Show()
|
||||
lastframe = posFrame
|
||||
|
||||
if(player == banker) then
|
||||
local fl = GetFactionList()
|
||||
if(fl) then
|
||||
local money = GetMoney()
|
||||
for k,v in pairs(fl) do
|
||||
if(k ~= banker) then
|
||||
if(getDeliver(k) > 0 and getDeliver(k) < money - 10000) then
|
||||
mailframes[k] = MainFrame(k)
|
||||
mailframes[k]:Show()
|
||||
lastframe = mailframes[k]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
local money = GetMoney()
|
||||
if(getDeliver(banker) > 0 and getDeliver(banker) < money - 10000) then
|
||||
mailframes[banker] = MainFrame(banker)
|
||||
mailframes[banker]:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
function events:MAIL_SHOW()
|
||||
buildMailFrames()
|
||||
end
|
|
@ -0,0 +1,164 @@
|
|||
local addonName, addonTable = ...
|
||||
local childName = "zz_Money"
|
||||
local db, dbr, dbp, L, lineIn, lineOut, session, faction, realm
|
||||
local ldbicon = LibStub:GetLibrary("LibDBIcon-1.0")
|
||||
function addonTable:SetupBroker()
|
||||
L = addonTable['storage']['L']
|
||||
db = addonTable['storage']['db']
|
||||
dbr = addonTable['storage']['dbr']
|
||||
dbp = addonTable['storage']['dbp']
|
||||
session = addonTable['storage']['session']
|
||||
faction = addonTable['storage']['faction']
|
||||
realm = addonTable['storage']['realm']
|
||||
local folder = addonName ~= childName and format("Interface\\AddOns\\%s\\%s", addonName, childName) or format("Interface\\AddOns\\%s", childName)
|
||||
lineIn = format("|T%s:0|t %s", format("%s\\in.tga", folder), L['Einnahmen'])
|
||||
lineOut = format("|T%s:0|t %s", format("%s\\out.tga", folder), L['Ausgaben'])
|
||||
end
|
||||
local function cdbCheck(n,realm)
|
||||
db[realm] = db[realm] or {}
|
||||
db[realm][n] = db[realm][n] or { currentGold = 0 }
|
||||
end
|
||||
local function getSumToday(d)
|
||||
if(faction=='Neutral') then return 0,0 end
|
||||
local sumIn,sumOut = 0,0
|
||||
d = d or 0
|
||||
local day = addonTable:getDateString() + d
|
||||
for a,b in pairs(dbr['activity'][faction][tostring(day)] or {}) do
|
||||
if(b < 0) then
|
||||
sumOut = sumOut + b
|
||||
else
|
||||
sumIn = sumIn + b
|
||||
end
|
||||
end
|
||||
return sumOut,sumIn
|
||||
end
|
||||
local function getSumWeek()
|
||||
local sumIn, sumOut = 0,0
|
||||
local sumWeekIn, sumWeekOut = 0,0
|
||||
for a=0,6 do
|
||||
sumOut, sumIn = getSumToday(a * -1)
|
||||
sumWeekIn = sumWeekIn + sumIn
|
||||
sumWeekOut = sumWeekOut + sumOut
|
||||
end
|
||||
return sumWeekOut,sumWeekIn
|
||||
end
|
||||
local function Helper_Tooltip3(realm)
|
||||
if(not db['connectedRealms']) then return end
|
||||
connectedRealms = connectedRealms or GetAutoCompleteRealms()
|
||||
for k, v in pairs(connectedRealms) do
|
||||
if(v == realm) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
local function OnClick(self, button)
|
||||
if(IsShiftKeyDown() and button == "LeftButton") then
|
||||
local sb = addonTable['db']['global']['ldbicons']
|
||||
sb[childName]['hide'] = not sb[childName]['hide']
|
||||
if(ldbicon) then
|
||||
if(sb[childName]['hide']) then
|
||||
ldbicon:Hide(childName)
|
||||
else
|
||||
ldbicon:Show(childName)
|
||||
end
|
||||
end
|
||||
else
|
||||
if(not InCombatLockdown()) then
|
||||
if(InterfaceOptionsFrame:IsVisible()) then
|
||||
InterfaceOptionsFrame:Hide()
|
||||
else
|
||||
InterfaceOptionsFrame_OpenToCategory(childName)
|
||||
InterfaceOptionsFrame_OpenToCategory(childName) -- Twice because of a bug in InterfaceOptionsFrame_OpenToCategory
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local function OnTooltipShow(tip)
|
||||
tip:AddLine(childName)
|
||||
if(faction == 'Neutral') then
|
||||
tip:AddLine(L['neutral'])
|
||||
return
|
||||
end
|
||||
local sessdiff = dbp['currentGold'] - session['start']
|
||||
local sdr,sdg,sdb = 1, 1, 1
|
||||
if(sessdiff<0) then
|
||||
sdr,sdg,sdb = 1, 0, 0
|
||||
end
|
||||
tip:AddDoubleLine(L['Sitzung'], addonTable:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
|
||||
tip:AddDoubleLine(lineIn, addonTable:displayMoney(session['income'], db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddDoubleLine(lineOut, addonTable:displayMoney(abs(session['expense']), db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddLine(' ')
|
||||
local sumOut,sumIn = getSumToday()
|
||||
sessdiff = sumOut+sumIn
|
||||
if(sessdiff<0) then
|
||||
sdr,sdg,sdb = 1, 0, 0
|
||||
else
|
||||
sdr,sdg,sdb = 1, 1, 1
|
||||
end
|
||||
tip:AddDoubleLine(L['Heute'], addonTable:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
|
||||
tip:AddDoubleLine(lineIn, addonTable:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddDoubleLine(lineOut, addonTable:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddLine(' ')
|
||||
local sumOut,sumIn = getSumToday(-1)
|
||||
sessdiff = sumOut+sumIn
|
||||
if(sessdiff<0) then
|
||||
sdr,sdg,sdb = 1, 0, 0
|
||||
else
|
||||
sdr,sdg,sdb = 1, 1, 1
|
||||
end
|
||||
tip:AddDoubleLine(L['Gestern'], addonTable:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
|
||||
tip:AddDoubleLine(lineIn, addonTable:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddDoubleLine(lineOut, addonTable:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddLine(' ')
|
||||
local sumOut,sumIn = getSumWeek()
|
||||
sessdiff = sumOut+sumIn
|
||||
if(sessdiff<0) then
|
||||
sdr,sdg,sdb = 1, 0, 0
|
||||
else
|
||||
sdr,sdg,sdb = 1, 1, 1
|
||||
end
|
||||
tip:AddDoubleLine(L['7-Tage'], addonTable:displayMoney(abs(sessdiff), db['shortMoneyTip']),1,1,0,sdr,sdg,sdb)
|
||||
tip:AddDoubleLine(lineIn, addonTable:displayMoney(sumIn, db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddDoubleLine(lineOut, addonTable:displayMoney(abs(sumOut), db['shortMoneyTip']),1,1,1,1,1,1)
|
||||
tip:AddLine(' ')
|
||||
local sum = 0
|
||||
local ttlist = {}
|
||||
if(addonTable['db']['sv']['profileKeys']) then
|
||||
for k,v in pairs(addonTable['db']['sv']['profileKeys']) do
|
||||
local n,_,m = strsplit(' ',k,3)
|
||||
if(n) then
|
||||
local cr = Helper_Tooltip3(m)
|
||||
if(m == realm or cr) then
|
||||
cdbCheck(n,cr and m or realm)
|
||||
if( faction == db[cr and m or realm][n]['faction']) then
|
||||
sum = sum + db[cr and m or realm][n]['currentGold']
|
||||
ttlist[k] = db[cr and m or realm][n]['currentGold']
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
for _,v in pairs(addonTable:sortArray(ttlist,db['sortDir'])) do
|
||||
local n,_,m = strsplit(' ',v,3)
|
||||
local cr = Helper_Tooltip3(m)
|
||||
tip:AddDoubleLine(addonTable:classcolor(n,db[cr and m or realm][n]['class']),addonTable:displayMoney(db[cr and m or realm][n]['currentGold']+(db[cr and m or realm][n]['incoming'] or 0), db['shortMoneyTip']),0,1,0,1,1,1)
|
||||
end
|
||||
tip:AddLine(' ')
|
||||
tip:AddDoubleLine(L['Gesamt'],addonTable:displayMoney(sum, db['shortMoneyTip']),0,1,0,1,1,1)
|
||||
end
|
||||
function addonTable:GetBroker(objname)
|
||||
return LibStub:GetLibrary("zzLDB"):GetLDB(objname)
|
||||
end
|
||||
function addonTable:OnText(objname, message)
|
||||
local ldbobj = addonTable:GetBroker(objname)
|
||||
if(ldbobj['text'] ~= message) then
|
||||
ldbobj['text'] = message
|
||||
end
|
||||
end
|
||||
addonTable['ldb'] = { -- https://github.com/tekkub/libdatabroker-1-1/wiki/Data-Specifications
|
||||
['type'] = 'data source', -- required: 'data source' or 'launcher'
|
||||
['text'] = childName, -- required/optional for launcher
|
||||
['icon'] = 'Interface\\Icons\\INV_Misc_Bag_10_Blue', -- optional/required for launcher
|
||||
['OnClick'] = OnClick, -- optional/required for launcher
|
||||
['OnTooltipShow'] = OnTooltipShow, -- optional
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
local addonName, addonTable = ...
|
||||
function addonTable:colorize(text, color)
|
||||
return string.format("|cff%s%s|r",color and color or 'ffffff',text and text or '')
|
||||
end
|
||||
function addonTable:classcolor(text,class)
|
||||
class = RAID_CLASS_COLORS[class] and class or "PRIEST"
|
||||
return string.format("|c%s%s|r",RAID_CLASS_COLORS[class]['colorStr'],text)
|
||||
end
|
||||
function addonTable:round(num, idp)
|
||||
return math.floor(num * (10^(idp or 0)) + 0.5) / (10^(idp or 0))
|
||||
end
|
||||
function addonTable:sortArray(tmp,dir)
|
||||
local newtmp = {}
|
||||
local n = 1
|
||||
local cnt = 0
|
||||
local maximum = 0
|
||||
local first
|
||||
for k,v in pairs(tmp) do
|
||||
cnt = cnt + 1
|
||||
if(v > maximum) then
|
||||
maximum = v + 1
|
||||
end
|
||||
first = first or k
|
||||
end
|
||||
while(cnt > 0) do
|
||||
local mx, mn = dir and maximum or 0,first
|
||||
for k,v in pairs(tmp) do
|
||||
if(dir) then
|
||||
if(tonumber(v)<=tonumber(mx)) then
|
||||
mx = v
|
||||
mn = k
|
||||
end
|
||||
else
|
||||
if(tonumber(v)>=tonumber(mx)) then
|
||||
mx = v
|
||||
mn = k
|
||||
end
|
||||
end
|
||||
end
|
||||
newtmp[n] = mn
|
||||
tmp[mn] = nil
|
||||
cnt = 0
|
||||
for k,v in pairs(tmp) do
|
||||
cnt = cnt + 1
|
||||
end
|
||||
n = n + 1
|
||||
mn = 0
|
||||
mx = dir and mx or 0
|
||||
end
|
||||
return newtmp
|
||||
end
|
||||
function addonTable:IsTwink(name)
|
||||
local realm = GetRealmName()
|
||||
local _
|
||||
if(self['db']['sv']['profileKeys']) then
|
||||
for k,v in pairs(self['db']['sv']['profileKeys']) do
|
||||
local n,m = strsplit(" - ",k,2)
|
||||
_,m = strsplit(" ",m,2)
|
||||
if(n) then
|
||||
if(n == name and m == realm) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
|
@ -0,0 +1,74 @@
|
|||
local addonName, addonTable = ...
|
||||
local db, dbr, faction
|
||||
addonTable['bankHandler'] = {
|
||||
SetDB = function(self, db) self.db = db end,
|
||||
GetPref = function(self, pref)
|
||||
return self['db'][pref[#pref]]
|
||||
end,
|
||||
SetPref = function (self, pref, value)
|
||||
self['db'][pref[#pref]] = value
|
||||
addonTable['events']['MAIL_SHOW'](addonTable)
|
||||
end,
|
||||
}
|
||||
local function buildSelect()
|
||||
local sel = {}
|
||||
local n,m,_
|
||||
if(addonTable['db']['sv']['profileKeys']) then
|
||||
for k,v in pairs(addonTable['db']['sv']['profileKeys']) do
|
||||
n,_,m = strsplit(' ',k,3)
|
||||
if(addonTable:IsTwink(n)) then
|
||||
if(dbr[n] and faction == dbr[n]['faction']) then
|
||||
sel[n] = n
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return sel
|
||||
end
|
||||
local function buildSelectAll()
|
||||
local sel = {}
|
||||
local n,m,_
|
||||
if(addonTable['db']['sv']['profileKeys']) then
|
||||
for k,v in pairs(addonTable['db']['sv']['profileKeys']) do
|
||||
n,_,m = strsplit(' ',k,3)
|
||||
sel[format("%s-%s",n,m)] = format("%s-%s",n,m)
|
||||
end
|
||||
end
|
||||
return sel
|
||||
end
|
||||
local function deleteChar()
|
||||
if(db['deleteCharOk']) then
|
||||
local charName, charRealm = strsplit('-', db['deleteChar'],2)
|
||||
if(db[charRealm] and db[charRealm][charName]) then
|
||||
db[charRealm][charName] = nil
|
||||
addonTable['db']['sv']['profileKeys'][format("%s - %s", charName, charRealm)] = nil
|
||||
end
|
||||
end
|
||||
db['deleteCharOk'] = nil
|
||||
end
|
||||
function addonTable:SetupPrefs(childName)
|
||||
local L = addonTable['storage']['L']
|
||||
dbr = addonTable['storage']['dbr']
|
||||
db = addonTable['storage']['db']
|
||||
faction = addonTable['storage']['faction']
|
||||
local config = LibStub:GetLibrary("zzConfig")
|
||||
local main = addonTable['options']['args'][childName]
|
||||
local menu = config:AddConfigMenu(addonTable['options'], L['Bankier'], addonTable['bankHandler'] , 2, { disabled = function() return db['disableBanker']
|
||||
end})
|
||||
config:AddConfigEntry(menu, "minLimit", "range", L['Minimum Limit'],L['Desc MinL'],1,10,150000,5, false)
|
||||
config:AddConfigEntry(menu, "maxLimit", "range", L['Maximum Limit'],L['Desc MaxL'],2,10,150000,5,false)
|
||||
config:AddConfigEntry(menu, "banker","select",L['Bankier'],nil,3,buildSelect)
|
||||
config:AddConfigEntry(main, "disableBanker", "toggle", L['nobanker'], nil, 3)
|
||||
config:AddConfigEntry(main, "deleteCharHeader", "header", L['DeleteChar'], nil, 9)
|
||||
config:AddConfigEntry(main, "deleteChar", "select", L['DeleteChar'], L['DeleteCharDesc'], 10, buildSelectAll)
|
||||
config:AddConfigEntry(main, "deleteCharOk", "toggle", L['DeleteCharOk'], nil , 11)
|
||||
config:AddConfigEntry(main, "deleteCharExec", "execute", L['DeleteChar'], L['DeleteCharDesc'], 12, deleteChar)
|
||||
config:AddConfigEntry(main, "sortDir", "toggle", L['sortDir'], nil, 2)
|
||||
config:AddConfigEntry(main, "connectedRealms", "toggle", L['connectedRealms'], nil, 2)
|
||||
config:AddConfigEntry(main, "accountMoney", "toggle", L['accountMoney'], L['accountMoneyDesc'], 4)
|
||||
config:AddConfigEntry(main, "shortMoney", "toggle", L['shortMoney'], nil, 5)
|
||||
config:AddConfigEntry(main, "shortMoneyTip", "toggle", L['shortMoneyTip'], nil, 5)
|
||||
config:AddConfigEntry(main, "abrevK", "toggle", L['abrevK'], nil, 6)
|
||||
config:AddConfigEntry(main, "abrevM", "toggle", L['abrevM'], nil, 6)
|
||||
config:AddConfigEntry(main, "showLog", "toggle", L['showLog'], nil, 7)
|
||||
end
|
Loading…
Reference in New Issue