You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.5 KiB

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