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.

140 lines
4.1 KiB

-- module independent variables --
----------------------------------
local addon, ns = ...
local C, L, I = ns.LC.color, ns.L, ns.I
if ns.client_version<7 then return end
-- module own local variables and local cached functions --
-----------------------------------------------------------
local name = "WoWToken"; -- L["ModDesc-WoWToken"]
local ttName,ttColumns,tt,icon,module,_ = name.."TT",1;
local price = {last=0,money=0,diff=0};
-- register icon names and default files --
-------------------------------------------
I[name] = {iconfile="Interface\\ICONS\\WoW_Token01",coords={0.05,0.95,0.05,0.95}}; --IconName::WoWToken--
-- some local functions --
--------------------------
-- module functions and variables --
------------------------------------
module = {
events = {
"PLAYER_LOGIN",
"TOKEN_MARKET_PRICE_UPDATED"
},
onupdate_interval = 120,
config_defaults = {
enabled = false,
diff=true,
history=true
},
};
function module.options()
return {
tooltip = {
diff={ type="toggle", name=L["Difference"], desc=L["Show difference of last change in tooltip"]},
history={ type="toggle", name=L["Price history"], desc=L["Show price history of the 5 last changes in tooltip"]},
},
misc = {
shortNumbers=true
},
};
end
-- function module.init() end
function module.onevent(self,event,msg)
if event=="PLAYER_LOGIN" then
if Broker_Everything_DataDB[name]==nil then
Broker_Everything_DataDB[name] = {};
end
if(#Broker_Everything_DataDB[name]>0 and Broker_Everything_DataDB[name][1].last<time()-(60*30))then
wipe(Broker_Everything_DataDB[name]);
end
C_WowTokenPublic.UpdateMarketPrice();
elseif event=="TOKEN_MARKET_PRICE_UPDATED" then
if(#Broker_Everything_DataDB[name]==0 or (#Broker_Everything_DataDB[name]>0 and Broker_Everything_DataDB[name][1].money~=price.money))then
tinsert(Broker_Everything_DataDB[name],1,{money=price.money,last=price.last});
if(#Broker_Everything_DataDB[name]==7)then tremove(Broker_Everything_DataDB[name],7); end
end
local current = C_WowTokenPublic.GetCurrentMarketPrice();
if(current)then
if(current~=price.money)then
local prev=price.money;
price = {last=time(),money=current};
if(prev>0)then
price.diff=price.money-prev;
end
end
local obj = ns.LDB:GetDataObjectByName(module.ldbName);
obj.text = ns.GetCoinColorOrTextureString(name,current,{hideMoney=4});
end
end
end
function module.onupdate()
C_WowTokenPublic.UpdateMarketPrice();
end
-- function module.optionspanel(panel) end
-- function module.onmousewheel(self,direction) end
function module.ontooltip(tt)
local l;
tt:AddLine(L[name]);
tt:AddLine(" ");
if(price.last~=0)then
tt:AddDoubleLine(
C("ltblue",L["Current price:"]),
ns.GetCoinColorOrTextureString(name,price.money,{hideMoney=4,inTooltip=true})
);
tt:AddDoubleLine(
C("ltblue",L["Last changed:"]),
C("ltyellow",date("%Y-%m-%d %H:%M",price.last))
);
if(ns.profile[name].diff and price.diff)then
local diff="";
if(price.diff<0)then
diff = "- "..ns.GetCoinColorOrTextureString(name,-price.diff,{hideMoney=4,inTooltip=true});
else
diff = ns.GetCoinColorOrTextureString(name,price.diff,{hideMoney=4,inTooltip=true});
end
tt:AddDoubleLine(
C("ltblue",L["Difference to previous:"]),
diff
);
end
if(ns.profile[name].history and #Broker_Everything_DataDB[name]>1)then
tt:AddLine(" ");
tt:AddLine(C("ltblue",L["Price history (last 5 changes)"]));
for i,v in ipairs(Broker_Everything_DataDB[name])do
if(i>1 and v.money>0)then
tt:AddDoubleLine(date("%Y-%m-%d %H:%M",v.last),ns.GetCoinColorOrTextureString(name,v.money,{hideMoney=4,inTooltip=true}));
end
end
end
else
tt:AddLine(C("orange",L["Currently no price available..."]));
end
end
-- function module.onenter(self) end
-- function module.onleave(self) end
-- function module.onclick(self,button) end
-- function module.ondblclick(self,button) end
-- final module registration --
-------------------------------
ns.modules[name] = module;