initial commit
This commit is contained in:
Executable
+246
@@ -0,0 +1,246 @@
|
||||
-- Handle tracking cycle fish
|
||||
|
||||
FishingBuddy.TrackingFrame = {};
|
||||
|
||||
local GRAPH_HEIGHT = 120;
|
||||
|
||||
local trackingWordMap = {
|
||||
["WEEKLY"] = FishingBuddy.WEEKLY,
|
||||
["HOURLY"] = FishingBuddy.HOURLY,
|
||||
[FishingBuddy.WEEKLY] = "WEEKLY",
|
||||
[FishingBuddy.HOURLY] = "HOURLY",
|
||||
};
|
||||
|
||||
local byhours = {
|
||||
[13759] = {
|
||||
["n"] = "Raw Nightfin Snapper",
|
||||
["c"] = { r = 0.5, g = 0.5, b = 1.0, a = 0.75 },
|
||||
},
|
||||
[13760] = {
|
||||
["n"] = "Raw Sunscale Salmon",
|
||||
["c"] = { r = 0.8, g = 0.8, b = 0.1, a = 0.75 },
|
||||
},
|
||||
};
|
||||
local byweeks = {
|
||||
[13756] = {
|
||||
["n"] = "Raw Summer Bass",
|
||||
["c"] = { r = 1.0, g = 1.0, b = 0.0, a = 0.75 },
|
||||
},
|
||||
[13755] = {
|
||||
["n"] = "Winter Squid",
|
||||
["c"] = { r = 0.4, g = 0.1, b = 0.4, a = 0.75 },
|
||||
},
|
||||
};
|
||||
|
||||
local function UntrackThis(id, name)
|
||||
if ( not byhours[id] and not byweeks[id] ) then
|
||||
for how in FishingBuddy_Info["FishTracking"] do
|
||||
if ( FishingBuddy_Info["FishTracking"][how][id] ) then
|
||||
FishingBuddy_Info["FishTracking"][how][id] = nil;
|
||||
FishingBuddy.Print(FishingBuddy.NOTRACKMSG, name);
|
||||
end
|
||||
end
|
||||
else
|
||||
FishingBuddy.Message(FishingBuddy.NOTRACKERRMSG);
|
||||
end
|
||||
end
|
||||
|
||||
local function TrackThis(how, id, color, name)
|
||||
if ( not FishingBuddy_Info["FishTracking"][how] ) then
|
||||
FishingBuddy_Info["FishTracking"][how] = {};
|
||||
end
|
||||
local limit = 23;
|
||||
if ( how == "WEEKLY" ) then
|
||||
limit = 52;
|
||||
end
|
||||
if ( not FishingBuddy_Info["FishTracking"][how][id] ) then
|
||||
FishingBuddy_Info["FishTracking"][how][id] = {};
|
||||
FishingBuddy_Info["FishTracking"][how][id].data = {};
|
||||
for i=0,limit,1 do
|
||||
FishingBuddy_Info["FishTracking"][how][id].data[i] = 0;
|
||||
end
|
||||
FishingBuddy_Info["FishTracking"][how][id].data.n = limit+1;
|
||||
end
|
||||
if ( name and not FishingBuddy_Info["FishTracking"][how][id].name ) then
|
||||
FishingBuddy_Info["FishTracking"][how][id].name = name;
|
||||
end
|
||||
if ( color ) then
|
||||
if ( type(color) == "string") then
|
||||
local a = tonumber(string.sub(color,1,2),16);
|
||||
local r = tonumber(string.sub(color,3,4),16);
|
||||
local g = tonumber(string.sub(color,5,6),16);
|
||||
local b = tonumber(string.sub(color,7,8),16);
|
||||
color = { a = a, r = r, g = g, b = b };
|
||||
end
|
||||
FishingBuddy_Info["FishTracking"][how][id].color = color;
|
||||
end
|
||||
end
|
||||
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK] = {};
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK].args = {};
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK].args[1] = "[%w]+";
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK].args[2] = "|c%x+|Hitem:%d+:%d+:%d+:%d+|h%[.-%]|h|r";
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK].help = FishingBuddy.TRACKING_HELP;
|
||||
FishingBuddy.Commands[FishingBuddy.TRACK].func =
|
||||
function(how, fishlink)
|
||||
if ( how and (how == FishingBuddy.HOURLY or
|
||||
how == FishingBuddy.WEEKLY)) then
|
||||
local c, i, n = FishingBuddy.SplitFishLink(fishlink);
|
||||
if ( i ) then
|
||||
TrackThis(trackingWordMap[how], i, c, n);
|
||||
FishingBuddy.Print(FishingBuddy.TRACKINGMSG, n, how);
|
||||
return true;
|
||||
end
|
||||
end
|
||||
end;
|
||||
FishingBuddy.Commands[FishingBuddy.NOTRACK] = {};
|
||||
FishingBuddy.Commands[FishingBuddy.NOTRACK].args = {};
|
||||
FishingBuddy.Commands[FishingBuddy.NOTRACK].args[1] = "|c%x+|Hitem:%d+:%d+:%d+:%d+|h%[.-%]|h|r";
|
||||
FishingBuddy.Commands[FishingBuddy.NOTRACK].help = FishingBuddy.TRACKING_HELP;
|
||||
FishingBuddy.Commands[FishingBuddy.NOTRACK].func =
|
||||
function(fishlink)
|
||||
local c, i, n = FishingBuddy.SplitFishLink(fishlink);
|
||||
if ( i ) then
|
||||
UntrackThis(i, n);
|
||||
return true;
|
||||
end
|
||||
end;
|
||||
FishingBuddy.Commands[FishingBuddy.TRACKING] = {};
|
||||
FishingBuddy.Commands[FishingBuddy.TRACKING].help = FishingBuddy.TRACKING_HELP;
|
||||
FishingBuddy.Commands[FishingBuddy.TRACKING].func =
|
||||
function()
|
||||
local pr = FishingBuddy.Print;
|
||||
for jdx in FishingBuddy_Info["FishTracking"] do
|
||||
local how = trackingWordMap[jdx];
|
||||
pr("Tracking "..how);
|
||||
local ft = FishingBuddy_Info["FishTracking"];
|
||||
for id in ft[jdx] do
|
||||
local name;
|
||||
if ( ft[jdx][id].name ) then
|
||||
name = ft[jdx][id].name;
|
||||
else
|
||||
name = id;
|
||||
end
|
||||
local line = name.."; ";
|
||||
for k,v in ft[jdx][id].data do
|
||||
line = line.." "..k..": "..v;
|
||||
end
|
||||
pr(line);
|
||||
end
|
||||
end
|
||||
return true;
|
||||
end;
|
||||
|
||||
FishingBuddy.InitTracking = function()
|
||||
if ( not FishingBuddy_Info["FishTracking"] ) then
|
||||
FishingBuddy_Info["FishTracking"] = { };
|
||||
end
|
||||
for k,v in byhours do
|
||||
TrackThis("HOURLY", k, v.c);
|
||||
end
|
||||
for k,v in byweeks do
|
||||
TrackThis("WEEKLY", k, v.c);
|
||||
end
|
||||
end
|
||||
|
||||
FishingBuddy.AddTracking = function(id, name)
|
||||
local ft = FishingBuddy_Info["FishTracking"];
|
||||
local index, how;
|
||||
if ( ft["HOURLY"][id] ) then
|
||||
how = "HOURLY";
|
||||
index,_ = GetGameTime();
|
||||
elseif ( ft["WEEKLY"][id] ) then
|
||||
how = "WEEKLY";
|
||||
index = date("%W");
|
||||
else
|
||||
return false;
|
||||
end
|
||||
if ( not FishingBuddy_Info["FishTracking"][how][id].name ) then
|
||||
FishingBuddy_Info["FishTracking"][how][id].name = name;
|
||||
end
|
||||
index = tonumber(index);
|
||||
|
||||
local p = FishingBuddy.printable;
|
||||
FishingBuddy_Info["FishTracking"][how][id].data[index] =
|
||||
FishingBuddy_Info["FishTracking"][how][id].data[index] + 1;
|
||||
return true;
|
||||
end
|
||||
|
||||
local function PlotData(graph, num, bw, bs, tab, hlabels)
|
||||
local plotem = {};
|
||||
local maxval = 0;
|
||||
local width = 0;
|
||||
local plotted = false;
|
||||
local fdx = 1;
|
||||
local line;
|
||||
local mv = 0;
|
||||
for _,info in tab do
|
||||
plotem[fdx] = false;
|
||||
-- our data is zero based...
|
||||
local n = table.getn(info.data);
|
||||
width = n * (bw+bs);
|
||||
n = n - 1;
|
||||
for idx=0,n do
|
||||
if ( info.data[idx] > mv ) then
|
||||
mv = info.data[idx];
|
||||
end
|
||||
end
|
||||
if ( mv > 0 ) then
|
||||
if ( mv > maxval ) then
|
||||
maxval = mv;
|
||||
end
|
||||
plotem[fdx] = true;
|
||||
plotted = true;
|
||||
end
|
||||
fdx = fdx + 1;
|
||||
end
|
||||
local delta = math.mod(maxval, 5);
|
||||
if ( delta > 0 ) then
|
||||
maxval = maxval + (5 - delta);
|
||||
end
|
||||
graph.maxVal = maxval;
|
||||
graph.barWidth = bw;
|
||||
graph.barSpacing = bs;
|
||||
local count = num;
|
||||
fdx = 1;
|
||||
for id, info in tab do
|
||||
if ( count > 0 and plotem[fdx] ) then
|
||||
local c = info.color or {};
|
||||
local item, texture, _, _, _ = FishingBuddy.GetFishie(id);
|
||||
GraphHandler.PlotLegend(graph, num-count+1, info.name, id,
|
||||
texture, c.r, c.g, c.b);
|
||||
local w = GraphHandler.PlotData(graph, info.data, num-count, 1,
|
||||
c.r, c.g, c.b);
|
||||
if ( info.name ) then
|
||||
if ( line ) then
|
||||
line = line.." / "..info.name;
|
||||
else
|
||||
line = info.name;
|
||||
end
|
||||
end
|
||||
count = count - 1;
|
||||
end
|
||||
fdx = fdx + 1;
|
||||
end
|
||||
if ( plotted ) then
|
||||
local values = {};
|
||||
local delta = maxval/5;
|
||||
for v=0,5 do
|
||||
values[string.format("%d", v*delta)] = v;
|
||||
end
|
||||
GraphHandler.PlotGrid(graph, line or "", values, width, hlabels);
|
||||
else
|
||||
GraphHandler.PlotGrid(graph, FishingBuddy.NODATAMSG );
|
||||
end
|
||||
return width, maxval, line;
|
||||
end
|
||||
|
||||
FishingBuddy.TrackingFrame.OnShow = function()
|
||||
local fi = FishingBuddy_Info["FishTracking"];
|
||||
local graph1 = getglobal("FishingTrackingFrameGraph1");
|
||||
local graph2 = getglobal("FishingTrackingFrameGraph2");
|
||||
|
||||
PlotData(graph1, 2, 5, 5, fi["HOURLY"],
|
||||
{["00:00"] = 0, ["06:00"] = 6, ["12:00"] = 12, ["18:00"] = 18, ["23:59"] = 24});
|
||||
PlotData(graph2, 2, 3, 2, fi["WEEKLY"], FishingBuddy.BYWEEKS_TABLE);
|
||||
end
|
||||
Reference in New Issue
Block a user