62 lignes
2.4 KiB
Lua
62 lignes
2.4 KiB
Lua
local Postal = LibStub("AceAddon-3.0"):GetAddon("Postal")
|
||
local Postal_Wire = Postal:NewModule("Wire", "AceHook-3.0")
|
||
local L = LibStub("AceLocale-3.0"):GetLocale("Postal")
|
||
Postal_Wire.description = L["Set subject field to value of coins sent if subject is blank."]
|
||
|
||
local g, s, c
|
||
g = "^%["..GOLD_AMOUNT.." "..SILVER_AMOUNT.." "..COPPER_AMOUNT.."%]$"
|
||
s = "^%["..SILVER_AMOUNT.." "..COPPER_AMOUNT.."%]$"
|
||
c = "^%["..COPPER_AMOUNT.."%]$"
|
||
if GetLocale() == "ruRU" then
|
||
--Because ruRU has these escaped strings which can't be in mail subjects.
|
||
--COPPER_AMOUNT = "%d |4медная монета:медные монеты:медных монет;"; -- Lowest value coin denomination
|
||
--SILVER_AMOUNT = "%d |4серебряная:серебряные:серебряных;"; -- Mid value coin denomination
|
||
--GOLD_AMOUNT = "%d |4золотая:золотые:золотых;"; -- Highest value coin denomination
|
||
g = "^%[%d+з %d+с %d+м%]$"
|
||
s = "^%[%d+с %d+м%]$"
|
||
c = "^%[%d+м%]$"
|
||
end
|
||
g = gsub(g, "%%d", "%%d+")
|
||
s = gsub(s, "%%d", "%%d+")
|
||
c = gsub(c, "%%d", "%%d+")
|
||
|
||
function Postal_Wire:OnEnable()
|
||
-- Secure hook so that it calls the original function
|
||
self:SecureHook(SendMailMoney, "onValueChangedFunc")
|
||
end
|
||
|
||
-- Disabling modules unregisters all events/hook automatically
|
||
--function Postal_Wire:OnDisable()
|
||
--end
|
||
|
||
function Postal_Wire:onValueChangedFunc()
|
||
local subject = SendMailSubjectEditBox:GetText()
|
||
if subject == "" or subject:find(g) or subject:find(s) or subject:find(c) then
|
||
local money = MoneyInputFrame_GetCopper(SendMailMoney)
|
||
if money and money > 0 then
|
||
local gold = floor(money / 10000)
|
||
local silver = floor((money - gold * 10000) / 100)
|
||
local copper = mod(money, 100)
|
||
if GetLocale() == "ruRU" then
|
||
if gold > 0 then
|
||
SendMailSubjectEditBox:SetText(format("[%d+з %d+с %d+м]", gold, silver, copper))
|
||
elseif silver > 0 then
|
||
SendMailSubjectEditBox:SetText(format("[%d+с %d+м]", silver, copper))
|
||
else
|
||
SendMailSubjectEditBox:SetText(format("[%d+м]", copper))
|
||
end
|
||
else
|
||
if gold > 0 then
|
||
SendMailSubjectEditBox:SetText(format("["..GOLD_AMOUNT.." "..SILVER_AMOUNT.." "..COPPER_AMOUNT.."]", gold, silver, copper))
|
||
elseif silver > 0 then
|
||
SendMailSubjectEditBox:SetText(format("["..SILVER_AMOUNT.." "..COPPER_AMOUNT.."]", silver, copper))
|
||
else
|
||
SendMailSubjectEditBox:SetText(format("["..COPPER_AMOUNT.."]", copper))
|
||
end
|
||
end
|
||
else
|
||
SendMailSubjectEditBox:SetText("")
|
||
end
|
||
end
|
||
end
|