Merge ilithyia-addons fork (v0.8.8e)

- Russian localization (by Maus)
- FishingSchools: track fishing pools, Gatherer integration
- FishingOutfitter: Outfitter addon integration
- Interface 11200 (patch 1.12 support)
- Improved options system with dependencies
- Better watcher frame positioning
- Various bugfixes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Roman Kharitonov
2026-02-01 23:45:01 +10:00
co-authored by Claude Opus 4.5
39 changed files with 4115 additions and 1879 deletions
+5
View File
@@ -31,6 +31,11 @@
FishingBuddy.Command(FishingBuddy.SWITCH);
end
</Binding>
<Binding name="FISHINGBUDDY_GOFISHING">
if ( keystate == "down" ) then
FishingBuddy.SuitUpAndGoFishing();
end
</Binding>
<!-- Hidden bindings -->
<Binding name="FISHINGBUDDY_PERFORMCAST" runOnUp="true" hidden="true">
if ( keystate == "up" ) then
+786 -301
View File
File diff suppressed because it is too large Load Diff
+19 -9
View File
@@ -1,19 +1,29 @@
## Interface: 11000
## Title: FishingBuddy v0.8.6h
## Notes: Help with fishing related tasks -- clothing, fish information
## Interface: 11200
## Title: Fishing Buddy
## Version: 0.8.8e
## Notes: Help with fishing related tasks -- clothing, fish information, etc.
## Notes-ruRU: Отслеживает какую рыбу и где вы поймали и помогает управлять вашим рыболовским снарежением.
## Notes-deDE: Erleichtert das Angeln - Ausr\195\188stung und Fish-Infos
## Author: Sutorix-Windrunner
## OptionalDeps: OutfitDisplayFrame, Outfitter, myAddOns, Titan, InfoBar, ButtonHole
## Notes-frFR: Vous facilite la vie de pecheur. Informations sur les poissons, changement d'habits, etc.
## Notes-esES: Ayude con las tareas relacionadas pesca -- ropa, informaci\195\179n de los pescados
## Author: Sutorix=AT=hotmail.com
## OptionalDeps: FBEnEspagnol, OutfitDisplayFrame, Outfitter, myAddOns, FuBar, Titan, InfoBar, Gatherer, FuBar, ButtonHole
## SavedVariables: FishingBuddy_Info
## SavedVariablesPerCharacter: FishingBuddy_Player
## ModWatcherID: 104
## ModWatcherVersion: 11
localization.lua
localization.ru.lua
localization.de.lua
localization.es.lua
localization.fr.lua
FishingDebugging.lua
FishingSetup.lua
FishingBuddy.xml
FishingBuddyFrame.xml
FishingOptionsFrame.xml
FishingLocationsFrame.xml
FishingOutfitFrame.xml
FishingOutfitManager.xml
FishingOutfitFrame.xml
FishingOutfitter.lua
FishingBuddyTitan.xml
FishingBuddyMinimap.xml
FishingBuddyInfoBar.xml
@@ -21,4 +31,4 @@ FishingExtravaganza.xml
FishingWatcher.xml
GraphHandler.xml
FishingTrackingFrame.xml
FishingDebugging.lua
FishingSchools.lua
-4
View File
@@ -1,9 +1,5 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="localization.lua"/>
<Script file="localization.de.lua"/>
<Script file="localization.fr.lua"/>
<Script file="FishingSetup.lua"/>
<Script file="FishingBuddy.lua"/>
<Script file="FishingInit.lua"/>
<!-- Frame to handle all core events -->
+51 -35
View File
@@ -1,28 +1,28 @@
local SUBFRAMES = {
["FishingLocationsFrame"] = {
["name"] = FishingBuddy.LOCATIONS_TAB,
["tooltip"] = FishingBuddy.LOCATIONS_INFO,
["toggle"] = "_LOC",
["id"] = "1",
},
["FishingOutfitFrame"] = {
["name"] = FishingBuddy.OUTFITS_TAB,
["tooltip"] = FishingBuddy.OUTFITS_INFO,
["toggle"] = "_OUT",
["id"] = "2",
},
["FishingTrackingFrame"] = {
["name"] = FishingBuddy.TRACKING_TAB,
["tooltip"] = FishingBuddy.TRACKING_INFO,
["toggle"] = "_TRK",
["id"] = "3",
},
["FishingOptionsFrame"] = {
["name"] = FishingBuddy.OPTIONS_TAB,
["tooltip"] = FishingBuddy.OPTIONS_INFO,
["toggle"] = "_OPT",
["id"] = "4",
}
["FishingLocationsFrame"] = {
["name"] = FishingBuddy.LOCATIONS_TAB,
["tooltip"] = FishingBuddy.LOCATIONS_INFO,
["toggle"] = "_LOC",
["id"] = "1",
},
["FishingOutfitFrame"] = {
["name"] = FishingBuddy.OUTFITS_TAB,
["tooltip"] = FishingBuddy.OUTFITS_INFO,
["toggle"] = "_OUT",
["id"] = "2",
},
["FishingTrackingFrame"] = {
["name"] = FishingBuddy.TRACKING_TAB,
["tooltip"] = FishingBuddy.TRACKING_INFO,
["toggle"] = "_TRK",
["id"] = "3",
},
["FishingOptionsFrame"] = {
["name"] = FishingBuddy.OPTIONS_TAB,
["tooltip"] = FishingBuddy.OPTIONS_INFO,
["toggle"] = "_OPT",
["id"] = "4",
}
};
local function DisableSubFrame(frameName)
@@ -33,17 +33,34 @@ local function DisableSubFrame(frameName)
local f = getglobal(hideframe);
if ( f ) then
f:Hide();
end
id = id + 1;
f = getglobal("FishingBuddyFrameTab"..id);
if ( f ) then
f:SetPoint("LEFT", hideframe, "LEFT", 0, 0)
f = getglobal(string.format("FishingBuddyFrameTab%d", id+1));
if ( f ) then
f:SetPoint("LEFT", hideframe, "LEFT", 0, 0)
end
end
end
end
end
FishingBuddy.DisableSubFrame = DisableSubFrame;
local function EnableSubFrame(frameName)
for value,info in SUBFRAMES do
if ( value == frameName ) then
local id = info.id;
local hideframe = string.format("FishingBuddyFrameTab%d", id);
local f = getglobal(hideframe);
if ( f ) then
f:Show();
f = getglobal(string.format("FishingBuddyFrameTab%d", id+1));
if ( f ) then
f:SetPoint("LEFT", hideframe, "RIGHT", -18, 0)
end
end
end
end
end
FishingBuddy.EnableSubFrame = EnableSubFrame;
local function ShowSubFrame(frameName)
for value,_ in SUBFRAMES do
local frame = getglobal(value);
@@ -115,17 +132,16 @@ function FishingBuddyFrame_OnEvent(event)
DisableSubFrame(frame);
end
end
ToggleFishingBuddyFrame("FishingLocationsFrame");
ToggleFishingBuddyFrame("FishingLocationsFrame");
ShowSubFrame("FishingLocationsFrame");
end
end
function FishingBuddyFrame_OnShow()
FishingBuddyFramePortrait:SetTexture("Interface\\LootFrame\\FishingLoot-Icon");
FishingBuddyNameText:SetText(FishingBuddy.WINDOW_TITLE);
UpdateMicroButtons();
FishingBuddyFramePortrait:SetTexture("Interface\\LootFrame\\FishingLoot-Icon");
FishingBuddyNameText:SetText(FishingBuddy.WINDOW_TITLE);
UpdateMicroButtons();
end
function FishingBuddyFrame_OnHide()
UpdateMicroButtons();
UpdateMicroButtons();
end
+1 -1
View File
@@ -131,7 +131,7 @@
</Scripts>
</Button>
<Frame name="FishingBuddySmallHeaderTemplate" virtual="true">
<Frame name="FishingBuddySmallHeaderTemplate" virtual="true" hidden="true">
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\PaperDollInfoFrame\UI-Character-General-TopLeft">
+4 -10
View File
@@ -23,6 +23,8 @@ FishingBuddy.InfoBar.OnClick = function(button)
else
FishingBuddy.Command("");
end
elseif ( IsShiftKeyDown() ) then
ToggleFishingBuddyFrame("FishingOptionsFrame");
else
-- Toggle menu
local menu = getglobal("FishingBuddyInfoBarMenu");
@@ -37,18 +39,10 @@ FishingBuddy.InfoBar.OnEvent = function()
end
FishingBuddy.InfoBar.Tooltip = function()
local text = FishingBuddy.DESCRIPTION1.."\n"..FishingBuddy.DESCRIPTION2.."\n";
text = text.."|c"..FishingBuddy.Colors.GREEN;
if (FishingBuddy.GetSetting("InfoBarClickToSwitch") == 1) then
text = text..FishingBuddy.TOOLTIP_HINTSWITCH;
else
text = text..FishingBuddy.TOOLTIP_HINTTOGGLE;
end
text = text.."|r";
return text;
return FishingBuddy.TooltipBody("InfoBarClickToSwitch");
end
FishingBuddy.InfoBar.Menu_Initialize = function()
FishingBuddy.MakeDropDown(FishingBuddy.TITAN_CLICKTOSWITCH_ONOFF,
FishingBuddy.MakeDropDown(FishingBuddy.CLICKTOSWITCH_ONOFF,
"InfoBarClickToSwitch");
end
+15 -11
View File
@@ -41,12 +41,15 @@ end
FishingBuddy.Minimap.Button_OnClick = function(button)
if ( button == "RightButton" ) then
-- Toggle menu
local menu = getglobal("FishingBuddyMinimapMenu");
menu.point = "TOPRIGHT";
menu.relativePoint = "CENTER";
local level = 1;
ToggleDropDownMenu(level, nil, menu, "FishingBuddyMinimapButton", 0, 0);
if ( IsShiftKeyDown() ) then
ToggleFishingBuddyFrame("FishingOptionsFrame");
else
-- Toggle menu
local menu = getglobal("FishingBuddyMinimapMenu");
menu.point = "TOPRIGHT";
menu.relativePoint = "CENTER";
ToggleDropDownMenu(1, nil, menu, "FishingBuddyMinimapButton", 0, 0);
end
elseif ( FishingBuddy.GetSetting("MinimapClickToSwitch") == 1 ) then
FishingBuddy.Command(FishingBuddy.SWITCH);
else
@@ -83,21 +86,22 @@ FishingBuddy.Minimap.Button_OnEvent = function()
end
FishingBuddy.Minimap.Button_OnEnter = function()
if ( GameTooltip.finished ) then
if ( GameTooltip.fbmmbfinished ) then
return;
end
if ( FishingBuddy.GetSetting("UseButtonHole") == 0 ) then
GameTooltip.finished = 1;
GameTooltip.fbmmbfinished = 1;
GameTooltip:SetOwner(FishingBuddyMinimapFrame, "ANCHOR_LEFT");
GameTooltip:AddLine(FishingBuddy.NAME);
GameTooltip:AddLine(FishingBuddy.DESCRIPTION,.8,.8,.8,1);
local text = FishingBuddy.TooltipBody("MinimapClickToSwitch");
GameTooltip:AddLine(text,.8,.8,.8,1);
GameTooltip:Show();
end
end
FishingBuddy.Minimap.Button_OnLeave = function()
GameTooltip:Hide();
GameTooltip.finished = nil;
GameTooltip.fbmmbfinished = nil;
end
function FishingBuddy_ToggleMinimap()
@@ -106,7 +110,7 @@ function FishingBuddy_ToggleMinimap()
end
FishingBuddy.Minimap.Menu_Initialize = function()
FishingBuddy.MakeDropDown(FishingBuddy.TITAN_CLICKTOSWITCH_ONOFF,
FishingBuddy.MakeDropDown(FishingBuddy.CLICKTOSWITCH_ONOFF,
"MinimapClickToSwitch");
end
+1
View File
@@ -27,6 +27,7 @@
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<HighlightTexture alphaMode="ADD" file="Interface\Minimap\UI-Minimap-ZoomButton-Highlight"/>
<Layers>
<Layer level="ARTWORK">
<Texture name="FishingBuddyMinimapIcon" file="Interface\LootFrame\FishingLoot-Icon">
+2 -8
View File
@@ -42,19 +42,13 @@ FishingBuddy.Titan.OnEvent = function()
end
function TitanPanelFishingBuddyButton_GetTooltipText()
local text = FishingBuddy.DESCRIPTION1.."\n"..FishingBuddy.DESCRIPTION2.."\n";
if (FishingBuddy.GetSetting("TitanClickToSwitch") == 1) then
text = text..TitanUtils_GetGreenText(FishingBuddy.TOOLTIP_HINTSWITCH);
else
text = text..TitanUtils_GetGreenText(FishingBuddy.TOOLTIP_HINTTOGGLE);
end
return text;
return FishingBuddy.TooltipBody("TitanClickToSwitch");
end
function TitanPanelRightClickMenu_PrepareFishingBuddyMenu()
TitanPanelRightClickMenu_AddTitle(TitanPlugins[FishingBuddy.ID].menuText);
FishingBuddy.MakeDropDown(FishingBuddy.TITAN_CLICKTOSWITCH_ONOFF, "TitanClickToSwitch");
FishingBuddy.MakeDropDown(FishingBuddy.CLICKTOSWITCH_ONOFF, "TitanClickToSwitch");
TitanPanelRightClickMenu_AddSpacer();
TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE,
+64 -40
View File
@@ -1,38 +1,63 @@
-- outfit debugging functions
FishingBuddy.Commands["outfit"] = {};
FishingBuddy.Commands["outfit"].func =
function(what)
if ( what ) then
if ( what == FishingBuddy.RESET ) then
FishingBuddy.SetWasWearing(nil);
elseif ( what == "dump" ) then
FishingBuddy.Debug("Outfit");
FishingBuddy.Dump(FishingBuddy.GetOutfit());
FishingBuddy.Debug("Was Wearing");
FishingBuddy.Dump(FishingBuddy.GetWasWearing());
end
end
return true;
end;
-- debugging
-- test the extravaganze school marking functions
-- need to expand this for 1.9 if we can tell automatically
FishingBuddy.Commands["mark"] = {};
FishingBuddy.Commands["mark"].func =
function(what)
if ( what == "reset" ) then
FishingBuddy_Info["Schools"] = nil;
elseif ( what == "debug" ) then
local hour,_ = GetGameTime();
local day = date("%w");
FishingBuddy.Extravaganza.Debug(day, hour, GetRealZoneText());
elseif ( what == "dump" ) then
FishingBuddy.Extravaganza.Dump();
FishingBuddy = {};
FishingBuddy.API = {};
FishingBuddy.Commands = {};
FishingBuddy.Debugging = true;
local function printable(foo)
if ( foo ) then
if ( type(foo) == "table" ) then
return "table";
elseif ( type(foo) == "boolean" ) then
if ( foo ) then
return "true";
else
return "false";
end
else
FishingBuddy.Extravaganza.MarkSchool();
return foo;
end
return true;
end;
else
return "nil";
end
end
FishingBuddy.printable = printable;
FishingBuddy.Output = function(msg, r, g, b)
if ( DEFAULT_CHAT_FRAME ) then
if ( not r ) then
DEFAULT_CHAT_FRAME:AddMessage(msg);
else
DEFAULT_CHAT_FRAME:AddMessage(msg, r, g, b);
end
end
end
FishingBuddy.Debug = function(msg, fixlinks)
if ( FishingBuddy.Debugging ) then
if ( fixlinks ) then
msg = string.gsub(msg, "|", ";");
end
local name = FishingBuddy.Name or "Fishing Buddy";
FishingBuddy.Output("|c"..FishingBuddy.Colors.RED..name.."|r "..msg);
end
end
FishingBuddy.DebugVars = function()
FishingBuddy.Debugging = true;
end
FishingBuddy.Dump = function(thing)
if ( FishingBuddy.Debugging ) then
if ( DevTools_Dump ) then
DevTools_Dump(thing);
else
FishingBuddy.Debug("Tried to dump a '"..FishingBuddy.printable(thing).."'.");
end
end
end
-- random debugging code, likely out of date
FishingBuddy.Commands["debug"] = {};
@@ -40,7 +65,13 @@ FishingBuddy.Commands["debug"].func =
function(what)
if ( what ) then
if ( what == "on" ) then
FishingBuddy_Debugging = 1;
FishingBuddy.Debugging = true;
FishingBuddy.SetSetting("FishDebug", true);
FishingBuddy.Debug("Debugging turned on");
elseif ( what == "off" ) then
FishingBuddy.Debug("Debugging turned off");
FishingBuddy.Debugging = nil;
FishingBuddy.SetSetting("FishDebug", nil);
elseif ( what == "reset" ) then
FishingBuddy_Info["Testing"] = nil;
elseif ( what == "test" ) then
@@ -58,13 +89,6 @@ FishingBuddy.Commands["debug"].func =
local dist = math.sqrt((dx*xscale*dx*xscale)+(dy*yscale*dy*yscale));
FishingBuddy.Print("PlayerMap: %f, %f - %f", dx, dy, dist);
end
else
local func = getglobal("FishingBuddy_Localize_"..what);
if ( func ) then
func();
else
FishingBuddy_Debugging = 0;
end
end
end
return true;
+244 -131
View File
@@ -6,7 +6,6 @@ FishingBuddy.Extravaganza = {};
local NUMMINIPOIS = 10;
local ICONPATH = "Interface\\AddOns\\FishingBuddy\\Icons\\";
local CLOSEENOUGH = 10.0;
-- the actual names don't matter, except to help make sure I've got 'em all
local ExtravaganzaFish = {};
@@ -16,12 +15,16 @@ ExtravaganzaFish[19805] = "Keefer's Angelfish";
-- makes you wonder what item 19804 is, doesn't it...
ExtravaganzaFish[19803] = "Brownell's Blue Striped Racer";
FishingBuddy.Extravaganza.Fish = ExtravaganzaFish;
local UPDATETIME_POI = 0.2;
local UPDATETIME_SCHOOLS = 0.1;
local UPDATETIME_COUNTER = 60.0;
local STVUpdateTimer = 0;
local numCaught = 0;
local tastyfish_id = 19807;
local tastyfish;
local ExtravaganzaIsOver;
-- convert zone coords into minimap coords
local STVInfo = { scale = 0.18128603034401,
@@ -35,14 +38,33 @@ ZoomScale[3] = { xscale = 18568.7, yscale = 12472.2 };
ZoomScale[4] = { xscale = 24390.3, yscale = 15628.5 };
ZoomScale[5] = { xscale = 37012.2, yscale = 25130.6 };
local function GetSTVPosition()
local x, y = GetPlayerMapPosition("player");
local function GetSTVPosition(x, y)
if ( not x or not y ) then
x, y = GetPlayerMapPosition("player");
end
x = (x * STVInfo.scale) + STVInfo.xoffset;
y = (y * STVInfo.scale) + STVInfo.yoffset;
return x, y;
end
-- stolen directly from GuildMap
local function SetTextureCoords(texture, A, B, C, D, E, F)
local det = A*E - B*D;
local ULx, ULy, LLx, LLy, URx, URy, LRx, LRy;
ULx, ULy = ( B*F - C*E ) / det, ( -(A*F) + C*D ) / det;
LLx, LLy = ( -B + B*F - C*E ) / det, ( A - A*F + C*D ) / det;
URx, URy = ( E + B*F - C*E ) / det, ( -D - A*F + C*D ) / det;
LRx, LRy = ( E - B + B*F - C*E ) / det, ( -D + A -(A*F) + C*D ) / det;
texture:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
end
local function SetTextureAngle(texture, angrads)
local c = math.cos(angrads);
local s = math.sin(angrads);
SetTextureCoords(texture, c, s, 0, -s, c, 0);
end
local function GetAngleIcon(x, y)
local angle = asin(x / 57);
if (x <= 0 and y <= 0) then
@@ -61,7 +83,7 @@ local function GetAngleIcon(x, y)
return ICONPATH.."MiniMapArrow"..fileNumber;
end
local function PlotPOI(index, x, y)
local function PlotPOI(index, x, y, rot, scale)
local poi = getglobal("FishingExtravaganzaMini"..index);
if ( poi ) then
if ( x and y ) then
@@ -73,13 +95,22 @@ local function PlotPOI(index, x, y)
if ( dist > 56.5 ) then
x = x * 57 / dist;
y = y * 57 / dist;
tex:SetTexture(GetAngleIcon(x, y));
tex:SetTexCoord(0.0, 1.0, 0.0, 1.0);
if ( rot) then
tex:SetTexture(ICONPATH.."MiniMapArrow");
SetTextureAngle(tex, math.asin(x / 57));
else
tex:SetTexture(GetAngleIcon(x, y));
tex:SetTexCoord(0.0, 1.0, 0.0, 1.0);
end
else
tex:SetTexture("Interface\\Minimap\\ObjectIcons");
tex:SetTexCoord(0.0, 0.25, 0.25, 0.5);
end
poi:SetPoint("CENTER", "MinimapCluster", "TOPLEFT", 107 + x, y - 92);
if ( scale ) then
poi:SetWidth(scale);
poi:SetHeight(scale);
end
poi:Show();
return true;
else
@@ -99,6 +130,12 @@ local function CloseEnough(x1, y1, x2, y2)
return true;
end
local function GetDistance(x1, y1, x2, y2)
local dx = (x1 - x2);
local dy = (y1 - y2);
return math.sqrt(dx*dx + dy*dy);
end
local function GetMinimapDistance(x1, y1, x2, y2)
local zoom = ZoomScale[Minimap:GetZoom()];
local dx = (x1 - x2) * zoom.xscale;
@@ -106,88 +143,103 @@ local function GetMinimapDistance(x1, y1, x2, y2)
return math.sqrt(dx*dx+dy*dy);
end
local function FindClosest(row, x, y)
local dist;
local didx;
for idx=1,table.getn(row) do
local t = row[idx];
local dx = (t.x - x);
local dy = (t.y - y);
local d = dx*dx + dy*dy;
if ( not dist ) then
dist = d;
didx = idx;
elseif ( d < dist ) then
dist = d;
didx = idx;
local lx, ly;
local lastten;
local function GetNearestTen(x, y)
local schools = FishingBuddy.Schools.GetSchools(FishingBuddy.STVZONENAME);
if ( not x or not y ) then
x, y = GetSTVPosition();
end
-- if we've moved less than half the distance to the closest hole
-- don't recalculate
if ( lastten ) then
if ( lx == x and ly == y ) then
return lastten;
end
if ( table.getn(lastten) > 0 ) then
local d = GetDistance(x, y, lx, ly);
if ( d < (lastten[1].dist/2) ) then
return lastten;
end
end
end
local bydist = {};
for idx=1,table.getn(schools) do
local t = schools[idx];
if ( t.kind == FishingBuddy.SCHOOL_TASTY ) then
local sx, sy = GetSTVPosition(t.x, t.y);
local d = GetDistance(sx, sy, x, y);
local info = {};
info.x = sx;
info.y = sy;
info.dist = d;
tinsert(bydist, info);
end
end
if ( dist and didx ) then
local t = row[didx];
dist = GetMinimapDistance(t.x, t.y, x, y);
table.sort(bydist, function(a, b) return a.dist < b.dist; end);
local idx = 1;
lastten = {};
for _,info in bydist do
if ( idx < 10 ) then
tinsert(lastten, { dist = info.dist, x = info.x, y = info.y });
idx = idx + 1;
end
end
return didx, dist;
lx = x;
ly = y;
return lastten;
end
local function GetNearestTen(x, y, dir)
local r = math.floor(y * 100);
local found = 1;
local limit = 10;
local locations = {};
if ( FishingBuddy_Info["Schools"] ) then
while ( r >=0 and r <100 ) do
local iy = string.format("%d", r);
local dist;
local row = FishingBuddy_Info["Schools"][iy];
if ( row ) then
local rowsize = table.getn(row);
if ( rowsize > 5 and limit < 11 ) then
limit = limit + rowsize - 5;
end
for idx=1,rowsize do
local t = row[idx];
local dist = GetMinimapDistance(t.x, t.y, x, y);
tinsert(locations, { dist = dist, x = t.x, y = t.y });
found = found + 1;
if ( found >= limit ) then
return locations;
end
end
end
r = r + dir;
end
end
return locations;
end
-- save a school location
local function MarkSchool()
if ( not FishingBuddy_Info["Schools"] ) then
FishingBuddy_Info["Schools"] = {};
end
local function UpdatePOI()
local x, y = GetSTVPosition();
local iy = string.format("%d", y * 100);
if ( not FishingBuddy_Info["Schools"][iy] ) then
FishingBuddy_Info["Schools"][iy] = { { x = x, y = y } };
else
local idx, dist = FindClosest(FishingBuddy_Info["Schools"][iy], x, y);
if ( dist > CLOSEENOUGH ) then
tinsert(FishingBuddy_Info["Schools"][iy], { x = x, y = y });
STVUpdateTimer = 0;
local loc1 = GetNearestTen(x, y);
for idx=1,NUMMINIPOIS do
local t = loc1[idx];
if ( t ) then
PlotPOI(idx, t.x - x, y - t.y);
else
-- average something? that will cascade, which might be okay
-- or do we store them all during the contest and average later?
-- i.e. store 'close ones' in a separate place and then clean up
-- later
PlotPOI(idx);
end
end
end
local function HidePOI()
local poi = getglobal("FishingExtravaganzaMini1");
if ( poi:IsVisible() ) then
for idx=1,NUMMINIPOIS do
PlotPOI(idx);
end
end
end
local POIUpdateTimer = UPDATETIME_POI;
FishingBuddy.Extravaganza.POI_OnUpdate = function(elapsed)
POIUpdateTimer = POIUpdateTimer - elapsed;
if ( POIUpdateTimer < 0 ) then
FishingExtravaganzaPOIUpdate:Hide();
UpdatePOI();
POIUpdateTimer = UPDATETIME_POI;
end
end
local function DoUpdatePOI()
POIUpdateTimer = UPDATETIME_POI;
FishingExtravaganzaPOIUpdate:Show();
end
-- let an external entity forcibly mark a school
FishingBuddy.Extravaganza.MarkSchool = function()
local zone, subzone = FishingBuddy.GetZoneInfo();
if ( zone == FishingBuddy.STVZONENAME ) then
MarkSchool();
FishingBuddy.Schools.AddFishingSchool(FishingBuddy.SCHOOL_TASTY, tastyfish_id, zone);
end
end
local function ExtravaganzaHijackCheck()
if ( FishingBuddy.NormalHijackCheck() ) then
-- also check to make sure we're over a pool
return FishingBuddy.Schools.IsFishingHole(FishingBuddy.GetTooltipText());
end
end
@@ -200,9 +252,19 @@ local function IsTime(activate)
local showit = false;
if ( FishingBuddy.IsLoaded() ) then
if ( FishingBuddy.GetSetting("STVTimer") == 1 ) then
local mhour = date("%H");
local mhour = date("%H");
local hour,minute = GetGameTime();
local day = date("%w");
local off = FishingBuddy.GetClockOffset();
if ( off ~= 0 ) then
local lhour = date("%H");
lhour = lhour + off;
if ( lhour >= 24 ) then
day = day + 1;
elseif( lhour < 0 ) then
day = day - 1;
end
end
-- Is it Sunday?
if ( day == STVDay and
(hour >= (STVStartHour-2) and hour <(STVStartHour+2))) then
@@ -214,36 +276,26 @@ local function IsTime(activate)
if ( activate ) then
FishingExtravaganzaFrame:Show();
end
elseif ( FishingExtravaganzaFrame:IsVisible() or
FishingExtravaganzaMini1:IsVisible() ) then
FishingExtravaganzaFrame:Hide();
for idx=1,NUMMINIPOIS do
PlotPOI(idx);
if ( FishingBuddy.GetSetting("STVPoolsOnly") == 1 ) then
local zone,_ = FishingBuddy.GetZoneInfo();
if ( zone == FishingBuddy.STVZONENAME ) then
FishingBuddy.SetHijackCheck(ExtravaganzaHijackCheck);
else
FishingBuddy.SetHijackCheck();
end
end
else
if ( FishingExtravaganzaFrame:IsVisible() or
FishingExtravaganzaMini1:IsVisible() ) then
FishingExtravaganzaFrame:Hide();
HidePOI();
end
FishingBuddy.SetHijackCheck();
end
return showit;
end
FishingBuddy.Extravaganza.IsTime = IsTime;
local function UpdatePOI()
local x, y = GetSTVPosition();
local loc1 = GetNearestTen(x, y, -1);
local loc2 = GetNearestTen(x, y+0.01, 1);
local func = function(a, b) return a.dist < b.dist; end;
for idx=1,table.getn(loc2) do
tinsert(loc1, loc2[idx]);
end
table.sort(loc1, func);
for idx=1,NUMMINIPOIS do
local t = loc1[idx];
if ( t ) then
PlotPOI(idx, t.x - x, y - t.y);
else
PlotPOI(idx);
end
end
end
-- Check for mouse down event for dragging frame.
FishingBuddy.Extravaganza.OnDragStart = function(arg1)
if (arg1 == "LeftButton") then
@@ -270,44 +322,76 @@ FishingBuddy.Extravaganza.OnLoad = function()
this:Hide();
end
FishingBuddy.Extravaganza.OnShow = function()
-- check each of the bags on the player
numCaught = 0;
for bag=0, NUM_BAG_FRAMES do
-- get the number of slots in the bag (0 if no bag)
numSlots = GetContainerNumSlots(bag);
if (numSlots > 0) then
-- check each slot in the bag
for slot=1, numSlots do
local link = GetContainerItemLink (bag, slot);
if (link) then
local _,id,_ = FishingBuddy.SplitFishLink(link);
if ( id and id == tastyfish_id ) then
local _,c,_,_,_ = GetContainerItemInfo(bag, slot);
numCaught = numCaught + c;
end
end
end
end
end
end
FishingBuddy.Extravaganza.OnEvent = function()
local zone, subzone = FishingBuddy.GetZoneInfo();
if ( event == "ZONE_CHANGED_NEW_AREA" or event == "PLAYER_LOGIN" ) then
if ( zone == FishingBuddy.STVZONENAME and IsTime() ) then
this:RegisterEvent("LOOT_OPENED");
this:RegisterEvent("MINIMAP_UPDATE_ZOOM");
else
this:UnregisterEvent("LOOT_OPENED");
this:UnregisterEvent("MINIMAP_UPDATE_ZOOM");
end
elseif ( event == "LOOT_OPENED" ) then
if ( event == "LOOT_OPENED" ) then
if ( IsFishingLoot()) then
for index = 1, GetNumLootItems(), 1 do
if (LootSlotIsItem(index)) then
local fishlink = GetLootSlotLink(index);
local _, id, _ = FishingBuddy.SplitFishLink(fishlink);
local _, id, name = FishingBuddy.SplitFishLink(fishlink);
if ( ExtravaganzaFish[id] ) then
MarkSchool();
FishingBuddy.Schools.AddFishingSchool(FishingBuddy.SCHOOL_TASTY, id, zone);
STVUpdateTimer = 0;
if ( id == tastyfish_id ) then
numCaught = numCaught + 1;
-- make sure we've got the name of the fish for display
tastyfish = name;
end
end
end
end
end
elseif ( event == "CHAT_MSG_YELL" ) then
-- Riggle Bassbait yells: We have a winner! (.*) is the Master Angler!
local e,s,n = string.find(arg1, FishingBuddy.RIGGLE_BASSBAIT);
if ( e ) then
ExtravaganzaIsOver = true;
end
elseif ( event == "MINIMAP_UPDATE_ZOOM" ) then
if ( zone == FishingBuddy.STVZONENAME ) then
if ( FishingBuddy.GetSetting("STVTimer") == 1 ) then
UpdatePOI();
end
DoUpdatePOI();
end
end
elseif ( event == "ZONE_CHANGED_NEW_AREA" or event == "PLAYER_LOGIN" ) then
if ( zone == FishingBuddy.STVZONENAME and IsTime() ) then
this:RegisterEvent("CHAT_MSG_YELL");
this:RegisterEvent("LOOT_OPENED");
this:RegisterEvent("MINIMAP_UPDATE_ZOOM");
else
this:UnregisterEvent("CHAT_MSG_YELL");
this:UnregisterEvent("LOOT_OPENED");
this:UnregisterEvent("MINIMAP_UPDATE_ZOOM");
end
elseif ( event == "VARIABLES_LOADED" ) then
local _,_,_,_,_,n = FishingBuddy.GetFishie(tastyfish_id);
if ( n ) then
tastyfish = n;
else
tastyfish = FISH;
tastyfish = FishingBuddy.FISH;
end
IsTime(true);
this:UnregisterEvent("VARIABLES_LOADED");
@@ -325,9 +409,24 @@ FishingBuddy.Extravaganza.OnUpdate = function(elapsed)
local minleft;
local checkhour = STVStartHour;
local line;
local contestNow = false;
if ( hour >= STVStartHour ) then
line = FishingBuddy.TIMELEFT;
if ( ExtravaganzaIsOver ) then
line = FishingBuddy.FATLADYSINGS;
else
line = FishingBuddy.TIMELEFT;
end
line = line..FishingBuddy.DASH.." |c";
if ( numCaught < 20 ) then
line = line..FishingBuddy.Colors.RED;
elseif ( numCaught < 39 ) then
line = line..FishingBuddy.Colors.YELLOW;
else
line = line..FishingBuddy.Colors.GREEN;
end
line = line..FishingBuddy.FISHCAUGHT.."|r";
checkhour = checkhour + 2;
contestNow = true;
else
line = FishingBuddy.TIMETOGO;
end
@@ -342,8 +441,9 @@ FishingBuddy.Extravaganza.OnUpdate = function(elapsed)
FishingExtravaganzaFrameButtonText:SetText(line);
local width = FishingExtravaganzaFrameButtonText:GetWidth();
FishingExtravaganzaFrame:SetWidth(width + 16);
UpdatePOI();
if ( FishingBuddy_Info["Schools"] ) then
local zone,_ = FishingBuddy.GetZoneInfo();
if ( zone == FishingBuddy.STVZONENAME ) then
DoUpdatePOI();
STVUpdateTimer = UPDATETIME_SCHOOLS;
else
STVUpdateTimer = UPDATETIME_COUNTER;
@@ -352,6 +452,7 @@ FishingBuddy.Extravaganza.OnUpdate = function(elapsed)
end
else
FishingExtravaganzaFrame:Hide();
HidePOI();
end
end
@@ -377,22 +478,34 @@ FishingBuddy.Extravaganza.Debug = function(day, hour, zone)
IsTime(true);
end
FishingBuddy.Extravaganza.Dump = function()
local x, y = GetSTVPosition();
local iy = string.format("%d", y * 100);
FishingBuddy.Print("Current location: %d - %f, %f", iy, x, y);
if ( FishingBuddy_Info["Schools"][iy] ) then
for idx=1,table.getn(FishingBuddy_Info["Schools"][iy]) do
local t = FishingBuddy_Info["Schools"][iy][idx];
local dist = GetMinimapDistance(t.x, t.y, x, y);
FishingBuddy.Print("Distance: %f", dist);
end
end
end
-- eventually, display what fish you caught here
FishingBuddy.Extravaganza.MiniMap_OnEnter = function()
end
-- test the extravaganze school marking functions
-- need to expand this for 1.9 if we can tell automatically
FishingBuddy.Commands["mark"] = {};
FishingBuddy.Commands["mark"].func =
function(what)
if ( what == "reset" ) then
FishingBuddy_Info["FishSchools"] = nil;
elseif ( what == "debug" ) then
local hour,_ = GetGameTime();
local day = date("%w");
FishingBuddy.Extravaganza.Debug(day, hour);
elseif ( what == "test" ) then
FishingBuddy.Debug("mark test");
local coord = 0.005;
local rot = 1;
PlotPOI(1, 0, coord, rot, 16);
PlotPOI(2, coord, coord, rot, 16);
PlotPOI(3, coord, 0, rot, 16);
PlotPOI(4, -coord, 0, rot, 16);
PlotPOI(5, -coord, -coord, rot, 16);
PlotPOI(6, 0, -coord, rot, 16);
else
FishingBuddy.Extravaganza.MarkSchool();
end
return true;
end;
+12 -2
View File
@@ -17,7 +17,7 @@
GameTooltip:Hide();
</OnLeave>
</Scripts>
<NormalTexture name="$parentTexture" file="Interface\AddOns\FishingBuddy\Icons\minimaptargetgreen"/>
<NormalTexture name="$parentTexture"/>
</Button>
<Button name="FishingExtravaganzaMini1" inherits="FishingExtravaganzaMiniTemplate" id="1" hidden="false" parent="Minimap" toplevel="true"/>
<Button name="FishingExtravaganzaMini2" inherits="FishingExtravaganzaMiniTemplate" id="2" hidden="false" parent="Minimap" toplevel="true"/>
@@ -94,6 +94,9 @@
<OnLoad>
FishingBuddy.Extravaganza.OnLoad();
</OnLoad>
<OnShow>
FishingBuddy.Extravaganza.OnShow();
</OnShow>
<OnEvent>
FishingBuddy.Extravaganza.OnEvent();
</OnEvent>
@@ -102,5 +105,12 @@
</OnUpdate>
</Scripts>
</Frame>
<Frame name="FishingExtravaganzaPOIUpdate" hidden="true">
<Scripts>
<OnUpdate>
FishingBuddy.Extravaganza.POI_OnUpdate(arg1);
</OnUpdate>
</Scripts>
</Frame>
</Ui>
+345 -80
View File
@@ -3,11 +3,21 @@
-- Everything you wanted support for in your fishing endeavors
local gotSetupDone = false;
local lastVersion;
local playerName;
local realmName;
local DEFAULT_MINIMAP_POSITION = 256;
local function tablecount(tab)
local n = 0;
for k,v in tab do
n = n + 1;
end
return n;
end
FishingBuddy.tablecount = tablecount;
FishingBuddy.IsLoaded = function()
return gotSetupDone;
end
@@ -28,8 +38,16 @@ FishingBuddy.SavePlayerInfo = function()
end
end
local Setup = {};
Setup.CheckPlayerInfo = function()
local FishingInit = {};
-- Fill in the player name and realm
FishingInit.SetupNameInfo = function()
playerName = UnitName("player");
realmName = GetRealmName();
return playerName, realmName;
end
FishingInit.CheckPlayerInfo = function()
local tabs = { "Settings", "Outfit", "WasWearing" };
if ( not FishingBuddy_Player ) then
FishingBuddy_Player = {};
@@ -67,7 +85,7 @@ Setup.CheckPlayerInfo = function()
end
end
Setup.CheckPlayerSetting = function(setting, defaultvalue)
FishingInit.CheckPlayerSetting = function(setting, defaultvalue)
if ( not FishingBuddy_Player["Settings"] ) then
FishingBuddy_Player["Settings"] = { };
end
@@ -76,7 +94,7 @@ Setup.CheckPlayerSetting = function(setting, defaultvalue)
end
end
Setup.CheckGlobalSetting = function(setting, defaultvalue)
FishingInit.CheckGlobalSetting = function(setting, defaultvalue)
if ( not FishingBuddy_Info[setting] ) then
if ( not defaultvalue ) then
FishingBuddy_Info[setting] = {};
@@ -86,7 +104,7 @@ Setup.CheckGlobalSetting = function(setting, defaultvalue)
end
end
Setup.CheckRealm = function()
FishingInit.CheckRealm = function()
local tabs = { "Settings", "Outfit", "WasWearing" };
for _,tab in tabs do
if ( FishingBuddy_Info[tab] ) then
@@ -119,7 +137,23 @@ Setup.CheckRealm = function()
end
end
Setup.UpdateFishingDB1 = function()
FishingInit.SetupZoneMapping = function()
local continentNames = { GetMapContinents() };
if ( not FishingBuddy_Info["ZoneIndex"] ) then
FishingBuddy_Info["ZoneIndex"] = {};
for idx,name in continentNames do
local zones = { GetMapZones(idx) };
for jdx,zone in zones do
tinsert(FishingBuddy_Info["ZoneIndex"], zone);
end
end
end
if ( not FishingBuddy_Info["SubZones"] ) then
FishingBuddy_Info["SubZones"] = {};
end
end
FishingInit.UpdateFishingDB1 = function()
local version = FishingBuddy_Info["Version"];
if ( not version ) then
version = 7700; -- be really old
@@ -262,19 +296,133 @@ Setup.UpdateFishingDB1 = function()
FishingBuddy_Info["Locations"] = nil;
end
Setup.UpdateFishingDB2 = function()
FishingInit.FixupNumericZones = function()
-- fix bad zones from FishSchools update bug
local badones;
local biggest = 0;
local hardfix = false;
for zidx,zone in FishingBuddy_Info["ZoneIndex"] do
if ( type(zone) ~= "string" ) then
if ( not badones ) then
badones = {};
end
badones[zidx] = zone;
if ( biggest < zidx ) then
biggest = zidx;
end
elseif ( biggest > 0 ) then
-- found a string after we started seeing numbers
hardfix = true;
end
end
if ( badones ) then
local fs = FishingBuddy_Info["FishingSkill"];
local fh = FishingBuddy_Info["FishingHoles"];
for bidx,gidx in badones do
if ( fs[bidx] ) then
for sidx,skill in fs[bidx] do
local z = FishingBuddy_Info["ZoneIndex"][gidx];
local sz = FishingBuddy_Info["SubZones"][gidx][sidx];
FishingBuddy.SetZoneLevel(z, sz, fs[bidx][gidx]);
end
end
if ( fh[bidx] ) then
if ( not fh[gidx] ) then
fh[gidx] = {};
end
for sidx,fishies in fh[bidx] do
for id,cnt in fishies do
if ( fh[gidx] and
fh[gidx][sidx] and
fh[gidx][sidx][id] ) then
fh[gidx][sidx][id] = fh[gidx][sidx][id] + cnt;
else
if ( not fh[gidx] ) then
fh[gidx] = {};
end
if ( not fh[gidx][sidx] ) then
fh[gidx][sidx] = {};
end
fh[gidx][sidx][id] = cnt;
end
end
end
end
end
if ( not hardfix ) then
-- these are already in numerical order
local count = table.getn(FishingBuddy_Info["ZoneIndex"]);
for idx=count,1,-1 do
if ( badones[idx] ) then
table.remove(FishingBuddy_Info["ZoneIndex"], idx);
FishingBuddy_Info["FishingSkill"][idx] = nil;
FishingBuddy_Info["FishingHoles"][idx] = nil;
FishingBuddy_Info["SubZones"][idx] = nil;
end
end
else
local fixers = { "FishingSkill", "FishingHoles", "SubZones" };
-- okay, this gonna be tough
-- strip out the numbers after the string
while ( badones ) do
local count = table.getn(FishingBuddy_Info["ZoneIndex"]);
local gotstring = false;
local sidx;
for idx=count,1,-1 do
if ( not gotstring ) then
if (type(fh[idx]) ~= "string" ) then
table.remove(FishingBuddy_Info["ZoneIndex"], idx);
for _,k in fixers do
FishingBuddy_Info[k][idx] = nil;
end
badones[idx] = nil;
else
gotstring = true;
sidx = idx;
end
end
end
if ( next(badones) == nil) then
badones = nil;
end
if ( sidx and sidx ~= count ) then
count = table.getn(FishingBuddy_Info["ZoneIndex"]);
local fidx = 1;
while ( fidx < count and type(FishingBuddy_Info["ZoneIndex"][fidx] == "string" ) ) do
fidx = fidx + 1;
end
for k,v in FishingBuddy_Info["ZoneIndex"][sidx] do
FishingBuddy_Info["ZoneIndex"][fidx][k] = v;
end
FishingBuddy_Info["ZoneIndex"][sidx] = nil;
for _,f in fixers do
for k,v in FishingBuddy_Info[f][sidx] do
FishingBuddy_Info[f][fidx][k] = v;
end
FishingBuddy_Info[f][sidx] = nil;
end
else
-- if it's not already nil, we're in trouble
badones = nil;
end
end
end
end
end
FishingInit.UpdateFishingDB2 = function()
local version = FishingBuddy_Info["Version"];
if ( not version ) then
version = 7700; -- be really old
end
-- track the weekly fish that got missed at the end of the year
if ( version < 8509 ) then
if ( version < 8509 and FishingBuddy.ByFishie ) then
local ft = FishingBuddy_Info["FishTracking"]["WEEKLY"];
for id,what in ft do
if ( FishingBuddy.ByFishie[id] ) then
local total = 0;
for subzone,count in FishingBuddy.ByFishie[id] do
for _,count in FishingBuddy.ByFishie[id] do
total = total + count;
end
local tracked = 0;
@@ -290,11 +438,133 @@ Setup.UpdateFishingDB2 = function()
end
end
-- version < 8700
local needCollapse = true;
if ( FishingBuddy_Info["Schools"] ) then
-- convert zone coords into minimap coords
local STVInfo = { scale = 0.18128603034401,
xoffset = 0.39145470225916, yoffset = 0.79412224886668 };
local tastyfish_id = 19807;
local addschool = FishingBuddy.Schools.AddFishingSchool;
local zone = FishingBuddy.STVZONENAME;
for _,pools in FishingBuddy_Info["Schools"] do
for idx,entry in pools do
local t;
local x = (entry.x - STVInfo.xoffset) / STVInfo.scale;
local y = (entry.y - STVInfo.yoffset) / STVInfo.scale;
addschool(FishingBuddy.SCHOOL_TASTY, 19807, zone, x, y);
end
end
FishingBuddy_Info["Schools"] = nil;
needCollapse = nil;
end
if ( version < 8701 ) then
FishingBuddy.SetSetting("FastCast", nil);
end
if ( version < 8703 ) then
local azi = FishingBuddy.AddZoneIndex;
if ( FishingBuddy_Info["FishingSkill"] ) then
didsomething = false;
local fixit = false;
for zone,info in FishingBuddy_Info["FishingSkill"] do
if ( type(zone) == "string" ) then
fixit = true;
break;
end
end
if ( fixit ) then
local newskills = {};
for zone,info in FishingBuddy_Info["FishingSkill"] do
local zidx = azi(zone);
newskills[zidx] = {};
for subzone,count in info do
local _,sidx = azi(zone,subzone);
newskills[zidx][sidx] = count;
end
FishingBuddy_Info["FishingSkill"][zone] = nil;
end
FishingBuddy_Info["FishingSkill"] = newskills;
end
end
if ( FishingBuddy_Info["FishingHoles"] ) then
local fixit = false;
for zone,info in FishingBuddy_Info["FishingHoles"] do
if ( type(zone) == "string" ) then
fixit = true;
break;
end
end
if ( fixit ) then
local newholes = {};
for zone,info in FishingBuddy_Info["FishingHoles"] do
local zidx = azi(zone);
newholes[zidx] = {};
for subzone,stuff in info do
local _,sidx = azi(zone,subzone);
newholes[zidx][sidx] = stuff;
end
FishingBuddy_Info["FishingHoles"][zone] = nil;
end
FishingBuddy_Info["FishingHoles"] = newholes;
end
end
end
if ( version < 8704 and needCollapse ) then
if ( FishingBuddy_Info["FishSchools"] ) then
local azi = FishingBuddy.AddZoneIndex;
local fixit = false;
for zone,info in FishingBuddy_Info["FishSchools"] do
if ( type(zone) == "string" ) then
fixit = true;
break;
end
end
if ( fixit ) then
local newschools = {};
for zone,info in FishingBuddy_Info["FishSchools"] do
local zidx = azi(zone);
newschools[zidx] = {};
for idx,entry in info do
tinsert(newschools[zidx], entry);
end
FishingBuddy_Info["FishSchools"][zone] = nil;
end
FishingBuddy_Info["FishSchools"] = newschools;
end
end
FishingBuddy.Schools.CollapseHoles();
end
if ( version < 8707 ) then
FishingInit.FixupNumericZones();
end
if ( version < 8712 ) then
local ft = FishingBuddy_Info["FishTracking"];
for how,info in ft do
for id,what in ft[how] do
what.plot = 1;
end
end
end
-- save this for other pieces that might need to update
lastVersion = version;
FishingBuddy_Info["Version"] = FishingBuddy.CURRENTVERSION;
end
FishingBuddy.GetLastVersion = function()
return lastVersion;
end
-- Based on code in QuickMountEquip
Setup.HookFunction = function(func, newfunc)
FishingInit.HookFunction = function(func, newfunc)
local oldValue = getglobal(func);
if ( oldValue ~= getglobal(newfunc) ) then
setglobal(func, getglobal(newfunc));
@@ -305,25 +575,29 @@ end
-- set up alternate view of fish data. do this as startup to
-- lower overall dynamic hit when loading the window
Setup.SetupByFishie = function()
FishingInit.SetupByFishie = function()
if ( not FishingBuddy.ByFishie ) then
local fh = FishingBuddy_Info["FishingHoles"];
local ff = FishingBuddy_Info["Fishies"];
FishingBuddy.ByFishie = { };
FishingBuddy.SortedFishies = { };
for zone in fh do
for subzone in fh[zone] do
for id in fh[zone][subzone] do
local quantity = fh[zone][subzone][id];
for zidx in fh do
local zone = FishingBuddy_Info["ZoneIndex"][zidx];
for sidx in fh[zidx] do
local subzone = FishingBuddy_Info["SubZones"][zidx][sidx];
local indexer = zidx.."."..sidx;
for id in fh[zidx][sidx] do
local quantity = fh[zidx][sidx][id];
if ( not FishingBuddy.ByFishie[id] ) then
FishingBuddy.ByFishie[id] = { };
tinsert(FishingBuddy.SortedFishies,
{ text = ff[id].name, id = id });
end
if ( not FishingBuddy.ByFishie[id][subzone] ) then
FishingBuddy.ByFishie[id][subzone] = quantity;
if ( not FishingBuddy.ByFishie[id][indexer] ) then
FishingBuddy.ByFishie[id][indexer] = quantity;
else
FishingBuddy.ByFishie[id][subzone] = FishingBuddy.ByFishie[id][subzone] + quantity;
FishingBuddy.ByFishie[id][indexer] = FishingBuddy.ByFishie[id][indexer] + quantity;
end
end
end
@@ -332,85 +606,59 @@ Setup.SetupByFishie = function()
end
end
Setup.InitSortHelpers = function()
FishingInit.InitSortHelpers = function()
local fh = FishingBuddy_Info["FishingHoles"];
FishingBuddy.SortedZones = {};
FishingBuddy.SortedByZone = {};
FishingBuddy.SortedSubZones = {};
for zone in fh do
for zidx,zone in FishingBuddy_Info["ZoneIndex"] do
tinsert(FishingBuddy.SortedZones, zone);
FishingBuddy.SortedByZone[zone] = {};
for subzone in fh[zone] do
tinsert(FishingBuddy.SortedByZone[zone], subzone);
tinsert(FishingBuddy.SortedSubZones, subzone);
if ( fh[zidx] ) then
for sidx in fh[zidx] do
local subzone = FishingBuddy_Info["SubZones"][zidx][sidx];
tinsert(FishingBuddy.SortedByZone[zone], subzone);
tinsert(FishingBuddy.SortedSubZones, subzone);
end
table.sort(FishingBuddy.SortedByZone[zone]);
end
table.sort(FishingBuddy.SortedByZone[zone]);
end
table.sort(FishingBuddy.SortedZones);
table.sort(FishingBuddy.SortedSubZones);
end
Setup.EnhanceSoundDefaults = function()
Setup.CheckPlayerSetting("EnhanceSoundSoundVolume", 1.0);
Setup.CheckPlayerSetting("EnhanceSoundMusicVolume", 0.0);
Setup.CheckPlayerSetting("EnhanceSoundAmbienceVolume", 0.0);
end
Setup.InitSettings = function()
FishingInit.InitSettings = function()
if( not FishingBuddy_Info ) then
FishingBuddy_Info = { };
end
-- global stuff
Setup.UpdateFishingDB1();
Setup.CheckRealm();
FishingInit.SetupZoneMapping();
FishingInit.UpdateFishingDB1();
FishingInit.CheckRealm();
Setup.CheckGlobalSetting("ImppDBLoaded", 0);
Setup.CheckGlobalSetting("FishInfo2", 0);
Setup.CheckGlobalSetting("DataFish", 0);
Setup.CheckGlobalSetting("FishingHoles");
Setup.CheckGlobalSetting("FishingSkill");
Setup.CheckGlobalSetting("Fishies");
FishingInit.CheckGlobalSetting("ImppDBLoaded", 0);
FishingInit.CheckGlobalSetting("FishInfo2", 0);
FishingInit.CheckGlobalSetting("DataFish", 0);
FishingInit.CheckGlobalSetting("FishingHoles");
FishingInit.CheckGlobalSetting("FishingSkill");
FishingInit.CheckGlobalSetting("Fishies");
FishingInit.CheckGlobalSetting("HiddenFishies");
Setup.CheckPlayerInfo();
FishingInit.CheckPlayerInfo();
-- per user stuff
for _,option in FishingBuddy.OPTIONS do
local setting = option.default;
if ( option.check and option.checkfail ) then
if ( not option.check() ) then
setting = option.checkfail;
end
end
Setup.CheckPlayerSetting(option.name, setting);
if ( not FishingBuddy_Player["Settings"] ) then
FishingBuddy_Player["Settings"] = { };
end
-- setting not on option pane (or not checkboxes)
Setup.CheckPlayerSetting("ShowLocationZones", 1);
Setup.CheckPlayerSetting("GroupByLocation", 1);
-- titan panel support
Setup.CheckPlayerSetting("TitanClickToSwitch", 1);
-- InfoBar support
Setup.CheckPlayerSetting("InfoBarClickToSwitch", 1);
-- minimap button support
Setup.CheckPlayerSetting("MinimapClickToSwitch", 1);
Setup.CheckPlayerSetting("MinimapButtonPosition", DEFAULT_MINIMAP_POSITION);
-- Option key casting
Setup.CheckPlayerSetting("EasyCastKeys", FishingBuddy.KEYS_NONE);
Setup.CheckPlayerSetting("SuitUpKeys", FishingBuddy.KEYS_NONE);
Setup.EnhanceSoundDefaults();
if ( FishingBuddy.InitTracking ) then
FishingBuddy.InitTracking();
end
Setup.SetupByFishie();
Setup.UpdateFishingDB2();
Setup.InitSortHelpers();
FishingInit.UpdateFishingDB2();
FishingInit.SetupByFishie();
FishingInit.InitSortHelpers();
end
Setup.RegisterMyAddOn = function()
FishingInit.RegisterMyAddOn = function()
-- Register the addon in myAddOns
if (myAddOnsFrame_Register) then
local details = {
@@ -438,31 +686,48 @@ Setup.RegisterMyAddOn = function()
end
end
Setup.RegisterHandlers = function()
FishingInit.RegisterHandlers = function()
temp = ToggleMinimap;
if ( Setup.HookFunction("ToggleMinimap", "FishingBuddy_ToggleMinimap") ) then
if ( FishingInit.HookFunction("ToggleMinimap", "FishingBuddy_ToggleMinimap") ) then
FishingBuddy.SavedToggleMinimap = temp;
end
FishingBuddy.TrapWorldMouse()
end
local WOW = {};
FishingBuddy.WOWVersion = function()
return WOW.major, WOW.minor, WOW.dot;
end
FishingBuddy.Initialize = function()
-- Set everything up, then dump the code we don't need anymore
playerName, realmName = FishingBuddy.SetupNameInfo();
if ( Setup ) then
playerName, realmName = FishingInit.SetupNameInfo();
if ( FishingInit ) then
if ( GetBuildInfo ) then
local version, buildnum, builddate = GetBuildInfo();
local v, b, d = GetBuildInfo();
WOW.build = b;
WOW.date = d;
local s,e,maj,min,dot = string.find("(%d+).(%d+).(%d+)", v);
WOW.major = tonumber(maj);
WOW.minor = tonumber(min);
WOW.dot = tonumber(dot);
else
FishingBuddy.Is10900 = true;
end
Setup.RegisterHandlers();
Setup.InitSettings();
FishingInit.RegisterHandlers();
FishingInit.InitSettings();
-- register with myAddOn
Setup.RegisterMyAddOn();
FishingInit.RegisterMyAddOn();
-- clean out some beta trash
FishingBuddy.SetSetting("ClockOffset", nil);
FishingBuddy.Schools.Init();
gotSetupDone = true;
FishingBuddy.WatchUpdate();
-- debugging state
FishingBuddy.Debugging = FishingBuddy.GetSetting("FishDebug");
-- we don't need these functions anymore, gc 'em
Setup = nil;
FishingInit = nil;
end
end
+382 -244
View File
@@ -10,7 +10,7 @@ local LocationLineSelected = 0;
local LocationLines = {};
local LocationLastLine = 1;
local function MakeInfo(line, level, collapsible, expanded, hasicon, text, extra, index, id)
local function MakeInfo(line, level, collapsible, expanded, hasicon, text, tipinfo, index, id)
if ( not LocationLines[line] ) then
LocationLines[line] = {};
end
@@ -19,7 +19,7 @@ local function MakeInfo(line, level, collapsible, expanded, hasicon, text, extra
LocationLines[line].expanded = expanded;
LocationLines[line].hasicon = hasicon;
LocationLines[line].text = text;
LocationLines[line].extra = extra;
LocationLines[line].tipinfo = tipinfo;
if ( index ) then
LocationLines[line].index = index;
else
@@ -37,25 +37,43 @@ local function CountLocationLines()
local info = LocationLines[j];
j = j + 1;
if ( info and info.valid ) then
linecount = linecount + 1;
linecount = linecount + 1;
if ( info.collapsible and not info.expanded ) then
local i2 = LocationLines[j];
while ( i2 and (i2.level > info.level) ) do
j = j + 1;
i2 = LocationLines[j];
while ( i2 and i2.valid and (i2.level > info.level) ) do
j = j + 1;
i2 = LocationLines[j];
end
end
end
end
end
-- there's a zero-based vs. one-based bug here, somewhere
if ( linecount > NUM_THINGIES_DISPLAYED and
limit >= table.getn(LocationLines)) then
linecount = linecount + 1;
if ( linecount > 0 ) then
-- I have no idea why this works this way at all
if ( linecount > NUM_THINGIES_DISPLAYED and linecount < limit ) then
return linecount+1;
else
return linecount;
end
else
return 0;
end
-- FishingBuddy.Debug("Count "..linecount.." limit "..limit);
return linecount;
end
local function FishCount(zone, subzone)
local zidx, sidx = FishingBuddy.GetZoneIndex(zone, subzone);
local count = 0;
local total = 0;
local fh = FishingBuddy_Info["FishingHoles"];
if( fh[zidx] and fh[zidx][sidx] ) then
for fishie in fh[zidx][sidx] do
count = count + 1;
total = total + fh[zidx][sidx][fishie];
end
end
return count, total;
end
FishingBuddy.FishCount = FishCount;
local function FishiesChanged()
local fh = FishingBuddy_Info["FishingHoles"];
local ff = FishingBuddy_Info["Fishies"];
@@ -65,52 +83,56 @@ local function FishiesChanged()
for i=1,fishcount,1 do
local fishid = FishingBuddy.SortedFishies[i].id;
local fishname = ff[fishid].name;
local fishname = FishingBuddy.StripRaw(ff[fishid].name);
local locsort = {};
local total = 0;
for zone in FishingBuddy.ByFishie[fishid] do
if ( not zonetotals[zone] ) then
local fi = nil;
for z in fh do
if ( fh[z][zone] ) then
fi = fh[z][zone];
break;
end
end
if ( fi ) then
local tot = 0;
for f in fi do
tot = tot + fi[f];
end
zonetotals[zone] = tot;
for indexer,count in FishingBuddy.ByFishie[fishid] do
local _,_,zidx,sidx = string.find(indexer, "(%d+).(%d+)");
zidx = tonumber(zidx);
sidx = tonumber(sidx);
if ( not zonetotals[zidx] ) then
if ( fh[zidx] and fh[zidx][sidx] ) then
local tot = 0;
local fi = fh[zidx][sidx];
for f in fi do
tot = tot + fi[f];
end
zonetotals[zidx] = tot;
end
end
local info = {};
if ( FishingBuddy_Info["SubZones"][zidx] ) then
if ( not FishingBuddy_Info["SubZones"][zidx][sidx] ) then
info.text = FishingBuddy_Info["ZoneIndex"][zidx];
else
info.text = FishingBuddy_Info["SubZones"][zidx][sidx];
end
else
info.text = FishingBuddy.UNKNOWN;
end
local count = FishingBuddy.ByFishie[fishid][zone];
local info = {};
info.text = zone;
info.count = count;
info.total = zonetotals[zone];
if ( not info.total or info.total == 0) then
info.total = 1;
end
tinsert(locsort, info);
total = total + count;
info.count = count;
info.total = zonetotals[zidx];
if ( not info.total or info.total == 0) then
info.total = 1;
end
tinsert(locsort, info);
total = total + count;
end
local extra = " ("..total.." total";
local tipinfo = {};
tipinfo.total = total;
if ( ff[fishid].level ) then
extra = extra..", "..ff[fishid].level;
tipinfo.level = ff[fishid].level;
end
extra = extra..")";
MakeInfo(line, 0, true, true, true, fishname, extra, nil, fishid);
line = line + 1;
FishingBuddy.FishSort(locsort);
for j=1,table.getn(locsort),1 do
local zone = locsort[j].text;
local amount = locsort[j].count;
local total = locsort[j].total;
local percent = format("%.1f", ( amount / total ) * 100);
MakeInfo(line, 1, false, false, false, zone, " ("..amount..", "..percent.."%)");
line = line + 1;
local zone = locsort[j].text;
local amount = locsort[j].count;
local total = locsort[j].total;
local percent = format(" (%.1f%%)", ( amount / total ) * 100);
MakeInfo(line, 1, false, false, false, zone..percent, { amount = amount, total = total, title = zone });
line = line + 1;
end
end
LocationLastLine = line;
@@ -124,38 +146,46 @@ local function BothLocationsChanged()
local zonecount = table.getn(sorted);
for i=1,zonecount,1 do
local zone = sorted[i];
local where = zone;
MakeInfo(line, 0, true, true, false, zone, nil, where);
line = line + 1;
local subsorted = FishingBuddy.SortedByZone[zone];
local subcount = table.getn(subsorted);
for s=1,subcount,1 do
local subzone = subsorted[s];
local count, total = FishingBuddy.FishCount(zone, subzone);
where = zone.."."..subzone;
local extra = " ("..count.." types, "..total.." total)";
if ( FishingBuddy_Info["FishingSkill"][zone] and FishingBuddy_Info["FishingSkill"][zone][subzone] ) then
extra = extra.." ["..FishingBuddy_Info["FishingSkill"][zone][subzone].."]";
end
if ( fh[zone][subzone] ) then
MakeInfo(line, 1, true, true, false, subzone, extra, where);
line = line + 1;
local fishsort = {};
for fishid in fh[zone][subzone] do
local info = {};
info.id = fishid;
info.text = ff[fishid].name;
info.count = fh[zone][subzone][fishid];
tinsert(fishsort, info);
end
FishingBuddy.FishSort(fishsort);
for j=1,table.getn(fishsort),1 do
local fishie = fishsort[j].text;
local id = fishsort[j].id;
local amount = fishsort[j].count;
local percent = format("%.1f", ( amount / total ) * 100);
MakeInfo(line, 2, false, false, true, fishie, " ("..percent.."%)", nil, id);
line = line + 1;
local zidx = FishingBuddy.GetZoneIndex(zone);
if ( fh[zidx] ) then
local where = zone;
MakeInfo(line, 0, true, true, false, zone, nil, where);
line = line + 1;
local subsorted = FishingBuddy.SortedByZone[zone];
local subcount = table.getn(subsorted);
for s=1,subcount,1 do
local subzone = subsorted[s];
local count, total = FishCount(zone, subzone);
if ( total > 0 ) then
local zidx, sidx = FishingBuddy.GetZoneIndex(zone, subzone);
where = zone.."."..subzone;
local tipinfo = {};
tipinfo.types = count;
tipinfo.total = total;
if ( FishingBuddy_Info["FishingSkill"][zidx] and FishingBuddy_Info["FishingSkill"][zidx][sidx] ) then
tipinfo.skill = FishingBuddy_Info["FishingSkill"][zidx][sidx];
end
if ( fh[zidx][sidx] ) then
MakeInfo(line, 1, true, true, false, subzone, tipinfo, where);
line = line + 1;
local fishsort = {};
for fishid in fh[zidx][sidx] do
local info = {};
info.id = fishid;
info.text = FishingBuddy.StripRaw(ff[fishid].name);
info.count = fh[zidx][sidx][fishid];
tinsert(fishsort, info);
end
FishingBuddy.FishSort(fishsort);
for j=1,table.getn(fishsort),1 do
local fishie = fishsort[j].text;
local id = fishsort[j].id;
local amount = fishsort[j].count;
local percent = format(" (%.1f%%)", ( amount / total ) * 100);
MakeInfo(line, 2, false, false, true, fishie..percent, { amount = amount, total = total, title = fishie }, nil, id);
line = line + 1;
end
end
end
end
end
@@ -169,7 +199,7 @@ local function SubZonesChanged()
local mapping = {};
for zone in fh do
for subzone in fh[zone] do
mapping[subzone] = zone;
mapping[subzone] = zone;
end
end
local line = 1;
@@ -177,30 +207,32 @@ local function SubZonesChanged()
for i=1,zonecount,1 do
local subzone = FishingBuddy.SortedSubZones[i];
local zone = mapping[subzone];
local extra = nil;
if ( FishingBuddy_Info["FishingSkill"][zone] and FishingBuddy_Info["FishingSkill"][zone][subzone] ) then
extra = " ["..FishingBuddy_Info["FishingSkill"][zone][subzone].."]";
end
MakeInfo(line, 0, true, true, false, subzone, extra);
line = line + 1;
local zone = mapping[subzone];
local count, total = FishingBuddy.FishCount(zone, subzone);
local fishsort = {};
for fishid in fh[zone][subzone] do
local info = {};
info.id = fishid;
info.text = ff[fishid].name;
info.count = fh[zone][subzone][fishid];
tinsert(fishsort, info);
end
FishingBuddy.FishSort(fishsort);
for j=1,table.getn(fishsort),1 do
local id = fishsort[j].id;
local fishie = fishsort[j].text;
local amount = fishsort[j].count;
local percent = format("%.1f", ( amount / total ) * 100);
MakeInfo(line, 1, false, false, true, fishie, " ("..percent.."%)", nil, id);
local count, total = FishCount(zone, subzone);
if ( total > 0 ) then
local zidx, sidx = FishingBuddy.GetZoneIndex(zone, subzone);
local tipinfo = nil;
if ( FishingBuddy_Info["FishingSkill"][zidx] and FishingBuddy_Info["FishingSkill"][zidx][sidx] ) then
tipinfo = { skill = FishingBuddy_Info["FishingSkill"][zidx][sidx] };
end
MakeInfo(line, 0, true, true, false, subzone, tipinfo);
line = line + 1;
local fishsort = {};
for fishid in fh[zidx][sidx] do
local info = {};
info.id = fishid;
info.text = FishingBuddy.StripRaw(ff[fishid].name);
info.count = fh[zidx][sidx][fishid];
tinsert(fishsort, info);
end
FishingBuddy.FishSort(fishsort);
for j=1,table.getn(fishsort),1 do
local id = fishsort[j].id;
local fishie = fishsort[j].text;
local amount = fishsort[j].count;
local percent = format(" (%.1f%%)", ( amount / total ) * 100);
MakeInfo(line, 1, false, false, true, fishie..percent, { amount = amount, total = total, title = fishie} , nil, id);
line = line + 1;
end
end
end
LocationLastLine = line;
@@ -209,9 +241,9 @@ end
local function LinesChanged()
if ( FishingBuddy.GetSetting("GroupByLocation") == 1 ) then
if ( FishingBuddy.GetSetting("ShowLocationZones") == 1 ) then
BothLocationsChanged();
BothLocationsChanged();
else
SubZonesChanged();
SubZonesChanged();
end
else
FishiesChanged();
@@ -242,11 +274,11 @@ function FishingLocationsFrame_SetSelection(id, line)
FishingLocationHighlightFrame:Hide();
if info then
if ( info.collapsible ) then
info.expanded = not info.expanded;
info.expanded = not info.expanded;
else
LocationLineSelected = line;
FishingLocationHighlightFrame:SetPoint ( "TOPLEFT" , getglobal("FishingLocations"..id):GetName() , "TOPLEFT" , 5 , 0 )
FishingLocationHighlightFrame:Show()
LocationLineSelected = line;
FishingLocationHighlightFrame:SetPoint ( "TOPLEFT" , getglobal("FishingLocations"..id):GetName() , "TOPLEFT" , 5 , 0 )
FishingLocationHighlightFrame:Show()
end
end
end
@@ -255,7 +287,6 @@ function FishingLocationsFrame_MoveButtonText(i, what)
local relativeTo = "FishingLocations"..i..what;
local textfield = getglobal("FishingLocations"..i.."Text");
textfield:SetPoint("LEFT", relativeTo, "RIGHT", 2, 0);
textfield = getglobal("FishingLocations"..i.."HighlightText");
end
FishingBuddy.Locations.Update = function(forced)
@@ -269,8 +300,12 @@ FishingBuddy.Locations.Update = function(forced)
local offset = FauxScrollFrame_GetOffset(FishingLocsScrollFrame);
FauxScrollFrame_Update( FishingLocsScrollFrame, CountLocationLines(),
NUM_THINGIES_DISPLAYED,
FishingBuddy.Locations.FRAME_THINGIEHEIGHT );
NUM_THINGIES_DISPLAYED,
FishingBuddy.Locations.FRAME_THINGIEHEIGHT,
nil, nil, nil,
FishingLocationHighlightFrame,
230, 230
);
local lastlevel = 0;
FishingLocationHighlightFrame:Hide();
@@ -282,135 +317,198 @@ FishingBuddy.Locations.Update = function(forced)
j = j + 1;
o = o + 1;
if ( info.collapsible and not info.expanded ) then
local i2 = LocationLines[j];
while ( i2 and i2.level > info.level ) do
local i2 = LocationLines[j];
while ( i2 and i2.level > info.level ) do
j = j + 1;
i2 = LocationLines[j];
end
i2 = LocationLines[j];
end
end
end
end
for i = 1,NUM_THINGIES_DISPLAYED,1 do
local locButton = getglobal ( "FishingLocations"..i );
if ( LocationLines[j] ) then
local icon = getglobal("FishingLocations"..i.."Icon");
local icontex = getglobal("FishingLocations"..i.."IconTexture");
local info = LocationLines[j];
local info = LocationLines[j];
if ( info and info.valid ) then
local icon = getglobal("FishingLocations"..i.."Icon");
local icontex = getglobal("FishingLocations"..i.."IconTexture");
locButton.id = i;
locButton.line = j;
local leveloffset = (info.level - lastlevel)*16;
if ( i == 1 ) then
locButton:SetPoint("TOPRIGHT", "FishingLocsScrollFrame", "TOPLEFT", leveloffset, 0);
else
local t = i - 1;
locButton:SetPoint("TOPLEFT", "FishingLocations"..t, "BOTTOMLEFT", leveloffset, 0);
end
lastlevel = info.level;
local leveloffset = (info.level - lastlevel)*16;
if ( i == 1 ) then
locButton:SetPoint("TOPLEFT", leveloffset+25, -100);
else
local t = i - 1;
locButton:SetPoint("TOPLEFT", "FishingLocations"..t, "BOTTOMLEFT", leveloffset, 0);
end
lastlevel = info.level;
local text = info.text;
if text and info.extra then
text = text .. info.extra;
end
local text = info.text;
if text and info.extra then
text = text .. info.extra;
end
locButton.tipinfo = info.tipinfo;
locButton:SetText( text );
icon:ClearAllPoints();
if ( info.collapsible ) then
icon:SetPoint("LEFT", "FishingLocations"..i, "LEFT", 21, 0);
locButton:SetTextColor( 1, 0.82, 0 );
if ( info.expanded ) then
locButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
else
locButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
end
getglobal("FishingLocations"..i.."Highlight"):SetTexture("Interface\\Buttons\\UI-PlusButton-Hilight");
getglobal("FishingLocations"..i):UnlockHighlight();
else
icon:SetPoint("LEFT", "FishingLocations"..i, "LEFT", 3, 0);
locButton:SetTextColor( .5, .5, .5 );
locButton:SetNormalTexture("");
getglobal("FishingLocations"..i.."Highlight"):SetTexture("");
-- Place the highlight and lock the highlight state
if ( LocationLineSelected == j ) then
FishingLocationHighlightFrame:SetPoint("TOPLEFT", "FishingLocations"..i, "TOPLEFT", 21, 0);
FishingLocationHighlightFrame:Show();
locButton:LockHighlight();
else
locButton:UnlockHighlight();
end
end
icon:ClearAllPoints();
if ( info.collapsible ) then
icon:SetPoint("LEFT", "FishingLocations"..i, "LEFT", 21, 0);
locButton:SetTextColor( 1, 0.82, 0 );
if ( info.expanded ) then
locButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
else
locButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
end
getglobal("FishingLocations"..i.."Highlight"):SetTexture("Interface\\Buttons\\UI-PlusButton-Hilight");
getglobal("FishingLocations"..i):UnlockHighlight();
else
icon:SetPoint("LEFT", "FishingLocations"..i, "LEFT", 3, 0);
locButton:SetTextColor( .5, .5, .5 );
locButton:SetNormalTexture("");
getglobal("FishingLocations"..i.."Highlight"):SetTexture("");
-- Place the highlight and lock the highlight state
if ( LocationLineSelected == j ) then
FishingLocationHighlightFrame:SetPoint("TOPLEFT", "FishingLocations"..i, "TOPLEFT", 21, 0);
FishingLocationHighlightFrame:Show();
locButton:LockHighlight();
else
locButton:UnlockHighlight();
end
end
locButton.tooltip = nil;
if ( info.hasicon ) then
local item, texture, _, _, _ = FishingBuddy.GetFishie(info.id);
locButton.item = item;
locButton.name = info.text;
if( texture ) then
icontex:SetTexture(texture);
icon:Show();
icontex:Show();
locButton.tooltip = nil;
if ( info.hasicon ) then
local item, texture, _, _, _ = FishingBuddy.GetFishie(info.id);
locButton.item = item;
locButton.fishid = info.id;
locButton.name = info.text;
if( texture ) then
icontex:SetTexture(texture);
icon:Show();
icontex:Show();
end
FishingLocationsFrame_MoveButtonText(i, "Icon");
else
locButton.item = nil;
locButton.fishid = nil;
locButton.name = nil;
icontex:SetTexture("");
icontex:Hide();
icon:Hide();
FishingLocationsFrame_MoveButtonText(i, "Highlight");
end
if ( info.tipinfo ) then
local color = FishingBuddy.Colors.GREEN;
if ( locButton.item and
not FishingBuddy.IsLinkableItem(locButton.item) ) then
color = FishingBuddy.Colors.RED;
end
FishingLocationsFrame_MoveButtonText(i, "Icon");
else
locButton.item = nil;
locButton.name = nil;
icontex:SetTexture("");
icontex:Hide();
icon:Hide();
FishingLocationsFrame_MoveButtonText(i, "Highlight");
end
locButton:Show();
j = j + 1;
if ( info.collapsible and not info.expanded ) then
local i2 = LocationLines[j];
while ( i2 and (i2.level > info.level) ) do
j = j + 1;
i2 = LocationLines[j];
end
end
text = text.."|c"..color.."*|r";
end
locButton:SetText( text );
locButton:Show();
j = j + 1;
if ( info.collapsible and not info.expanded ) then
local i2 = LocationLines[j];
while ( i2 and (i2.level > info.level) ) do
j = j + 1;
i2 = LocationLines[j];
end
end
else
locButton:Hide();
locButton:Hide();
locButton.id = nil;
locButton.line = nil;
end
end
if LocationLines then
if ( LocationLines ) then
-- Set the expand/collapse all button texture
local numHeaders = 0;
local notExpanded = 0;
for i=1,table.getn(LocationLines),1 do
local j = i + offset;
local info = LocationLines[j];
if ( info and info.collapsible ) then
numHeaders = numHeaders + 1;
if ( not info.expanded ) then
notExpanded = notExpanded + 1;
end
end
local j = i + offset;
local info = LocationLines[j];
if ( info and info.collapsible ) then
numHeaders = numHeaders + 1;
if ( not info.expanded ) then
notExpanded = notExpanded + 1;
end
end
end
FishingLocationsCollapseAllButton:Show();
-- If all headers are not expanded then show collapse button, otherwise show the expand button
if ( notExpanded ~= numHeaders ) then
Collapsed = false;
FishingLocationsCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
Collapsed = false;
FishingLocationsCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
else
Collapsed = true;
FishingLocationsCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
Collapsed = true;
FishingLocationsCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
end
else
FishingLocationsCollapseAllButton:Hide();
end
end
local function TrackFishToggle(fishid, how)
local tab = FishingBuddy_Info["FishTracking"][how];
if ( not tab[fishid] ) then
local ff = FishingBuddy_Info["Fishies"];
FishingBuddy.TrackThis(how, fishid, ff[fishid].color, ff[fishid].name);
else
if ( not tab[fishid].nevermore ) then
tab[fishid].nevermore = true;
else
tab[fishid].nevermore = nil;
end
end
end
local function MakeTrackFishToggle(fishid, how)
local id = fishid;
local h = how;
return function() TrackFishToggle(id, h); end;
end
local function TrackFishEntry(fishid, how)
local fi = FishingBuddy_Info["FishTracking"];
local info = {};
info.text = FishingBuddy["TRACKFISH"..how];
info.func = MakeTrackFishToggle(fishid, how);
info.checked = ( fi[how][fishid] and not fi[how][fishid].nevermore );
return info;
end
local function FishOptionsInitialize()
local menu = getglobal("FishingBuddyLocationsMenu");
if ( menu.fishid ) then
local fishid = menu.fishid;
local ff = FishingBuddy_Info["Fishies"];
UIDropDownMenu_AddButton(TrackFishEntry(fishid, "HOURLY"));
UIDropDownMenu_AddButton(TrackFishEntry(fishid, "WEEKLY"));
local info = {};
info.text = FishingBuddy.HIDEINWATCHER;
info.func = FishingBuddy.WatchFrame.MakeToggle(fishid);
info.checked = ( not FishingBuddy_Info["HiddenFishies"][fishid] );
UIDropDownMenu_AddButton(info);
end
end
FishingBuddy.Locations.Button_OnClick = function(button)
if ( button == "LeftButton" ) then
if( IsShiftKeyDown() and this.item ) then
FishingBuddy.ChatLink(this.item, this.name, this.color);
FishingBuddy.ChatLink(this.item, this.name, this.color);
elseif ( this.id and this.line ) then
FishingLocationsFrame_SetSelection(this.id, this.line);
FishingBuddy.Locations.Update();
FishingLocationsFrame_SetSelection(this.id, this.line);
FishingBuddy.Locations.Update();
end
elseif ( this.fishid and button == "RightButton" ) then
local menu = getglobal("FishingBuddyLocationsMenu");
menu.fishid = this.fishid;
UIDropDownMenu_Initialize(menu, FishOptionsInitialize, "MENU");
FishingBuddy.ToggleDropDownMenu(1, nil, menu, this, 0, 0);
end
end
@@ -427,36 +525,77 @@ function FishingLocationsCollapseAllButton_OnClick()
end
FishingBuddy.Locations.Button_OnEnter = function()
if( GameTooltip.finished ) then
if( GameTooltip.locbutfini ) then
return;
end
if( this.item or this.tooltip ) then
if ( this.item or this.tooltip or this.tipinfo ) then
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
if ( this.item and this.item ~= "" ) then
local link = "item:"..this.item;
local n,l,_,_,_,_,_,_ = GetItemInfo(link);
if ( n and l ) then
GameTooltip:SetHyperlink(link);
else
this.tooltip = {}
this.tooltip[1] = { ["text"] = this.name };
this.tooltip[2] = { ["text"] = FishingBuddy.NOTLINKABLE, ["r"] = 1.0, ["g"] = 0, ["b"] = 0 };
FishingBuddy.AddTooltip(this.tooltip);
this.item = nil;
end
elseif ( this.tooltip ) then
FishingBuddy.AddTooltip(this.tooltip, 1, 1, 1);
end
GameTooltip.finished = 1;
GameTooltip:Show();
end
local gottitle;
if( this.item or this.tooltip ) then
gottitle = true;
if ( this.item and this.item ~= "" ) then
if ( FishingBuddy.IsLinkableItem(this.item) ) then
GameTooltip:SetHyperlink("item:"..this.item);
else
this.tooltip = {}
this.tooltip[1] = { ["text"] = this.name };
this.tooltip[2] = { ["text"] = FishingBuddy.NOTLINKABLE, ["r"] = 1.0, ["g"] = 0, ["b"] = 0 };
FishingBuddy.AddTooltip(this.tooltip);
this.item = nil;
end
elseif ( this.tooltip ) then
FishingBuddy.AddTooltip(this.tooltip, 1, 1, 1);
end
end
if ( this.tipinfo ) then
local ti = this.tipinfo;
local line;
if ( ti.title ) then
GameTooltip:AddLine(ti.title);
elseif ( not gottitle ) then
GameTooltip:AddLine(this:GetText());
end
if ( ti.types ) then
GameTooltip:AddLine(string.format(FishingBuddy.FISHTYPES, ti.types));
end
if ( ti.amount ) then
line = string.format(FishingBuddy.CAUGHTTHISMANY, ti.amount);
end
if ( ti.total ) then
if ( not line ) then
line = "";
else
line = line.."/";
end
line = line..string.format(FishingBuddy.CAUGHTTHISTOTAL, ti.total);
end
if ( ti.percent ) then
if ( not line ) then
line = "";
else
line = line.." ";
end
line = line.."("..ti.percent.."%)";
end
if ( line ) then
GameTooltip:AddLine(line, 1, 1, 1);
end
if ( ti.skill ) then
line = string.format(FishingBuddy.MINIMUMSKILL, ti.skill);
GameTooltip:AddLine(line, 0, 1, 0);
end
end
GameTooltip.locbutfini = 1;
GameTooltip:Show();
end
FishingBuddy.Locations.Button_OnLeave = function()
GameTooltip.finished = nil;
if( this.item or this.tooltip ) then
if( this.item or this.tooltip or this.tipinfo ) then
GameTooltip:Hide();
end
GameTooltip.locbutfini = nil;
end
FishingBuddy.Locations.DisplayChanged = function()
@@ -465,17 +604,22 @@ FishingBuddy.Locations.DisplayChanged = function()
FishingBuddy.Locations.Update(true);
end
FishingBuddy.Locations.SwitchDisplay = function()
-- backwards logic check, we're about to change...
local function UpdateButtonDisplay()
if ( FishingBuddy.GetSetting("GroupByLocation") == 1 ) then
FishingLocationsSwitchButton:SetText(FishingBuddy.SHOWLOCATIONS);
FishingBuddyOptionSLZ:Hide();
FishingBuddy.SetSetting("GroupByLocation", 0);
else
FishingLocationsSwitchButton:SetText(FishingBuddy.SHOWFISHIES);
FishingBuddyOptionSLZ:Show();
FishingBuddy.SetSetting("GroupByLocation", 1);
else
FishingLocationsSwitchButton:SetText(FishingBuddy.SHOWLOCATIONS);
FishingBuddyOptionSLZ:Hide();
end
end
FishingBuddy.Locations.SwitchDisplay = function()
-- backwards logic check, we're about to change...
local setting = FishingBuddy.GetSetting("GroupByLocation");
setting = 1 - setting;
FishingBuddy.SetSetting("GroupByLocation", setting);
UpdateButtonDisplay();
FishingBuddy.Locations.DisplayChanged();
end
@@ -495,10 +639,13 @@ FishingBuddy.Locations.OnLoad = function()
FishingBuddyOptionSLZ.name = "ShowLocationZones";
FishingBuddyOptionSLZ.text = FishingBuddy.CONFIG_SHOWLOCATIONZONES_ONOFF;
FishingBuddyOptionSLZ.tooltip = FishingBuddy.CONFIG_SHOWLOCATIONZONES_INFO;
end
FishingBuddy.Locations.OnShow = function()
if ( FishingBuddy.IsLoaded() ) then
UpdateButtonDisplay();
FishingBuddy.Locations.Update();
end
end
@@ -508,19 +655,10 @@ FishingBuddy.Locations.OnEvent = function()
-- this:EnableMouseWheel(0);
end
FishingBuddy.FishCount = function(zone, subzone)
local count = 0;
local total = 0;
local fh = FishingBuddy_Info["FishingHoles"];
if( fh[zone] and fh[zone][subzone] ) then
for fishie in fh[zone][subzone] do
count = count + 1;
total = total + fh[zone][subzone][fishie];
end
end
return count, total;
end
FishingBuddy.Locations.DataChanged = function(zone, subzone, fishie)
FishingLocationsFrame.valid = false;
end
FishingBuddy.ShowLocLine = function(j)
FishingBuddy.Dump(LocationLines[j]);
end
+22 -57
View File
@@ -58,30 +58,6 @@
</Anchor>
</Anchors>
</NormalText>
<HighlightText name="$parentHighlightText" inherits="GameFontHighlight" justifyH="LEFT">
<Size>
<AbsDimension x="0" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentHighlight" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="1"/>
</Offset>
</Anchor>
</Anchors>
</HighlightText>
<DisabledText name="$parentDisabledText" inherits="GameFontDisable" justifyH="LEFT">
<Size>
<AbsDimension x="0" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentHighlight" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="1"/>
</Offset>
</Anchor>
</Anchors>
</DisabledText>
</Button>
<Button name="FishingLocationButtonTemplate" hidden="false" virtual="true">
@@ -136,30 +112,6 @@
</Anchor>
</Anchors>
</NormalText>
<HighlightText name="$parentHighlightText" inherits="GameFontHighlight" justifyH="LEFT">
<Size>
<AbsDimension x="0" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentHighlight" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="1"/>
</Offset>
</Anchor>
</Anchors>
</HighlightText>
<DisabledText name="$parentDisabledText" inherits="GameFontDisable" justifyH="LEFT">
<Size>
<AbsDimension x="0" y="0"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentHighlight" relativePoint="RIGHT">
<Offset>
<AbsDimension x="2" y="1"/>
</Offset>
</Anchor>
</Anchors>
</DisabledText>
<Frames>
<Button name="$parentIcon" hidden="true">
<Size>
@@ -181,7 +133,7 @@
</Frames>
<Scripts>
<OnLoad>
this:SetFrameLevel(this:GetFrameLevel() + 1);
this:RegisterForClicks("LeftButtonDown", "RightButtonUp");
</OnLoad>
<OnEnter>
FishingBuddy.Locations.Button_OnEnter();
@@ -252,6 +204,14 @@
</Layer>
</Layers>
<Frames>
<Frame name="FishingBuddyLocationsMenu" inherits="UIDropDownMenuTemplate">
<Scripts>
<OnLoad>
this:SetFrameLevel(0);
UIDropDownMenu_SetWidth(180);
</OnLoad>
</Scripts>
</Frame>
<Button name="FishingLocationsSwitchButton" inherits="UIPanelButtonTemplate" text="" hidden="false">
<Size>
<AbsDimension x="160" y="21"/>
@@ -358,9 +318,9 @@
</Frames>
</Frame>
<ScrollFrame name="FishingLocsScrollFrame" inherits="FauxScrollFrameTemplate">
<ScrollFrame name="FishingLocsScrollFrame" hidden="false" inherits="FauxScrollFrameTemplate">
<Size>
<AbsDimension x="30" y="332"/>
<AbsDimension x="230" y="332"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT">
@@ -369,11 +329,6 @@
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(FishingBuddy.Locations.FRAME_THINGIEHEIGHT, FishingBuddy.Locations.Update);
</OnVerticalScroll>
</Scripts>
<Layers>
<Layer level="BACKGROUND">
<Texture name="FishingLocationsScrollBarTop" file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
@@ -404,6 +359,12 @@
</Texture>
</Layer>
</Layers>
<Scripts>
<OnVerticalScroll>
GameTooltip:Hide();
FauxScrollFrame_OnVerticalScroll(FishingBuddy.Locations.FRAME_THINGIEHEIGHT, FishingBuddy.Locations.Update);
</OnVerticalScroll>
</Scripts>
</ScrollFrame>
<Frame name="FishingLocationHighlightFrame" hidden="true">
@@ -422,7 +383,11 @@
<Button name="FishingLocations1" inherits="FishingLocationButtonTemplate" hidden="true" id="1">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="FishingLocsScrollFrame" relativePoint="TOPLEFT" />
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="25" y="-100"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="FishingLocations2" inherits="FishingLocationButtonTemplate" hidden="true" id="2">
+137 -19
View File
@@ -7,16 +7,53 @@ FishingBuddy.CheckButton_OnShow = function()
getglobal(this:GetName().."Text"):SetText(this.text);
end
FishingBuddy.CheckButton_OnClick = function()
local function CheckBox_Able(value, button)
local color;
if ( value == 1 ) then
button:Enable();
color = NORMAL_FONT_COLOR;
else
button:Disable();
color = GRAY_FONT_COLOR;
end
getglobal(button:GetName().."Text"):SetTextColor(color.r, color.g, color.b);
end
local function CheckButton_OnClick(checkbox, quiet)
local value = 0;
if ( this:GetChecked() ) then
PlaySound("igMainMenuOptionCheckBoxOff");
if ( not checkbox ) then
checkbox = this;
end
if ( checkbox:GetChecked() ) then
if ( not quiet ) then
PlaySound("igMainMenuOptionCheckBoxOn");
end
value = 1;
else
PlaySound("igMainMenuOptionCheckBoxOn");
if ( not quiet ) then
PlaySound("igMainMenuOptionCheckBoxOff");
end
end
FishingBuddy.SetSetting(checkbox.name, value);
if ( checkbox.update ) then
checkbox.update();
end
if ( checkbox.deps ) then
for button,what in checkbox.deps do
if ( what == "d" ) then
CheckBox_Able(value, button);
elseif ( what == "h" ) then
button:Hide();
if ( value == 1 ) then
if ( not button.visible or button.visible() == 1 ) then
button:Show();
end
end
end
end
end
FishingBuddy.SetSetting(this.name, value);
end
FishingBuddy.CheckButton_OnClick = CheckButton_OnClick;
FishingBuddy.CheckButton_OnEnter = function()
local tooltip = this.tooltip;
@@ -32,30 +69,111 @@ FishingBuddy.CheckButton_OnLeave = function()
end
FishingBuddy.OptionsFrame.Setup = function()
for _, option in FishingBuddy.OPTIONS do
local button = getglobal("FishingBuddyOption_"..option.name);
if (button) then
local showthis = true;
if ( option.check ) then
showthis = option.check();
end
if ( showthis ) then
button:Show();
button.name = option.name;
button.text = option.text;
for name,option in FishingBuddy.OPTIONS do
local button = getglobal("FishingBuddyOption_"..name);
if ( button ) then
if ( option.v ) then
local enable = true;
if ( option.check ) then
enable = option.check();
end
button.name = name;
button.update = option.update;
if ( option.text ) then
button.text = option.text;
else
button.text = "";
end
button.tooltip = option.tooltip;
if ( enable ) then
button:SetChecked(FishingBuddy.GetSetting(name));
CheckBox_Able(1, button);
else
CheckBox_Able(0, button);
end
end
local showit = 1;
if ( option.visible ) then
button.visible = option.visible;
showit = button.visible();
end
if ( showit ) then
button:Show();
else
button:Hide();
end
if ( option.deps ) then
for n,what in option.deps do
local b = getglobal("FishingBuddyOption_"..n);
if ( b ) then
if ( not b.deps ) then
b.deps = {};
end
b.deps[button] = what;
end
end
end
end
end
-- now that we've collected all of the dependencies, handle them
for name,option in FishingBuddy.OPTIONS do
if ( option.v ) then
local button = getglobal("FishingBuddyOption_"..name);
if ( button ) then
CheckButton_OnClick(button, true);
end
end
end
if ( FishingBuddy.UseButtonHole() ) then
FishingBuddyMinimapPosSlider:Hide();
FishingBuddyOption_MinimapPosSlider:Hide();
end
local gs = FishingBuddy.GetSetting;
FishingBuddy.OptionsFrame.SetKeyValue("EasyCastKeys", gs("EasyCastKeys"));
end
end
FishingBuddy.OptionsFrame.SetClockValues = function(value)
FishingBuddy.SetClockOffset(value);
if ( FishingBuddy.ClockOffsets ) then
local menu = getglobal("FishingBuddyOption_ClockOffset");
local label = getglobal("FishingBuddyOption_ClockOffsetLabel");
UIDropDownMenu_SetWidth(60, menu);
local sel = 1;
if ( value == FishingBuddy.ClockOffsets[2] ) then
sel = 2;
end
UIDropDownMenu_SetSelectedValue(menu, sel);
UIDropDownMenu_SetText(value, menu);
label:SetText(FishingBuddy.OFFSET_LABEL_TEXT);
end
if ( FishingBuddy.ClockOffsets and
FishingBuddy.GetSetting("STVTimer") == 1 ) then
FishingBuddyOption_ClockOffset:Show();
else
FishingBuddyOption_ClockOffset:Hide();
end
end
local function ClockOffsetMenuSetup()
if ( FishingBuddy.ClockOffsets ) then
local clockoff = FishingBuddy.GetClockOffset();
for _,offset in FishingBuddy.ClockOffsets do
local off = offset;
local info = {};
info.text = string.format("%4d", offset);
info.func = function()
FishingBuddy.OptionsFrame.SetClockValues(off);
end;
info.checked = ( offset == clockoff )
UIDropDownMenu_AddButton(info);
end
end
end
FishingBuddy.OptionsFrame.OffsetMenuSetup = function()
UIDropDownMenu_Initialize(this, ClockOffsetMenuSetup);
end
FishingBuddy.OptionsFrame.SetKeyValue = function(what, value)
local show = FishingBuddy.Keys[value];
@@ -87,7 +205,7 @@ FishingBuddy.OptionsFrame.LoadKeyMenu = function(what)
end
end
FishingBuddy.OptionsFrame.MenuSetup = function(what)
FishingBuddy.OptionsFrame.KeyMenuSetup = function(what)
UIDropDownMenu_Initialize(this,
function()
local w = what;
+109 -24
View File
@@ -86,9 +86,9 @@
</CheckButton>
<CheckButton name="FishingBuddyOption_WatchOnlyWhenFishing" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_WatchCurrentSkill" relativePoint="BOTTOMLEFT">
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_WatchCurrentZone" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0" y="2"/>
<AbsDimension x="140" y="0"/>
</Offset>
</Anchor>
</Anchors>
@@ -104,7 +104,7 @@
</CheckButton>
<CheckButton name="FishingBuddyOption_SortByPercent" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_WatchFishPercent" relativePoint="BOTTOMLEFT">
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_WatchCurrentSkill" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-16" y="2"/>
</Offset>
@@ -143,22 +143,13 @@
</Layers>
<Scripts>
<OnLoad>
FishingBuddy.OptionsFrame.MenuSetup("EasyCastKeys");
FishingBuddy.OptionsFrame.KeyMenuSetup("EasyCastKeys");
</OnLoad>
</Scripts>
</Frame>
<CheckButton name="FishingBuddyOption_FastCast" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_EasyCast" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="16" y="2"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="FishingBuddyOption_EasyLures" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_FastCast" relativePoint="BOTTOMLEFT">
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_EasyCast" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="2"/>
</Offset>
@@ -169,21 +160,57 @@
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_EasyLures" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-16" y="2"/>
<AbsDimension x="0" y="2"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Frame name="FishingBuddyOption_ClockOffset" inherits="UIDropDownMenuTemplate" hidden="false">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_STVTimer" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="210" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel" inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="10" y="-6"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
FishingBuddy.OptionsFrame.OffsetMenuSetup();
</OnLoad>
</Scripts>
</Frame>
<CheckButton name="FishingBuddyOption_STVPoolsOnly" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_STVTimer" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="16" y="2"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="FishingBuddyOption_EnhanceFishingSounds" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_STVTimer" relativePoint="BOTTOMLEFT">
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_STVPoolsOnly" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="2"/>
<AbsDimension x="-16" y="2"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="FishingBuddyOption_UseButtonHole" inherits="FishingBuddyCheckButtonTemplate">
<CheckButton name="FishingBuddyOption_SuitUpFirst" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_EnhanceFishingSounds" relativePoint="BOTTOMLEFT">
<Offset>
@@ -192,15 +219,73 @@
</Anchor>
</Anchors>
</CheckButton>
<!-- Thanks to bc_TrackingMenu for this slider code -->
<Slider name="FishingBuddyMinimapPosSlider" inherits="OptionsSliderTemplate">
<CheckButton name="FishingBuddyOption_UseGatherer" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_SuitUpFirst" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="2"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="FishingBuddyOption_UseButtonHole" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_UseGatherer" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="140" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Frame name="FishingBuddyOption_OutfitMenu" inherits="UIDropDownMenuTemplate" hidden="false">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_UseGatherer" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="48" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel" inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="10" y="-6"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<SimpleHTML name="FishingBuddyOption_OutfitText">
<Size>
<AbsDimension x="290" y="17"/>
<AbsDimension x="210" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingBuddyOption_UseGatherer" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-4"/>
</Offset>
</Anchor>
</Anchors>
<FontString name="$parentFontString" inherits="GameFontNormalSmall">
<Size>
<AbsDimension x="183" y="0"/>
</Size>
</FontString>
</SimpleHTML>
<!-- next option is relative to FishingBuddyOption_OutfitMenu -->
<!-- Thanks to bc_TrackingMenu for this slider code -->
<Slider name="FishingBuddyOption_MinimapPosSlider" inherits="OptionsSliderTemplate">
<Size>
<AbsDimension x="280" y="17"/>
</Size>
<Anchors>
<Anchor point="BOTTOM" relative="$parent" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="-10" y="88"/>
<AbsDimension x="0" y="88"/>
</Offset>
</Anchor>
</Anchors>
@@ -229,9 +314,9 @@
</Slider>
<CheckButton name="FishingBuddyOption_MinimapButtonVisible" inherits="FishingBuddyCheckButtonTemplate">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="FishingBuddyMinimapPosSlider" relativePoint="TOPLEFT">
<Anchor point="TOPRIGHT" relativeTo="FishingBuddyOption_MinimapPosSlider" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-4" y="16"/>
<AbsDimension x="-4" y="4"/>
</Offset>
</Anchor>
</Anchors>
+113 -32
View File
@@ -1,6 +1,8 @@
-- Wrap OutfitDisplayFrame with our "improvements"
FishingBuddy.OutfitFrame = {};
local DEFAULTUPDATE_WAIT = 0.1;
local function StylePoints(outfit)
local isp = FishingBuddy.OutfitManager.ItemStylePoints;
local points = 0;
@@ -54,18 +56,45 @@ local function BonusPoints(outfit)
end
local function UpdateSwitchButton(outfit)
if ( outfit and not OutfitDisplayFrame_SwitchWillFail(FishingOutfitFrame, outfit) ) then
local msg = OutfitDisplayFrame_SwitchWillFail(FishingOutfitFrame, outfit);
if ( outfit and not msg ) then
FishingOutfitSwitchButton:Enable();
else
FishingOutfitSwitchButton:Disable();
end
end
FishingBuddy.OutfitFrame.OutfitChanged = function(button)
local outfit = OutfitDisplayFrame_GetOutfit(FishingOutfitFrame);
if ( outfit ) then
FishingBuddy.SetOutfit(outfit);
-- outfit support functions
local function GetWasWearing()
if FishingBuddy_Player["WasWearing"] then
return FishingBuddy_Player["WasWearing"];
end
end
local function SetWasWearing(outfit)
FishingBuddy_Player["WasWearing"] = outfit;
end
local function GetOutfit()
return FishingBuddy_Player["Outfit"];
end
local saved_outfit;
local function SetOutfit(outfit)
saved_outfit = outfit;
FishingBuddy_Player["Outfit"] = outfit;
end
local updateWait = DEFAULTUPDATE_WAIT;
FishingBuddy.OutfitFrame.Update = function(elapsed)
updateWait = updateWait - elapsed;
if ( updateWait <= 0 ) then
UpdateSwitchButton(saved_outfit);
FishingOutfitUpdate:Hide();
end
end
local function UpdateStyleInfo()
local points = BonusPoints(outfit);
if ( points >= 0 ) then
points = "+"..points;
@@ -82,8 +111,28 @@ FishingBuddy.OutfitFrame.OutfitChanged = function(button)
pstring = FishingBuddy.POINTS;
end
FishingOutfitStyle:SetText(FishingBuddy.CONFIG_STYLISH_TEXT..points.." "..pstring);
UpdateSwitchButton(outfit);
end
local function OutfitChanged(button)
local outfit = OutfitDisplayFrame_GetOutfit(FishingOutfitFrame);
if ( outfit ) then
SetOutfit(outfit);
end
UpdateStyleInfo();
FishingOutfitFrame.valid = true;
updateWait = DEFAULTUPDATE_WAIT;
FishingOutfitUpdate:Show();
end
FishingBuddy.OutfitFrame.OnShow = function()
if ( not this.valid ) then
saved_outfit = GetOutfit();
end
OutfitDisplayFrame_SetOutfit(FishingOutfitFrame, saved_outfit);
UpdateSwitchButton(saved_outfit);
if ( not this.valid ) then
OutfitChanged();
end
end
FishingBuddy.OutfitFrame.OnLoad = function()
@@ -93,36 +142,38 @@ FishingBuddy.OutfitFrame.OnLoad = function()
FishingOutfitSkill.tooltip = FishingBuddy.CONFIG_SKILL_INFO;
FishingOutfitStyle.tooltip = FishingBuddy.CONFIG_STYLISH_INFO;
FishingOutfitSwitchButton:SetText(FishingBuddy.SWITCHOUTFIT);
FishingOutfitFrame.OutfitChanged = FishingBuddy.OutfitFrame.OutfitChanged;
FishingOutfitFrame.OutfitChanged = OutfitChanged;
else
FishingBuddy.DisableSubFrame("FishingOutfitFrame");
end
end
FishingBuddy.OutfitFrame.OnShow = function()
if ( not this.valid ) then
local outfit = FishingBuddy.GetOutfit();
OutfitDisplayFrame_SetOutfit(FishingOutfitFrame, outfit);
FishingBuddy.OutfitFrame.OutfitChanged();
FishingBuddy.OutfitFrame.OnHide = function()
-- OutfitChanged();
end
local function ODF_Initialize()
OutfitDisplayFrame_SetOutfit(FishingOutfitFrame, saved_outfit);
end
-- the user has chosen us, make sure everything is set up the way we need
local function ODF_Choose(useme)
if ( FishingOutfitFrame ) then
if ( useme ) then
FishingBuddy.EnableSubFrame("FishingOutfitFrame");
else
FishingBuddy.DisableSubFrame("FishingOutfitFrame");
end
end
end
FishingBuddy.OutfitFrame.OnHide = function()
-- FishingOutfitFrame_OutfitChanged();
end
FishingBuddy.OutfitFrame.Button_OnClick = function()
-- make sure we have the current state
FishingBuddy.SetOutfit(OutfitDisplayFrame_GetOutfit(FishingOutfitFrame));
FishingBuddy.OutfitFrame.Switch();
end
FishingBuddy.OutfitFrame.Choose = ODF_Choose;
-- only have one outfit at the moment
-- don't switch if
-- we can't find everything in the outfit
-- we have saved stuff but we're not wearing everything in the outfit
-- We don't have the outfit display frame!
FishingBuddy.OutfitFrame.Switch = function()
local function ODF_Switch()
if (CursorHasItem()) then
FishingBuddy.UIError(FishingBuddy.CURSORBUSYMSG);
return false;
@@ -131,28 +182,28 @@ FishingBuddy.OutfitFrame.Switch = function()
FishingBuddy.UIError(OUTFITDISPLAYFRAME_TOOFASTMSG);
return false;
end
local isfishing = FishingBuddy.IsFishingPole();
local outfit = FishingBuddy.GetOutfit();
local waswearing = FishingBuddy.GetWasWearing();
local isfishing = FishingBuddy.API.IsFishingPole();
local outfit = GetOutfit();
local waswearing = GetWasWearing();
if ( waswearing ) then
local msg;
if ( isfishing ) then
msg = OutfitDisplayFrame_SwitchWillFail(FishingOutfitFrame, waswearing);
else
msg = FishingBuddy.CANTSWITCHBACK;
FishingBuddy.SetWasWearing(nil);
SetWasWearing(nil);
StartedFishing = nil;
end
if ( msg ) then
FishingBuddy.UIError(msg);
return false;
end
local check = OutfitDisplayFrame_SwitchOutfit(waswearing);
if ( check ) then
FishingBuddy.SetWasWearing(nil);
SetWasWearing(nil);
FishingBuddy.OutfitManager.CheckSwitch(false);
end
elseif ( outfit ) then
@@ -168,7 +219,7 @@ FishingBuddy.OutfitFrame.Switch = function()
end
local waswearing = OutfitDisplayFrame_SwitchOutfit(outfit);
if ( waswearing ) then
FishingBuddy.SetWasWearing(waswearing);
SetWasWearing(waswearing);
FishingBuddy.OutfitManager.CheckSwitch(true);
end
else
@@ -176,3 +227,33 @@ FishingBuddy.OutfitFrame.Switch = function()
end
return true;
end
FishingBuddy.OutfitFrame.Button_OnClick = function()
-- make sure we have the current state
SetOutfit(OutfitDisplayFrame_GetOutfit(FishingOutfitFrame));
ODF_Switch();
end
-- outfit debugging functions
FishingBuddy.Commands["outfit"] = {};
FishingBuddy.Commands["outfit"].func =
function(what)
if ( what and OutfitDisplayFrame_OnLoad ) then
if ( what == FishingBuddy.RESET ) then
SetWasWearing(nil);
elseif ( what == "dump" ) then
FishingBuddy.Debug("Outfit");
FishingBuddy.Dump(GetOutfit());
FishingBuddy.Debug("Was Wearing");
FishingBuddy.Dump(GetWasWearing());
end
end
return true;
end;
if ( OutfitDisplayFrame_OnLoad ) then
FishingBuddy.OutfitManager.RegisterManager("OutfitDisplayFrame",
ODF_Initialize,
ODF_Choose,
ODF_Switch);
end
+14
View File
@@ -1,6 +1,13 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="FishingOutfitFrame.lua"/>
<GameTooltip name="FishingOutfitTooltip" frameStrata="TOOLTIP" hidden="true" inherits="GameTooltipTemplate">
<Scripts>
<OnLoad>
this:SetOwner(WorldFrame, "ANCHOR_NONE");
</OnLoad>
</Scripts>
</GameTooltip>
<Button name="FishingOutfitFrameLabel" hidden="false" virtual="true">
<Size>
<AbsDimension x="90" y="16"/>
@@ -87,6 +94,13 @@
</OnLeave>
</Scripts>
</Button>
<Frame name="FishingOutfitUpdate" hidden="true">
<Scripts>
<OnUpdate>
FishingBuddy.OutfitFrame.Update(arg1);
</OnUpdate>
</Scripts>
</Frame>
</Frames>
<Scripts>
<OnLoad>
+106 -114
View File
@@ -32,6 +32,24 @@ local Accessories = {
[5310] = { ["n"] = "Sea Dog Britches", ["score"] = 4, },
}
FishingBuddy.Commands[FishingBuddy.SWITCH] = {};
FishingBuddy.Commands[FishingBuddy.SWITCH].func = function()
FishingBuddy.OutfitManager.Switch();
return true;
end;
local OutfitManagers = {};
local OutfitManagerCount = 0;
FishingBuddy.OutfitManager.RegisterManager = function(name, init, choose, switch)
if ( not OutfitManagers[name] ) then
OutfitManagers[name] = {};
OutfitManagerCount = OutfitManagerCount + 1;
end
OutfitManagers[name].Initialize = init;
OutfitManagers[name].Choose = choose;
OutfitManagers[name].Switch = switch;
end
FishingBuddy.OutfitManager.ItemStylePoints = function(itemno, enchant)
local points = 0;
if ( itemno ) then
@@ -48,145 +66,119 @@ FishingBuddy.OutfitManager.ItemStylePoints = function(itemno, enchant)
return points;
end
local CheckSwitch = nil;
local PoleCheck = nil;
-- update the watcher when we're done switching outfits
FishingBuddy.OutfitManager.WaitForUpdate =
function(arg1)
local hasPole = FishingBuddy.IsFishingPole();
if ( hasPole == CheckSwitch ) then
local hasPole = FishingBuddy.API.IsFishingPole();
if ( hasPole == PoleCheck ) then
FishingOutfitUpdateFrame:Hide();
FishingBuddy.FishingMode();
FishingBuddy.API.FishingMode();
end
end
FishingBuddy.OutfitManager.CheckSwitch = function(topole)
CheckSwitch = topole;
local function CheckSwitch(topole)
PoleCheck = topole;
FishingOutfitUpdateFrame:Show();
end
FishingBuddy.OutfitManager.CheckSwitch = CheckSwitch;
local function HasManager()
return (OutfitManagerCount > 0);
end
FishingBuddy.OutfitManager.HasManager = HasManager;
FishingBuddy.OutfitManager.Switch = function(outfitname)
if ( OutfitDisplayFrame_OnLoad ) then
FishingBuddy.OutfitFrame.Switch();
else
local vOut, vCat, vInd = Outfitter_FindOutfitByStatId(Outfitter_cFishingStatName);
if ( vOut ) then
if ( FishingBuddy.IsFishingPole() ) then
Outfitter_RemoveOutfit(vOut);
FishingBuddy.OutfitManager.CheckSwitch(false);
else
vOut.Disabled = nil;
Outfitter_WearOutfit(vOut, vCat);
FishingBuddy.OutfitManager.CheckSwitch(true);
end
Outfitter_Update(true);
if ( HasManager() ) then
local outfitter = FishingBuddy.GetSetting("OutfitManager");
if ( outfitter and OutfitManagers[outfitter] ) then
local wasPole = OutfitManagers[outfitter].Switch(outfitname);
CheckSwitch(not wasPole);
end
else
FishingBuddy.UIError(FishingBuddy.COMPATIBLE_SWITCHER);
end
-- if we're now sporting a fishing pole, let's go fishing
FishingBuddy.FishingMode();
FishingBuddy.API.FishingMode();
end
FishingBuddy.OutfitManager.HasManager = function()
return ( OutfitDisplayFrame_OnLoad or Outfitter_OnLoad );
local current_manager;
local function OutfitManagerMenuSetup()
for manager,_ in OutfitManagers do
local mgr = manager;
local info = {};
info.text = manager;
info.func = function() FishingBuddy.OutfitManager.ChooseManager(mgr); end;
info.checked = ( current_manager == manager )
UIDropDownMenu_AddButton(info);
end
end
local function SetOutfitManagerDisplay()
if ( OutfitManagerCount == 0 ) then
FishingBuddyOption_OutfitMenu:Hide();
FishingBuddyOption_OutfitText:SetText(FishingBuddy.OUTFITS_TAB..": |c"..FishingBuddy.Colors.RED..FishingBuddy.NONEAVAILABLE_MSG.."|r");
elseif ( OutfitManagerCount == 1 ) then
FishingBuddyOption_OutfitMenu:Hide();
FishingBuddyOption_OutfitText:SetText(FishingBuddy.OUTFITS_TAB..": |c"..FishingBuddy.Colors.GREEN..current_manager.."|r");
else
FishingBuddyOption_OutfitText:Hide();
UIDropDownMenu_Initialize(FishingBuddyOption_OutfitMenu,
OutfitManagerMenuSetup);
local show = 1;
for name,_ in OutfitManagers do
if ( name == current_manager ) then
break;
end
show = show + 1;
end
local label = getglobal("FishingBuddyOption_OutfitMenuLabel");
label:SetText(FishingBuddy.OUTFITS_TAB..": ");
local menu = FishingBuddyOption_OutfitMenu;
UIDropDownMenu_SetWidth(210, menu);
UIDropDownMenu_SetSelectedValue(menu, show);
UIDropDownMenu_SetText(current_manager, menu);
end
end
local function ChooseManager(manager)
if ( manager and OutfitManagers[manager] ) then
current_manager = manager;
if ( not OutfitManagers[manager].initialized ) then
OutfitManagers[manager].Initialize();
OutfitManagers[manager].initialized = 1;
end
for om,info in OutfitManagers do
info.Choose(om == manager);
end
SetOutfitManagerDisplay();
return true;
end
end
FishingBuddy.OutfitManager.ChooseManager = ChooseManager;
FishingBuddy.OutfitManager.Initialize = function()
-- no outfit managers, no outfit switching
if ( not FishingBuddy.OutfitManager.HasManager() ) then
if ( not HasManager() ) then
FishingBuddy.SetSetting("InfoBarClickToSwitch", 0);
FishingBuddy.SetSetting("TitanClickToSwitch", 0);
FishingBuddy.SetSetting("MinimapClickToSwitch", 0);
end
if ( (not OutfitDisplayFrame_OnLoad) and Outfitter_OnLoad ) then
-- create the default fishing outfit, if it doesn't exist
if ( gOutfitter_Settings ) then
local vOut, vCat, vInd = Outfitter_FindOutfitByStatId(Outfitter_cFishingStatName);
local vName = "Fishing Buddy";
if ( not vOut ) then
vOut = Outfitter_GenerateSmartOutfit(vName, Outfitter_cFishingStatName, OutfitterItemList_GetEquippableItems(true));
if not vOut then
vOut = Outfitter_NewEmptyOutfit(vName);
end
local vCategoryID = Outfitter_AddOutfit(vOut);
else
if ( OutfitManagerCount == 1 ) then
-- we pretty much have to use this one
current_manager = next(OutfitManagers);
else
current_manager = FishingBuddy.GetSetting("OutfitManager");
if ( not manager or not OutfitManagers[manager] ) then
-- no valid ones, use the first one
current_manager = next(OutfitManagers);
end
end
ChooseManager(current_manager);
-- in case we changed things (do we want/need to do this?)
-- FishingBuddy.SetSetting("OutfitManager", current_manager);
end
SetOutfitManagerDisplay();
end
-- calculate scores based on Outfitter
local function StylePoints(outfit)
local isp = FishingBuddy.OutfitManager.ItemStylePoints;
local points = 0;
if ( outfit )then
for slot in outfit.Items do
points = points + isp(outfit.Items[slot].Code,
outfit.Items[slot].EnchantCode);
end
end
return points;
end
local function BonusPoints(outfit, vStatID)
local points = 0;
if ( outfit )then
for slot in outfit.Items do
if ( outfit.Items[slot][vStatID] ) then
points = points + outfit.Items[slot][vStatID];
end
-- Enternium Fishing Line
if ( outfit.Items[slot].EnchantCode == 2603 ) then
points = points + 5;
end
end
end
return points;
end
-- Outfitter patches
function Outfitter_FindOutfitByStatId(pStatID)
if not pStatID or pStatID == "" then
return nil;
end
for vCategoryID, vOutfits in gOutfitter_Settings.Outfits do
for vOutfitIndex, vOutfit in vOutfits do
if vOutfit.StatID and vOutfit.StatID == pStatID then
return vOutfit, vCategoryID, vOutfitIndex;
end
end
end
-- return nil, nil, nil;
end
local Saved_OutfitterItem_OnEnter = OutfitterItem_OnEnter;
FishingBuddy.OutfitManager.OutfitterItem_OnEnter = function(pItem)
Saved_OutfitterItem_OnEnter(pItem);
if ( not pItem.isCategoryItem ) then
local vOutfit = Outfitter_GetOutfitFromListItem(pItem);
if ( vOutfit and vOutfit.StatID == Outfitter_cFishingStatName ) then
local vDescription;
local bp = BonusPoints(vOutfit, Outfitter_cFishingStatName);
if ( bp >= 0 ) then
bp = "+"..bp;
else
bp = 0 - bp;
bp = "-"..bp;
end
bp = Outfitter_cFishingStatName.." "..bp;
local sp = StylePoints(vOutfit);
local pstring;
if ( points == 1 ) then
pstring = FishingBuddy.POINT;
else
pstring = FishingBuddy.POINTS;
end
vDescription = string.format(FishingBuddy.CONFIG_OUTFITTER_TEXT,
bp, sp)..pstring;
GameTooltip_AddNewbieTip(vOutfit.Name, 1.0, 1.0, 1.0, vDescription, 1);
end
end
end
OutfitterItem_OnEnter = FishingBuddy.OutfitManager.OutfitterItem_OnEnter;
-1
View File
@@ -1,7 +1,6 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="FishingOutfitManager.lua"/>
<GameTooltip name="FishingOutfitTooltip" inherits="GameTooltipTemplate" parent="UIParent" hidden="true"/>
<Frame name="FishingOutfitUpdateFrame" hidden="true">
<Scripts>
<OnUpdate>
+140
View File
@@ -0,0 +1,140 @@
-- Interface with the Outfitter addon by mundocani
local function OutfitterSwitch(outfitName)
-- this uses a static string of "Fishing" *not* the translation
local vOut, vCat, vInd = Outfitter_FindOutfitByStatID("Fishing");
if ( vOut ) then
local wasPole = FishingBuddy.API.IsFishingPole();
if ( wasPole ) then
Outfitter_RemoveOutfit(vOut);
else
vOut.Disabled = nil;
Outfitter_WearOutfit(vOut, vCat);
end
Outfitter_Update(true);
return wasPole;
end
end
local function CleanOutDuplicates(vName)
local count = 0;
for vCategoryID, vOutfits in gOutfitter_Settings.Outfits do
for vOutfitIndex, vOutfit in vOutfits do
if ( vOutfit.Name == vName ) then
count = count + 1;
end
end
end
if ( count > 0 ) then
-- nuke all of the outfits named 'Fishing Buddy' since they're
-- likely wrong, so that we can create a new 'good' one
local vOut,_,_ = Outfitter_FindOutfitByName(vName);
while ( vOut ) do
Outfitter_DeleteOutfit(vOut);
vOut,_,_ = Outfitter_FindOutfitByName(vName);
end
end
end
local function OutfitterInitialize()
if ( gOutfitter_Settings ) then
local vName = "Fishing Buddy";
CleanOutDuplicates(vName);
-- create the default fishing outfit, if it doesn't exist
local vOut,_,_ = Outfitter_FindOutfitByStatID("Fishing");
if ( not vOut ) then
vOut = Outfitter_GenerateSmartOutfit(vName, "Fishing", OutfitterItemList_GetEquippableItems(true));
if ( vOut ) then
local vCategoryID = Outfitter_AddOutfit(vOut);
-- we're done
end
end
end
end
-- calculate scores based on Outfitter
local function StylePoints(outfit)
local isp = FishingBuddy.OutfitManager.ItemStylePoints;
local points = 0;
if ( outfit )then
for slot in outfit.Items do
points = points + isp(outfit.Items[slot].Code,
outfit.Items[slot].EnchantCode);
end
end
return points;
end
local function BonusPoints(outfit, vStatID)
local points = 0;
if ( outfit )then
for slot in outfit.Items do
if ( outfit.Items[slot][vStatID] ) then
points = points + outfit.Items[slot][vStatID];
end
-- Enternium Fishing Line
if ( outfit.Items[slot].EnchantCode == 2603 ) then
points = points + 5;
end
end
end
return points;
end
-- Outfitter patches ( not needed in 1.2)
if ( not Outfitter_FindOutfitByStatID ) then
Outfitter_FindOutfitByStatID = function(pStatID)
if not pStatID or pStatID == "" then
return nil;
end
for vCategoryID, vOutfits in gOutfitter_Settings.Outfits do
for vOutfitIndex, vOutfit in vOutfits do
if vOutfit.StatID and vOutfit.StatID == pStatID then
return vOutfit, vCategoryID, vOutfitIndex;
end
end
end
-- return nil, nil, nil;
end
end
local Saved_OutfitterItem_OnEnter = OutfitterItem_OnEnter;
local function Patch_OutfitterItem_OnEnter(pItem)
Saved_OutfitterItem_OnEnter(pItem);
if ( not pItem.isCategoryItem ) then
local vOutfit = Outfitter_GetOutfitFromListItem(pItem);
if ( vOutfit and vOutfit.StatID == "Fishing" ) then
local vDescription;
local bp = BonusPoints(vOutfit, "Fishing");
if ( bp >= 0 ) then
bp = "+"..bp;
else
bp = 0 - bp;
bp = "-"..bp;
end
bp = Outfitter_cFishingStatName.." "..bp;
local sp = StylePoints(vOutfit);
local pstring;
if ( points == 1 ) then
pstring = FishingBuddy.POINT;
else
pstring = FishingBuddy.POINTS;
end
vDescription = string.format(FishingBuddy.CONFIG_OUTFITTER_TEXT,
bp, sp)..pstring;
GameTooltip_AddNewbieTip(vOutfit.Name, 1.0, 1.0, 1.0, vDescription, 1);
end
end
end
-- point to our new function so we get our own tooltip
OutfitterItem_OnEnter = Patch_OutfitterItem_OnEnter;
if ( Outfitter_OnLoad ) then
FishingBuddy.OutfitManager.RegisterManager("Outfitter",
OutfitterInitialize,
function(useme) end,
OutfitterSwitch);
end
+165
View File
@@ -0,0 +1,165 @@
-- Support for schools
FishingBuddy.Schools = {};
local SCHOOLS = {};
local CLOSEENOUGH = 0.000001;
local function distance(x1, y1, x2, y2)
local x = (x1 - x2);
local y = (y1 - y2);
return sqrt( (x * x) + (y * y) );
end
-- Let's store fishing holes like this
-- FishingBuddy_Info["Schools"][ZONE]
-- Store everything to two digits?
local function AddFishingSchool(kind, fishid, zidx, x, y)
local entry = {};
if ( not zidx ) then
zidx, _ = FishingBuddy.GetZoneIndex();
elseif ( type(zidx) == "string" ) then
zidx = FishingBuddy.GetZoneIndex(zidx);
end
if ( not x or not y ) then
x, y = GetPlayerMapPosition("player");
end
if ( not FishingBuddy_Info["FishSchools"] ) then
FishingBuddy_Info["FishSchools"] = {};
end
if ( not FishingBuddy_Info["FishSchools"][zidx] ) then
FishingBuddy_Info["FishSchools"][zidx] = {};
else
-- how do we find the same pool?
for _,hole in FishingBuddy_Info["FishSchools"][zidx] do
local d = distance(hole.x, hole.y, x, y);
if ( d < CLOSEENOUGH ) then
if ( fishid ) then
if ( hole.fish ) then
for f,count in hole.fish do
if ( f == fishid ) then
hole.fish[f] = count + 1;
return;
end
end
else
hole.fish = {};
end
hole.fish[fishid] = 1;
end
if ( hole.count ) then
hole.count = hole.count + 1;
else
hole.count = 1;
end
return;
end
end
end
entry.kind = kind;
entry.x = x;
entry.y = y;
entry.count = 1;
if ( fishid ) then
entry.fish = {};
entry.fish[fishid] = 1;
end
tinsert(FishingBuddy_Info["FishSchools"][zidx], entry);
return true;
end
FishingBuddy.Schools.AddFishingSchool = AddFishingSchool;
local function IsFishingHole(text)
if ( text ) then
for match, info in SCHOOLS do
if ( string.find(text, match) ) then
return info;
end
end
end
end
FishingBuddy.Schools.IsFishingHole = IsFishingHole;
local function CheckFishingHole(text, fishid)
local info = IsFishingHole(text);
if ( info ) then
if ( Gatherer_AddGatherHere and
FishingBuddy.GetSetting("UseGatherer") == 1 ) then
Gatherer_AddGatherHere(info.gather, 0, info.gather, 2);
end
if ( AddFishingSchool(info.kind, fishid) and
FishingBuddy.GetSetting("ShowNewFishies") == 1 ) then
local zone,_ = FishingBuddy.GetZoneInfo();
FishingBuddy.Print(FishingBuddy.ADDSCHOOLMSG, text, zone);
end
end
end
FishingBuddy.Schools.CheckFishingHole = CheckFishingHole;
local function GetSchools(zidx)
if ( type(zidx) == "string" ) then
zidx = FishingBuddy.GetZoneIndex(zidx);
end
if ( FishingBuddy_Info["FishSchools"] and FishingBuddy_Info["FishSchools"][zidx] ) then
return FishingBuddy_Info["FishSchools"][zidx];
else
return {};
end
end
FishingBuddy.Schools.GetSchools = GetSchools;
FishingBuddy.Schools.Init = function()
-- hook into Gatherer
SCHOOLS[FishingBuddy.SCHOOL] = {
["gather"] = TREASURE_FISHNODE,
["kind"] = FishingBuddy.SCHOOL_FISH,
};
SCHOOLS[FishingBuddy.FLOATING_WRECKAGE] = {
["gather"] = TREASURE_FISHWRECK,
["kind"] = FishingBuddy.SCHOOL_WRECKAGE,
};
SCHOOLS[FishingBuddy.FLOATING_DEBRIS] = {
["gather"] = TREASURE_FISHWRECK,
["kind"] = FishingBuddy.SCHOOL_DEBRIS,
};
SCHOOLS[FishingBuddy.ELEM_WATER] = {
["gather"] = TREASURE_FISHELEM,
["kind"] = FishingBuddy.SCHOOL_WATER,
};
SCHOOLS[FishingBuddy.OIL_SPILL] = {
["gather"] = TREASURE_FISHWRECK,
["kind"] = FishingBuddy.SCHOOL_OIL,
};
end
local function CollapseHoles()
if ( FishingBuddy_Info["FishSchools"] ) then
local zonecopy = {};
for zidx,holes in FishingBuddy_Info["FishSchools"] do
local copy = {};
for _,hole in holes do
tinsert(copy, hole);
end
zonecopy[zidx] = copy;
end
for zidx,holes in zonecopy do
FishingBuddy_Info["FishSchools"][zidx] = nil;
for _,hole in holes do
FishingBuddy.Dump(hole);
if ( hole.fish ) then
for f,c in hole.fish do
for i in 1,c do
AddFishingSchool(hole.kind, f, zidx, hole.x, hole.y);
end
end
else
AddFishingSchool(hole.kind, nil, zidx, hole.x, hole.y);
end
end
end
end
end
FishingBuddy.Schools.CollapseHoles = CollapseHoles;
+72 -81
View File
@@ -2,91 +2,45 @@
--
-- Load out translation strings and such
FishingBuddy = {};
FishingBuddy.VERSION = "0.8.6h";
FishingBuddy.CURRENTVERSION = 8600;
FishingBuddy.VERSION = GetAddOnMetadata("FishingBuddy", "Version");
FishingBuddy.CURRENTVERSION = 8800;
FishingBuddy.Colors = {};
FishingBuddy.Colors.RED = "ffff0000";
FishingBuddy.Colors.GREEN = "ff00ff00";
FishingBuddy.Colors.BLUE = "ff0000ff";
FishingBuddy.Colors.YELLOW = "ff00ffff";
FishingBuddy.Colors.PURPLE = "ffff00ff";
FishingBuddy.Colors.WHITE = "ffffffff";
-- debugging
FishingBuddy.DEFAULT_MINIMAP_POSITION = 256;
FishingBuddy.printable = function(foo)
if ( foo ) then
if ( type(foo) == "table" ) then
return "table";
elseif ( type(foo) == "boolean" ) then
if ( foo ) then
return "true";
else
return "false";
end
else
return foo;
end
else
return "nil";
end
end
local Setup = {};
FishingBuddy.Output = function(msg, r, g, b)
if ( DEFAULT_CHAT_FRAME ) then
if ( not r ) then
DEFAULT_CHAT_FRAME:AddMessage(msg);
else
DEFAULT_CHAT_FRAME:AddMessage(msg, r, g, b);
end
end
end
local FishingBuddy_Debugging = 1;
FishingBuddy.Debug = function(msg, fixlinks)
if ( FishingBuddy_Debugging == 1 ) then
if ( fixlinks ) then
msg = string.gsub(msg, "|", ";");
end
local name = FishingBuddy.Name or "Fishing Buddy";
FishingBuddy.Output("|c"..FishingBuddy.Colors.RED..name.." DEBUG|r "..msg);
end
end
FishingBuddy.Dump = function(thing)
if ( FishingBuddy_Debugging == 1 ) then
if ( DevTools_Dump ) then
DevTools_Dump(thing);
else
FishingBuddy.Debug("Tried to dump a '"..FishingBuddy.printable(thing).."'.");
end
end
end
local function LoadTranslation(lang)
local translation = FishingTranslations[lang];
for tag,value in translation do
if ( not FishingBuddy[tag] ) then
FishingBuddy[tag] = value;
end
end
end
local function FixupThis(tag, what)
Setup.FixupThis = function(tag, what)
if ( type(what) == "table" ) then
for idx,str in what do
what[idx] = FixupThis(tag, str);
what[idx] = Setup.FixupThis(tag, str);
end
return what;
elseif ( type(what) == "string" ) then
local pattern = "#([A-Z0-9]+)#";
local pattern = "#([A-Z0-9_]+)#";
local s,e,w = string.find(what, pattern);
while ( w ) do
local s1 = strsub(what, 1, s-1);
local s2 = strsub(what, e+1);
what = s1..FishingBuddy[w]..s2;
s,e,w = string.find(what, pattern);
if ( type(FishingBuddy[w]) == "string" ) then
local s1 = strsub(what, 1, s-1);
local s2 = strsub(what, e+1);
what = s1..FishingBuddy[w]..s2;
s,e,w = string.find(what, pattern);
elseif ( FishingBuddy.Colors[w] ) then
local s1 = strsub(what, 1, s-1);
local s2 = strsub(what, e+1);
what = s1..FishingBuddy.Colors[w]..s2;
s,e,w = string.find(what, pattern);
else
-- stop if we can't find something to replace it with
w = nil;
end
end
return what;
else
@@ -95,15 +49,15 @@ local function FixupThis(tag, what)
end
end
local function FixupStrings()
Setup.FixupStrings = function(locale)
local translation = FishingTranslations["enUS"];
for tag,str in translation do
FishingBuddy[tag] = FixupThis(tag, str);
for tag,_ in translation do
FishingBuddy[tag] = Setup.FixupThis(tag, FishingBuddy[tag]);
end
end
local function FixupBindings(lang)
local translation = FishingTranslations[lang];
Setup.FixupBindings = function()
local translation = FishingTranslations["enUS"];
for tag,str in translation do
if ( string.find(tag, "^BINDING") ) then
setglobal(tag, FishingBuddy[tag]);
@@ -112,18 +66,48 @@ local function FixupBindings(lang)
end
end
local locale = GetLocale();
LoadTranslation(locale);
if ( locale ~= "enUS" ) then
LoadTranslation("enUS");
local missing = {};
Setup.LoadTranslation = function(lang, record)
local translation = FishingTranslations[lang];
for tag,value in translation do
if ( not FishingBuddy[tag] ) then
FishingBuddy[tag] = value;
if ( record ) then
missing[tag] = 1;
end
end
end
end
FixupStrings();
FixupBindings(locale);
Setup.Translate = function()
local locale = GetLocale();
if ( FBEnEspagnolFlag ) then
locale = "esES";
end
--locale = "deDE";
Setup.LoadTranslation(locale);
if ( locale ~= "enUS" ) then
Setup.LoadTranslation("enUS");
end
Setup.FixupStrings(locale);
Setup.FixupBindings();
end
Setup.Translate();
-- throw all this away now that we're done with it
Setup = nil;
-- dump the memory we've allocated for all the translations
FishingTranslations = nil;
FishingBuddy.BYWEEKS_TABLE = {["Jan"] = 0, ["Apr"] = 13, ["Jul"] = 26, ["Oct"] = 39, ["Dec"] = 52};
local byweeks = {};
byweeks[FishingBuddy.ABBREV_JANUARY] = 0;
byweeks[FishingBuddy.ABBREV_APRIL] = 13;
byweeks[FishingBuddy.ABBREV_JULY] = 26;
byweeks[FishingBuddy.ABBREV_OCTOBER] = 39;
byweeks[FishingBuddy.ABBREV_DECEMBER] = 52;
FishingBuddy.BYWEEKS_TABLE = byweeks;
FishingBuddy.KEYS_NONE = 0;
FishingBuddy.KEYS_SHIFT = 1;
@@ -134,3 +118,10 @@ FishingBuddy.Keys[FishingBuddy.KEYS_NONE] = FishingBuddy.KEYS_NONE_TEXT;
FishingBuddy.Keys[FishingBuddy.KEYS_SHIFT] = FishingBuddy.KEYS_SHIFT_TEXT;
FishingBuddy.Keys[FishingBuddy.KEYS_CTRL] = FishingBuddy.KEYS_CTRL_TEXT;
FishingBuddy.Keys[FishingBuddy.KEYS_ALT] = FishingBuddy.KEYS_ALT_TEXT;
FishingBuddy.SCHOOL_FISH = 0;
FishingBuddy.SCHOOL_WRECKAGE = 1;
FishingBuddy.SCHOOL_DEBRIS = 2;
FishingBuddy.SCHOOL_WATER = 3;
FishingBuddy.SCHOOL_TASTY = 4;
FishingBuddy.SCHOOL_OIL = 5;
+200 -59
View File
@@ -13,21 +13,33 @@ local trackingWordMap = {
local byhours = {
[13759] = {
["n"] = "Raw Nightfin Snapper",
["enUS"] = "Raw Nightfin Snapper",
["ruRU"] = "Сырой ночной луциан",
["deDE"] = "Roher Nachtflossenschnapper",
["frFR"] = "Lutjan nagenuit cru",
["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 },
["enUS"] = "Raw Sunscale Salmon",
["ruRU"] = "Сырой радужный лосось",
["deDE"] = "Roher Sonnenschuppenlachs",
["frFR"] = "Saumon sol\195\169caille cru",
["c"] = { r = 0.8, g = 0.8, b = 0.1, a = 0.75 },
},
};
local byweeks = {
[13756] = {
["n"] = "Raw Summer Bass",
["enUS"] = "Raw Summer Bass",
["ruRU"] = "Сырой летний окунь",
["deDE"] = "Roher Sommerbarsch",
["frFR"] = "Perche estivale crue",
["c"] = { r = 1.0, g = 1.0, b = 0.0, a = 0.75 },
},
[13755] = {
["n"] = "Winter Squid",
["enUS"] = "Winter Squid",
["ruRU"] = "Зимний кальмар",
["deDE"] = "Winterkalmar",
["frFR"] = "Calmar hivernal",
["c"] = { r = 0.4, g = 0.1, b = 0.4, a = 0.75 },
},
};
@@ -75,6 +87,7 @@ local function TrackThis(how, id, color, name)
FishingBuddy_Info["FishTracking"][how][id].color = color;
end
end
FishingBuddy.TrackThis = TrackThis;
FishingBuddy.Commands[FishingBuddy.TRACK] = {};
FishingBuddy.Commands[FishingBuddy.TRACK].args = {};
@@ -146,6 +159,18 @@ end
FishingBuddy.AddTracking = function(id, name)
local ft = FishingBuddy_Info["FishTracking"];
local index, how;
-- clean up fish removed from the tracking system
local hourly = ft["HOURLY"][id];
local weekly = ft["WEEKLY"][id];
if ( hourly and hourly.nevermore ) then
FishingBuddy_Info["FishTracking"]["HOURLY"][id] = nil;
end
if ( weekly and weekly.nevermore ) then
FishingBuddy_Info["FishTracking"]["WEEKLY"][id] = nil;
end
ft = FishingBuddy_Info["FishTracking"];
if ( ft["HOURLY"][id] ) then
how = "HOURLY";
index,_ = GetGameTime();
@@ -166,33 +191,19 @@ FishingBuddy.AddTracking = function(id, name)
return true;
end
local function PlotData(graph, num, bw, bs, tab, hlabels)
local plotem = {};
local function PlotData(graph, num, bw, bs, graphdata, plotthese, hlabels)
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
GraphHandler.ClearPlot(graph);
for _,info in graphdata do
if ( info.maxval and info.maxval > maxval ) then
maxval = info.maxval;
end
if ( mv > 0 ) then
if ( mv > maxval ) then
maxval = mv;
end
plotem[fdx] = true;
plotted = true;
local w = info.count * (bw+bs);
if ( w > width ) then
width = w;
end
fdx = fdx + 1;
end
local delta = math.mod(maxval, 5);
if ( delta > 0 ) then
@@ -202,45 +213,175 @@ local function PlotData(graph, num, bw, bs, tab, hlabels)
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,
for idx,fishid in plotthese do
local info = graphdata[fishid];
local c = info.color;
GraphHandler.PlotLegend(graph, num-count+1,
info.name, info.item, info.texture,
c.r, c.g, c.b);
_ = 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;
if ( line ) then
line = line.." / "..info.name;
else
line = info.name;
end
fdx = fdx + 1;
count = count - 1;
end
if ( plotted ) then
local values = {};
local delta = maxval/5;
for v=0,5 do
values[string.format("%d", v*delta)] = v;
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);
end
local function UpdateGraphData(id, info)
local maxval = 0;
local n = table.getn(info.data);
info.count = n;
-- we're zero based
n = n - 1;
for idx=0,n do
if ( info.data[idx] > maxval ) then
maxval = info.data[idx];
end
GraphHandler.PlotGrid(graph, line or "", values, width, hlabels);
end
info.maxval = maxval;
info.data = info.data;
if ( not info.color ) then
info.color = {};
else
GraphHandler.PlotGrid(graph, FishingBuddy.NODATAMSG );
if ( type(info.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);
info.color = { a = a, r = r, g = g, b = b };
end
end
local name;
info.item, info.texture, _, _, _, name = FishingBuddy.GetFishie(id);
local loc = GetLocale();
if ( not info.name ) then
if ( byhours[id] and byhours[id][loc] ) then
info.name = byhours[id][loc];
elseif ( byweeks[d] and byweeks[id][loc] ) then
info.name = byweeks[id][loc];
elseif ( not name ) then
info.name = FishingBuddy.FISH.." ("..id..")";
else
info.name = name;
end
end
info.name = FishingBuddy.StripRaw(info.name);
end
local function DrawTrackingGraph(how, num, bw, bs)
local fi = FishingBuddy_Info["FishTracking"];
local graph;
local labels;
if ( how == "HOURLY" ) then
graph = getglobal("FishingTrackingFrameGraph1");
labels = {["00:00"] = 0, ["06:00"] = 6, ["12:00"] = 12, ["18:00"] = 18, ["23:59"] = 24};
if ( not num ) then
num = 2;
bw = 5;
bs = 5;
end
else
graph = getglobal("FishingTrackingFrameGraph2");
labels = FishingBuddy.BYWEEKS_TABLE;
if ( not num ) then
num = 2;
bw = 3;
bs = 2;
end
end
local plotthese = {};
local count = 0;
graph.tracking = how;
for id,info in fi[how] do
UpdateGraphData(id, info);
if ( count < num and fi[how][id].plot == 1 ) then
count = count + 1;
tinsert(plotthese, id);
end
end
PlotData(graph, num, bw, bs, fi[how], plotthese, labels);
end
local function DrawTrackingGraphs()
DrawTrackingGraph("HOURLY");
DrawTrackingGraph("WEEKLY");
end
local function PlotFishToggle(fishid, how)
local tab = FishingBuddy_Info["FishTracking"][how];
if ( not tab[fishid].plot ) then
tab[fishid].plot = 1;
else
tab[fishid].plot = 1 - tab[fishid].plot;
end
DrawTrackingGraph(how);
end
local PlotToggleFunctions = {};
local function PlotMakeToggle(fishid, how)
if ( not PlotToggleFunctions[fishid] ) then
local id = fishid;
local h = how;
PlotToggleFunctions[fishid] = function() PlotFishToggle(id, h); end;
end
return PlotToggleFunctions[fishid];
end
local function PlotMenuInitialize()
local fi = FishingBuddy_Info["FishTracking"];
local ff = FishingBuddy_Info["Fishies"];
local how = this.tracking;
local locale = GetLocale();
for id,_ in fi[how] do
if ( not fi[how][id].plot ) then
fi[how][id].plot = 1;
end
info = {};
if ( ff[id] and ff[id].name ) then
info.text = ff[id].name;
elseif ( byhours[id] ) then
info.text = byhours[id][locale];
elseif ( byweeks[id] ) then
info.text = byweeks[id][locale];
end
if ( info.text ) then
info.func = PlotMakeToggle(id, how);
info.checked = ( fi[how][id].plot == 1 );
UIDropDownMenu_AddButton(info);
end
end
end
FishingBuddy.TrackingFrame.OnClick = function(button, graph)
if ( button == "RightButton" ) then
local menu = getglobal("FishingBuddyGraphMenu");
menu.tracking = this.tracking;
menu.point = "CENTER";
menu.relativePoint = "CENTER";
UIDropDownMenu_Initialize(menu, PlotMenuInitialize, "MENU");
FishingBuddy.ToggleDropDownMenu(1, nil, menu, this, 0, 0);
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);
DrawTrackingGraphs();
end
FishingBuddy.TrackingFrame.OnEnter = function()
GameTooltip_AddNewbieTip(FishingBuddy.TRACKINGFRAME, 1.0, 1.0, 1.0,
FishingBuddy.TRACKINGFRAME_CLICKS, 1);
end
FishingBuddy.TrackingFrame.OnLeave = function()
GameTooltip:Hide();
end
+31 -1
View File
@@ -92,6 +92,14 @@
</Layer>
</Layers>
<Frames>
<Frame name="FishingBuddyGraphMenu" inherits="UIDropDownMenuTemplate">
<Scripts>
<OnLoad>
this:SetFrameLevel(0);
UIDropDownMenu_SetWidth(180);
</OnLoad>
</Scripts>
</Frame>
<Frame name="$parentGraph1" enableMouse="true" inherits="FishingTracking24x2Frame">
<Size>
<AbsDimension x="280" y="120"/>
@@ -99,10 +107,21 @@
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="48" y="-116"/>
<AbsDimension x="48" y="-100"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnMouseUp>
FishingBuddy.TrackingFrame.OnClick(arg1);
</OnMouseUp>
<OnEnter>
FishingBuddy.TrackingFrame.OnEnter();
</OnEnter>
<OnLeave>
FishingBuddy.TrackingFrame.OnLeave();
</OnLeave>
</Scripts>
</Frame>
<Frame name="$parentGraph2" enableMouse="true" inherits="FishingTracking53x2Frame">
<Size>
@@ -115,6 +134,17 @@
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnMouseUp>
FishingBuddy.TrackingFrame.OnClick(arg1);
</OnMouseUp>
<OnEnter>
FishingBuddy.TrackingFrame.OnEnter();
</OnEnter>
<OnLeave>
FishingBuddy.TrackingFrame.OnLeave();
</OnLeave>
</Scripts>
</Frame>
</Frames>
<Scripts>
+210 -163
View File
@@ -7,121 +7,113 @@ local WATCHDRAGGER_SHOW_DELAY = 0.2;
local WATCHDRAGGER_FADE_TIME = 0.15;
local DRAGFRAME_TEXTURES = {
"Background",
"TopLeft",
"TopRight",
"BottomLeft",
"BottomRight",
"Top",
"Bottom",
"Left",
"Right"
};
local function PlaceDraggerFrame()
local where = FishingBuddy.GetSetting("WatcherLocation");
if ( not where ) then
where = {};
where.x = 0;
where.y = -384;
end
FishingWatchDrag:ClearAllPoints();
FishingWatchDrag:SetPoint("TOPLEFT", "UIParent", "TOPLEFT",
where.x, where.y);
end
local function ShowDraggerFrame()
if ( not FishingWatchDragFrame:IsVisible() ) then
if ( not FishingWatchDrag:IsVisible() ) then
FishingWatchFrame:Show();
local width = FishingWatchFrame:GetWidth();
local height = FishingWatchFrame:GetHeight();
FishingWatchDragFrame:SetHeight(height);
FishingWatchDragFrame:SetWidth(width);
FishingWatchDragFrame:Show();
for index, value in DRAGFRAME_TEXTURES do
UIFrameFadeIn(getglobal("FishingWatchDragFrame"..value), WATCHDRAGGER_FADE_TIME, 0, 0.25);
end
FishingWatchDrag:SetHeight(height);
FishingWatchDrag:SetWidth(width);
FishingWatchTab:SetText(FishingBuddy.NAME);
PanelTemplates_TabResize(10, FishingWatchTab);
FishingWatchDrag:Show();
FishingWatchTab:Show();
UIFrameFadeIn(FishingWatchDrag, WATCHDRAGGER_FADE_TIME, 0, 0.15);
UIFrameFadeIn(FishingWatchTab, WATCHDRAGGER_FADE_TIME, 0, 1.0);
GameTooltip_AddNewbieTip(FishingBuddy.NAME, 1.0, 1.0, 1.0,
FishingBuddy.WATCHERCLICKHELP, 1);
end
end
local function HideDraggerFrame()
if ( FishingWatchDragFrame:IsVisible() ) then
for index, value in DRAGFRAME_TEXTURES do
UIFrameFadeOut(getglobal("FishingWatchDragFrame"..value), WATCHDRAGGER_FADE_TIME, 0.25, 0);
local function HideDraggerFrame(save)
if ( FishingWatchDrag:IsVisible() ) then
if ( save ) then
FishingWatchFrame:Show();
local qx = UIParent:GetLeft()
local qy = UIParent:GetTop();
local wx = FishingWatchDrag:GetLeft()
local wy = FishingWatchDrag:GetTop();
local where;
if ( wx and wy ) then
where = {};
where.x = wx - qx;
where.y = wy - qy;
end
FishingBuddy.SetSetting("WatcherLocation", where);
end
FishingWatchDragFrame:Hide();
local qx, qy = UIParent:GetCenter();
local wx, wy = FishingWatchDragFrame:GetCenter();
local where = {};
where.x = qx - wx;
where.y = wy - qy;
FishingBuddy.SetSetting("WatcherLocation", where);
UIFrameFadeOut(FishingWatchDrag, WATCHDRAGGER_FADE_TIME, 0.15, 0);
UIFrameFadeOut(FishingWatchTab, WATCHDRAGGER_FADE_TIME, 1.0, 0);
FishingWatchDrag:Hide();
FishingWatchTab:Hide();
GameTooltip:Hide();
end
end
local function ResetWatcherFrame(update)
FishingWatchTab:Show();
FishingWatchDrag:Show();
FishingWatchDrag:ClearAllPoints();
FishingWatchDrag:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
HideDraggerFrame(true);
if ( update ) then
FishingBuddy.WatchUpdate();
end
end
FishingBuddy.ShowDraggerFrame = ShowDraggerFrame;
FishingBuddy.HideDraggerFrame = HideDraggerFrame;
FishingBuddy.PlaceDraggerFrame = PlaceDraggerFrame;
FishingBuddy.ResetWatcherFrame = ResetWatcherFrame;
FishingBuddy.Commands[FishingBuddy.WATCHER] = {};
FishingBuddy.Commands[FishingBuddy.WATCHER].help = FishingBuddy.WATCHER_HELP;
FishingBuddy.Commands[FishingBuddy.WATCHER].func =
function(what)
if ( what and ( what == FishingBuddy.RESET ) ) then
FishingWatchDragFrame:ClearAllPoints();
FishingWatchDragFrame:SetPoint("CENTER", "UIParent",
"CENTER", 0, 0);
FishingWatchDragFrame:Hide();
FishingBuddy.SetSetting("WatcherLocation", nil);
return true;
ResetWatcherFrame(true);
return true;
end
end;
-- handle really old versions
local function UpdateUnknownZones(zone, subzone)
if ( FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN] ) then
if ( FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN][subzone] ) then
if ( not FishingBuddy_Info["FishingHoles"][zone] ) then
FishingBuddy_Info["FishingHoles"][zone] = { };
tinsert(FishingBuddy.SortedZones, zone);
table.sort(FishingBuddy.SortedZones);
end
if ( not FishingBuddy_Info["FishingHoles"][zone][subzone] ) then
FishingBuddy_Info["FishingHoles"][zone][subzone] = { };
end
for k,v in FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN][subzone] do
FishingBuddy_Info["FishingHoles"][zone][subzone][k] = v;
end
FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN][subzone] = nil;
end
FishingBuddy.Locations.DataChanged(zone, subzone);
-- Duh, table.getn doesn't work because there aren't any integer
-- keys in this table
if ( next(FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN]) == nil ) then
FishingBuddy_Info["FishingHoles"][FishingBuddy.UNKNOWN] = nil;
local pos;
while ( pos < table.getn(FishingBuddy.SortedZones) ) do
if ( FishingBuddy.SortedZones[pos] == FishingBuddy.UNKNOWN ) then
break;
-- fix old data
local function UpdateUnknownZone(zone, subzone, zidx, sidx)
local uzidx = FishingBuddy.GetZoneIndex(FishingBuddy.UNKNOWN);
if ( uzidx ) then
local fh = FishingBuddy_Info["FishingHoles"];
for usidx in fh[uzidx] do
local uszone = FishingBuddy_Info["SubZones"][uzidx][usidx];
if ( uszone == subzone ) then
for k,v in fh[uzidx][usidx] do
if ( fh[zidx][sidx][k] ) then
fh[zidx][sidx][k] = fh[zidx][sidx][k] + v;
else
fh[zidx][sidx][k] = v;
end
end
for k,_ in fh[uzidx][usidx] do
fh[uzidx][usidx][k] = nil;
end
pos = pos + 1;
end
tremove(FishingBuddy.SortedZones, pos);
end
end
end
-- fix a bug where we were recording 'GetZoneText' instead
-- of 'GetRealZoneText'
local function UpdateRealZones(zone, subzone)
local oldzone = GetZoneText();
if ( FishingBuddy_Info["FishingHoles"][oldzone] and oldzone ~= zone ) then
if ( not FishingBuddy_Info["FishingHoles"][zone] ) then
FishingBuddy_Info["FishingHoles"][zone] = { };
end
for oldsubzone in FishingBuddy_Info["FishingHoles"][oldzone] do
local sub = oldsubzone;
if ( oldsubzone == oldzone ) then
sub = subzone;
end
if ( not FishingBuddy_Info["FishingHoles"][zone][sub] ) then
FishingBuddy_Info["FishingHoles"][zone][sub] = {};
end
for k,v in FishingBuddy_Info["FishingHoles"][oldzone][oldsubzone] do
FishingBuddy_Info["FishingHoles"][zone][sub][k] = v;
end
end
FishingBuddy_Info["FishingHoles"][oldzone] = nil;
end
end
-- Fish watcher functions
FishingBuddy.WatchUpdate = function()
if ( FishingWatchFrame:IsVisible() ) then
HideDraggerFrame();
FishingWatchFrame:Hide();
for i=1, MAX_FISHINGWATCH_LINES, 1 do
local line = getglobal("FishingWatchLine"..i);
@@ -129,50 +121,60 @@ FishingBuddy.WatchUpdate = function()
end
end
local reset = FishingBuddy.GetSetting("ResetWatcher");
if ( not reset or reset < 1 ) then
ResetWatcherFrame(false);
FishingBuddy.SetSetting("ResetWatcher", 1);
end
local zone, subzone = FishingBuddy.GetZoneInfo();
local zidx, sidx = FishingBuddy.GetZoneIndex(zone, subzone);
UpdateUnknownZones(zone, subzone);
UpdateRealZones(zone, subzone);
UpdateUnknownZone();
local fz = FishingBuddy_Info["FishingHoles"][zone];
if ( FishingBuddy.GetSetting("WatchFishies") == 0 or
not fz or not fz[subzone] ) then
if ( FishingBuddy.GetSetting("WatchFishies") == 0 ) then
return;
end
if ( FishingBuddy.GetSetting("WatchOnlyWhenFishing") == 1 and
not FishingBuddy.IsFishingPole() ) then
not FishingBuddy.API.IsFishingPole() ) then
return;
end
local fz = FishingBuddy_Info["FishingHoles"][zidx];
local current = FishingBuddy.currentFishies;
local ff = FishingBuddy_Info["Fishies"];
local fishsort = {};
local totalCount = 0;
local totalCurrent = 0;
local gotDiffs = false;
for fishid in fz[subzone] do
local info = {};
info.text = ff[fishid].name;
info.count = fz[subzone][fishid];
totalCount = totalCount + info.count;
if ( current[subzone] ) then
info.current = current[subzone][fishid] or 0;
else
info.current = 0;
end
if ( info.current > 0 and info.current ~= info.count ) then
gotDiffs = true;
end
totalCurrent = totalCurrent + info.current;
tinsert(fishsort, info);
end
if ( totalCount == 0 ) then
return;
end
if ( fz and fz[sidx] ) then
for fishid in fz[sidx] do
local info = {};
if ( not FishingBuddy_Info["HiddenFishies"][fishid] ) then
info.text = ff[fishid].name;
end
info.count = fz[sidx][fishid];
totalCount = totalCount + info.count;
if ( current[sidx] ) then
info.current = current[sidx][fishid] or 0;
else
info.current = 0;
end
if ( info.current > 0 and info.current ~= info.count ) then
gotDiffs = true;
end
totalCurrent = totalCurrent + info.current;
tinsert(fishsort, info);
end
FishingBuddy.FishSort(fishsort);
-- if ( totalCount == 0 and totalCurrent == 0 ) then
-- return;
-- end
FishingBuddy.FishSort(fishsort);
end
local fishingWatchMaxWidth = 0;
local tempWidth;
@@ -195,6 +197,7 @@ FishingBuddy.WatchUpdate = function()
local entry = getglobal("FishingWatchLine"..index);
local skill, mods = FishingBuddy.GetCurrentSkill();
local line = "Skill: |cff00ff00"..skill.."+"..mods.."|r";
local StartedFishing = FishingBuddy.StartedFishing;
if ( StartedFishing ) then
local elapsed = GetTime() - StartedFishing;
local t = math.floor(elapsed);
@@ -231,71 +234,59 @@ FishingBuddy.WatchUpdate = function()
if( index <= MAX_FISHINGWATCH_LINES ) then
local entry = getglobal("FishingWatchLine"..index);
local fishie = info.text;
local amount = info.count;
local s,e = string.find(fishie, FishingBuddy.RAW.." ");
if ( s ) then
if ( s > 1 ) then
fishie = string.sub(fishie, 1, s-1)..string.sub(fishie, e+1);
else
fishie = string.sub(fishie, e+1);
if ( fishie ) then
fishie = FishingBuddy.StripRaw(fishie);
local amount = info.count;
local fishietext = fishie.." ("..amount;
if ( dopercent == 1 ) then
local percent = format("%.1f", ( amount / totalCount ) * 100);
fishietext = fishietext.." : "..percent.."%";
end
else
s,e = string.find(fishie, " "..FishingBuddy.RAW);
if ( s ) then
fishie = string.sub(fishie, 1, s-1)..string.sub(fishie, e+1);
if ( gotDiffs ) then
amount = info.current;
local color;
fishietext = fishietext..", |c"..FishingBuddy.Colors.GREEN..amount;
if ( dopercent == 1 ) then
local percent = format("%.1f", ( amount / totalCurrent ) * 100);
fishietext = fishietext.." : "..percent.."%";
end
fishietext = fishietext.."|r";
end
end
local fishietext = fishie.." ("..amount;
if ( dopercent == 1 ) then
local percent = format("%.1f", ( amount / totalCount ) * 100);
fishietext = fishietext.." : "..percent.."%";
end
if ( gotDiffs ) then
amount = info.current;
local color;
fishietext = fishietext..", |c"..FishingBuddy.Colors.GREEN..amount;
if ( dopercent == 1 ) then
local percent = format("%.1f", ( amount / totalCurrent ) * 100);
fishietext = fishietext.." : "..percent.."%";
end
fishietext = fishietext.."|r";
end
fishietext = fishietext..")";
entry:SetText(fishietext);
tempWidth = entry:GetWidth();
entry:Show();
if ( tempWidth > fishingWatchMaxWidth ) then
fishingWatchMaxWidth = tempWidth;
fishietext = fishietext..")";
entry:SetText(fishietext);
tempWidth = entry:GetWidth();
entry:Show();
if ( tempWidth > fishingWatchMaxWidth ) then
fishingWatchMaxWidth = tempWidth;
end
index = index + 1;
end
end
index = index + 1;
end
FishingWatchFrame:SetHeight(index * 13);
FishingWatchFrame:SetHeight((index - 1) * 13);
FishingWatchFrame:SetWidth(fishingWatchMaxWidth + 10);
ShowDraggerFrame();
PlaceDraggerFrame();
FishingWatchFrame:Show();
end
FishingBuddy.WatchFrame.OnLoad = function()
local where = FishingBuddy.GetSetting("WatcherLocation");
if ( not where ) then
where = {};
where.x = 0;
where.y = 0;
end
FishingWatchDragFrame:ClearAllPoints();
FishingWatchDragFrame:SetPoint("CENTER", "UIParent", "CENTER",
where.x, where.y);
FishingWatchDragFrame:Hide();
this:ClearAllPoints();
this:SetPoint("TOPRIGHT", "FishingWatchDragFrame", "TOPRIGHT", 0, 0);
this:SetPoint("TOPLEFT", "FishingWatchDrag", "TOPLEFT", 0, 0);
-- Make everything draw at least once
FishingWatchDrag:Show();
FishingWatchTab:Show();
FishingWatchDrag:Hide();
FishingWatchTab:Hide();
end
local hover;
FishingBuddy.WatchFrame.OnUpdate = function(elapsed)
if ( FishingWatchFrame:IsVisible() ) then
if ( MouseIsOver(FishingWatchFrame) ) then
if ( MouseIsOver(FishingWatchFrame) or
( FishingWatchTab:IsVisible() and MouseIsOver(FishingWatchTab) ) ) then
local xPos, yPos = GetCursorPosition();
if ( hover ) then
if ( hover.xPos == xPos and hover.yPos == yPos ) then
@@ -315,12 +306,68 @@ FishingBuddy.WatchFrame.OnUpdate = function(elapsed)
ShowDraggerFrame();
end
else
HideDraggerFrame();
HideDraggerFrame(true);
hover = nil;
end
elseif ( hover ) then
HideDraggerFrame();
HideDraggerFrame(true);
hover = nil;
end
end
FishingBuddy.WatchFrame.OnMouseDown = function()
if ( arg1 == "LeftButton" ) then
FishingWatchDrag:StartMoving();
end
end
FishingBuddy.WatchFrame.OnMouseUp = function()
if ( arg1 == "LeftButton" ) then
FishingWatchDrag:StopMovingOrSizing();
end
end
local function HiddenFishToggle(id)
if ( FishingBuddy_Info["HiddenFishies"][id] ) then
FishingBuddy_Info["HiddenFishies"][id] = nil;
else
FishingBuddy_Info["HiddenFishies"][id] = true;
end;
FishingBuddy.WatchUpdate();
end
-- save some memory by keeping one copy of each one
local WatcherToggleFunctions = {};
-- let's use closures
local function WatcherMakeToggle(fishid)
if ( not WatcherToggleFunctions[fishid] ) then
local id = fishid;
WatcherToggleFunctions[fishid] = function() HiddenFishToggle(id); end;
end
return WatcherToggleFunctions[fishid];
end
FishingBuddy.WatchFrame.MakeToggle = WatcherMakeToggle;
local function WatchMenu_Initialize()
local zidx, sidx = FishingBuddy.GetZoneIndex();
local fz = FishingBuddy_Info["FishingHoles"][zidx];
if ( fz and fz[sidx] ) then
local ff = FishingBuddy_Info["Fishies"];
for fishid in fz[sidx] do
info = {};
info.text = ff[fishid].name;
info.func = WatcherMakeToggle(fishid);
info.checked = ( not FishingBuddy_Info["HiddenFishies"][fishid] );
info.keepShownOnClick = 1;
UIDropDownMenu_AddButton(info);
end
end
end
FishingBuddy.WatchFrame.OnClick = function()
if ( arg1 == "RightButton" ) then
local menu = getglobal("FishingBuddyWatcherMenu");
UIDropDownMenu_Initialize(menu, WatchMenu_Initialize, "MENU");
ToggleDropDownMenu(level, nil, menu, "FishingWatchDrag", 0, 0);
end
end
+225 -231
View File
@@ -7,258 +7,252 @@
</Size>
</FontString>
<Frame name="FishingWatchDragFrame" toplevel="true" enableMouse="true" movable="true" parent="UIParent" hidden="true">
<Size>
<AbsDimension x="280" y="20"/>
</Size>
<Button name="FishingWatchDrag" toplevel="true" enableMouse="true" movable="true" parent="UIParent" hidden="true">
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentBackground" file="Interface\ChatFrame\ChatFrameBackground">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="-2" y="3"/>
</Offset>
</Anchor>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="2" y="3"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMLEFT">
<Offset>
<AbsDimension x="-2" y="-6"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT">
<Offset>
<AbsDimension x="3" y="-6"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<Texture name="$parentTopLeft" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
<Anchor point="TOPRIGHT"/>
<Anchor point="BOTTOMLEFT"/>
<Anchor point="BOTTOMRIGHT"/>
</Anchors>
<TexCoords left="0" right="0.25" top="0" bottom="0.125"/>
</Texture>
<Texture name="$parentTopRight" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<TexCoords left="0.75" right="1.0" top="0" bottom="0.125"/>
</Texture>
<Texture name="$parentBottomLeft" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<TexCoords left="0" right="0.25" top="0.7265625" bottom="0.8515625"/>
</Texture>
<Texture name="$parentBottomRight" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<TexCoords left="0.75" right="1.0" top="0.7265625" bottom="0.8515625"/>
</Texture>
<Texture name="$parentTop" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT"/>
<Anchor point="RIGHT"/>
</Anchors>
<TexCoords left="0.25" right="0.75" top="0" bottom="0.125"/>
</Texture>
<Texture name="$parentBottom" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="LEFT"/>
<Anchor point="RIGHT"/>
</Anchors>
<TexCoords left="0.25" right="0.75" top="0.7265625" bottom="0.8515625"/>
</Texture>
<Texture name="$parentLeft" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOP"/>
<Anchor point="BOTTOM"/>
</Anchors>
<TexCoords left="0" right="0.25" top="0.125" bottom="0.7265625"/>
</Texture>
<Texture name="$parentRight" file="Interface\ChatFrame\ChatFrameBorder">
<Size>
<AbsDimension x="16" y="16"/>
</Size>
<Anchors>
<Anchor point="TOP"/>
<Anchor point="BOTTOM"/>
</Anchors>
<TexCoords left="0.75" right="1.0" top="0.125" bottom="0.7265625"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOPLEFT");
GameTooltip:SetText(FishingBuddy.LEFTCLICKTODRAG);
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
<OnLoad>
this:RegisterForClicks("RightButtonUp");
</OnLoad>
<OnClick>
FishingBuddy.WatchFrame.OnClick();
</OnClick>
<OnMouseDown>
if ( arg1 == "LeftButton" ) then
this:StartMoving();
end
FishingBuddy.WatchFrame.OnMouseDown();
</OnMouseDown>
<OnMouseUp>
this:StopMovingOrSizing();
FishingBuddy.WatchFrame.OnMouseUp();
</OnMouseUp>
</Scripts>
</Frame>
</Button>
<Frame name="FishingWatchFrame" toplevel="true" enableMouse="false" movable="true" parent="UIParent" hidden="true">
<Button name="FishingWatchTab" toplevel="true" enableMouse="false" parent="UIParent" hidden="true">
<Size>
<AbsDimension x="64" y="32"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="FishingWatchDrag" relativePoint="TOPLEFT">
<AbsDimension x="0" y="2"/>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\ChatFrame\ChatFrameTab">
<Size>
<AbsDimension x="16" y="32"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<TexCoords left="0.0" right="0.25" top="0.0" bottom="1.0"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\ChatFrame\ChatFrameTab">
<Size>
<AbsDimension x="44" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/>
</Anchors>
<TexCoords left="0.25" right="0.75" top="0.0" bottom="1.0"/>
</Texture>
<Texture name="$parentRight" file="Interface\ChatFrame\ChatFrameTab">
<Size>
<AbsDimension x="16" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentMiddle" relativePoint="RIGHT"/>
</Anchors>
<TexCoords left="0.75" right="1.0" top="0.0" bottom="1.0"/>
</Texture>
</Layer>
</Layers>
<NormalText name="$parentText" inherits="GameFontNormalSmall">
<Size>
<AbsDimension x="280" y="20"/>
<AbsDimension x="50" y="8"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="FishingWatchDragFrame" relativePoint="TOPRIGHT">
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="FishingWatchLine1" inherits="FishingWatchFontTemplate" hidden="true">
<Size>
<AbsDimension x="0" y="13"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine2" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine1" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine3" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine2" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine4" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine3" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine5" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine4" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine6" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine5" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine7" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine6" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine8" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine7" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine9" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine8" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine10" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine9" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine11" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine10" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine12" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine11" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine13" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine12" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine14" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine13" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine15" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine14" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine16" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine15" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine17" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine16" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine18" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine17" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine19" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine18" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine20" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine19" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
FishingBuddy.WatchFrame.OnLoad();
</OnLoad>
<OnUpdate>
FishingBuddy.WatchFrame.OnUpdate(arg1);
</OnUpdate>
</Scripts>
</Frame>
</NormalText>
<HighlightTexture file="Interface\PaperDollInfoFrame\UI-Character-Tab-Highlight" alphaMode="ADD">
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft">
<Offset>
<AbsDimension x="0" y="-7"/>
</Offset>
</Anchor>
<Anchor point="RIGHT" relativeTo="$parentRight">
<Offset>
<AbsDimension x="0" y="-7"/>
</Offset>
</Anchor>
</Anchors>
</HighlightTexture>
<Scripts>
<OnLoad>
this:RegisterForClicks("RightButtonUp");
</OnLoad>
<OnClick>
FishingBuddy.WatchFrame.OnClick();
</OnClick>
<OnMouseDown>
FishingBuddy.WatchFrame.OnMouseDown();
</OnMouseDown>
<OnMouseUp>
FishingBuddy.WatchFrame.OnMouseUp();
</OnMouseUp>
</Scripts>
</Button>
<Frame name="FishingWatchFrame" toplevel="true" enableMouse="false" movable="true" parent="UIParent" hidden="true">
<Size>
<AbsDimension x="280" y="20"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchDrag" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="FishingWatchLine1" inherits="FishingWatchFontTemplate" hidden="true">
<Size>
<AbsDimension x="0" y="13"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine2" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine1" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine3" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine2" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine4" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine3" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine5" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine4" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine6" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine5" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine7" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine6" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine8" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine7" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine9" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine8" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine10" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine9" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine11" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine10" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine12" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine11" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine13" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine12" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine14" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine13" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine15" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine14" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine16" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine15" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine17" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine16" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine18" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine17" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine19" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine18" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
<FontString name="FishingWatchLine20" inherits="FishingWatchFontTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="FishingWatchLine19" relativePoint="BOTTOMLEFT"/>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Frame name="FishingBuddyWatcherMenu" inherits="UIDropDownMenuTemplate">
<Scripts>
<OnLoad>
this:SetFrameLevel(0);
UIDropDownMenu_SetWidth(180);
</OnLoad>
</Scripts>
</Frame>
</Frames>
<Scripts>
<OnLoad>
FishingBuddy.WatchFrame.OnLoad();
</OnLoad>
<OnUpdate>
FishingBuddy.WatchFrame.OnUpdate(arg1);
</OnUpdate>
</Scripts>
</Frame>
</Ui>
+10
View File
@@ -104,6 +104,14 @@ GraphHandler.Register = function(kind, what)
end
end
GraphHandler.ClearPlot = function(frame)
for _,elem in { GraphHandler.BAR, GraphHandler.LEGEND } do
for idx,what in frame.elements[elem] do
what:Hide();
end
end
end
GraphHandler.PlotData = function(frame, data, offset, skip, r, g, b)
local limit = table.getn(data);
local start = 1;
@@ -144,6 +152,7 @@ GraphHandler.PlotLegend = function(frame, ldx, name, item, texture, r, g, b)
local color = getglobal(name.."Color");
-- SetColorBar(color, legend, nil, nil, nil, nil, r, g, b);
SetColorBar(color, legend, 0, 1, 10, 16, r, g, b);
color:Show();
icon:Show();
tex:SetTexture(texture);
tex:Show();
@@ -233,6 +242,7 @@ GraphHandler.PlotGrid = function(frame, label, texth, width, textv, height)
else
text:SetPoint("TOP", line, "BOTTOM", 0, -4);
end
text:Show();
tdx = tdx + 1;
end
end
Binary file not shown.
+86 -1
View File
@@ -1,3 +1,88 @@
Version 0.8.8e
- Split out FBEnEspagnol addon to a separate download (new <ui.worldofwar.net> feature
Version 0.8.8d
- Update toc for patch 1.12
- Small cleanup changes
Version 0.8.8c
- Handle "Oil Spills" as fishing pools
- Fix an intermittent text alignment bug in the locations window
- Make FishingBuddyFu for Fubar 2.0 work nicely (mostly expose some functions)
Version 0.8.8b
- Add tracking selection menu to locations window
Version 0.8.8a
- Fix a nil error in the tracking popup if you haven't caught one of the
default fish
- '/fb updatedb' print out a message
- Grab the names of fish we catch if we don't know it already (old data updating)
Version 0.8.8
- Improved cycle fish tracking -- right-click to choose fish to graph
- Update the TastyFish count every time the window is shown during the
Exravaganza so that our count is always 'right'
- Fix window always showing bug
Version 0.8.7g
- Fix a typo introduced in version f
- Really, really check for Pat Nagle's Fish Terminator correctly (thanks Saur!)
Version 0.8.7f
- Put changes from d and e into the same release
Version 0.8.7g
- Fix a typo introduced in version f
- Really, really check for Pat Nagle's Fish Terminator correctly
Version 0.8.7f
- Put changes from d and e into the same release
Version 0.8.7e
- Fix missing color 'YELLOW'
- Fix translation errors that were causing string.format errors in German and Spanish
- Fix problems with the Terminator
Version 0.8.7d
- Fix broken minimap enable logic for menus
- Fix nil error in startup conversion of old versions
Version 0.8.7c
- Fix incompatibility with version 1.11 and highlight text
Version 0.8.7b
- Clean up event handling some more (only listen when we're fishing)
- Fix 'doubled' fishing location display for new fishing areas
Version 0.8.7a
- Hopefully fix an intermittent bug that crashes the client during
the Extravaganza when leaving Booty Bay
- Stop losing the OutfitDisplayFrame outfit when logging out
- Should correctly reset the Watcher Window for all toons
- Add in 'FBEnEspagnol' for Spanish-speaking fisherbuddies
- Use the now-builtin Outfitter 'find by stat' function
Version 0.8.7
- Integration with Gatherer (depends on the tooltip when you cast)
- Add a 'hide these icky fish' menu to the watcher window
- Put the keybinding for 'Suit Up and Go Fishing!' back in
- Add an option to only fish from pools during the Extravaganza
- Better (and more) French translation support from krogh
- Rework debugging output so that people don't get surprised by it anymore
- Rework zone and subzone storage to reduce space
- Don't save default values (smaller saved vars, faster loading)
- Tune event handling for faster world transitions
- Move a lot of information into tooltips in the display window
- Removed 'Fast Cast' again since patch 1.10.1 breaks it
- Fix translation loader to actually work (even in English!)
- Rewrite Extravaganza code and hopefully fix the crashes
- Add an offset menu to handle differences between game and machine time
- Fix the display bug when switching between locations and fishes
- If more than one outfit switcher is available, allow a choice
- Don't allow a recast if the fishing loot window is up
- Add 'updatedb' command to link info for fish with missing data (can disconnect!)
Version 0.8.6h
- Fast Cast is back!
@@ -47,7 +132,7 @@ Version 0.8.5g
- Include OutfitDisplayFrame fix for nil error when fewer than five bags
Version 0.8.5f
- Auto-set sound volumes to make the bobber sounds stand out
- Auto-set sound volumes to make the bobber noise stand out (Good suggestion SBaL!)
Version 0.8.5e
- Don't count "Nat Pagle's Fish Terminator" as a fishing pole, even if it looks like one
+40
View File
@@ -0,0 +1,40 @@
Future features
- Count tastyfish in your bag instead of as you catch them (lrdx)
- Built-in notepad (Kiiingy)
- "fish trash" feature (Jaim Sandar)
* only fish in schools during Extravaganza (Lrdx)
- multi-machine database merge (Alcasius)
* mute everything but bobber sounds (SBaL)
- current inventory fish count (islandercaleb)
- more summary information while fishing (time now/session fish now/session) (Xantandor)
- Grand totals in fish window
- select specific frame to show when icons are clicked (Talyn)
- remove quest items from the list of things caught (zino)
- separate out pool fish from everything else for counting and percentages
* save the show fish/locations choice (Dark Imakuni)
* display both lifetime and current fish info in the watcher (LBlaze)
* Save helm/cloak settings per outfit in ODF (Valzic)
* remember tastyfish pool locations (KayJayDK)
*/- Track cycle fish (Bruntlief)
* Show current zone in watcher (Buio)
* Force item slot empty in ODF (Dark Imakuni)
* Minimap icon (Tarklash)
- Skinning buddy (Devonkross)
* elapsed fishing time (Anakar)
* show current skill level in watcher (Valzic)
* Titan Panel support (Dark Imakuni)
* Only show counts -- no percentages (Dark Imakuni)
* Gatherer integration (Vreejack)
- Recipe list for fish (Paul2200)
- display total fish caught all time and this session (truefreak)
- fish caught database per toon (Filius)
* Outfitter support (lots)
* Fishing watcher movable (lots)
* Save fishing level information (Yeoman, RamahP)
- Lost fish count (RamahP)
- HUD for fishing (lures, target fish?, counts, etc.)
- Graphical fish watcher window, i.e. icons with counts
- Font/size selection for watcher window (Fritos)
- Auto-open support for fished items (chests, bloated fish, clams)
- Expand fish pool tracking (i.e. display them like tastyfish schools)
+39 -38
View File
@@ -14,7 +14,7 @@ FishingTranslations["deDE"] = {
LOCATIONS_TAB = "Fische",
OUTFITS_INFO = "W\195\164hlen aus, was du beim Fischen tragen willst",
OUTFITS_TAB = "Ausr\195\188stung",
OPTIONS_INFO = "Einstellungen",
OPTIONS_INFO = " Einstellungen",
OPTIONS_TAB = "Einstellungen",
TRACKING_INFO = "Zeige graphische #NAME#-Anzeige der letzten F\195\164nge",
TRACKING_TAB = "Saisonfische",
@@ -34,6 +34,13 @@ FishingTranslations["deDE"] = {
NOTRACK = "Aufzeichnung-nicht",
TRACKING = "aufzeichnen",
-- Thanks Maischter!
SCHOOL = "Schwarm", -- e.g. '\195\150lige Schwarzmaul Schwarm'
FLOATING_WRECKAGE = "Schwimmende Wrackteile",
FLOATING_DEBRIS = "Schwimmende Tr\195\188mmer",
ELEM_WATER = "Elementarwasser",
OIL_SPILL = "\195\150lpest",
ADD = "hinzuf\195\188gen",
REPLACE = "ersetze",
UPDATE = "update",
@@ -43,8 +50,6 @@ FishingTranslations["deDE"] = {
CHECK = "check",
NOW = "now",
NOREALM = "unknown realm",
WATCHER = "Watcher",
WATCHER_LOCK = "fixieren",
WATCHER_UNLOCK = "freigeben",
@@ -82,7 +87,7 @@ FishingTranslations["deDE"] = {
CONFIG_SORTBYPERCENT_ONOFF = "Sortiere nach Anzahl gefangener Fische",
CONFIG_SORTBYPERCENT_INFO = "Anzeige sortiert nach Zahl der gefangenen Fische, anstelle von Fischnamen.",
CONFIG_STVTIMER_ONOFF = "Angelwettbewerb-Timer.",
CONFIG_STVTIMER_INFO = "Wenn Sie erm\195\182glicht werden, zeigen Sie einen Countdowntimer für den Anfang des Fischens Extravaganza und ein Countdown vom Timer nach links an.",
CONFIG_STVTIMER_INFO = "Wenn Sie erm\195\182glicht werden, zeigen Sie einen Countdowntimer f\195\188r den Anfang des Fischens Extravaganza und ein Countdown vom Timer nach links an.",
CONFIG_USEBUTTONHOLE_ONOFF = "Verwenden Sie ButtonHole",
CONFIG_USEBUTTONHOLE_INFO = "Wenn es erm\195\182glicht wird, steuert das ButtonHole-addon die minimaptaste. Nehmen bewirkt auf dem folgenden LOGON.",
@@ -91,8 +96,8 @@ FishingTranslations["deDE"] = {
CONFIG_STYLISH_INFO = "Styling-Punkte, inspiriert durch die Draznars Fishing-FAQ auf den (englischen) WoW-Foren.",
CONFIG_STYLISH_TEXT = "Styling: ",
TITAN_CLICKTOSWITCH_ONOFF = "Zum Wechseln der Ausr\195\188stung klicken.",
TITAN_CLICKTOSWITCH_INFO = "Wenn aktiviert, wechselt ein Linksklcik die Ausr\195\188stung, statt nur das #NAME#-Fenster zu \195\182ffnen.",
CLICKTOSWITCH_ONOFF = "Zum Wechseln der Ausr\195\188stung klicken.",
CLICKTOSWITCH_INFO = "Wenn aktiviert, wechselt ein Linksklcik die Ausr\195\188stung, statt nur das #NAME#-Fenster zu \195\182ffnen.",
LEFTCLICKTODRAG = "Link-Klicken zum Schleppen",
@@ -101,7 +106,7 @@ FishingTranslations["deDE"] = {
CONFIG_MINIMAPBUTTON_ONOFF = "Anzeigen des Minimapikons",
CONFIG_MINIMAPBUTTON_INFO = "Zeige #NAME#-Ikon auf der Minimap an.",
CONFIG_ENHANCESOUNDS_ONOFF = "Erh\195\192hen Sie Fischent\195\192ne",
CONFIG_ENHANCESOUNDS_ONOFF = "Erh\195\182hen Sie Fischent\195\182ne",
CONFIG_ENHANCESOUNDS_INFO = "Maximieren Sie Klangvolumen und setzen Sie umgebende Ausgabe herab, um das bobber noise zu lassen wahrnehmbareres beim Fischen.",
-- messages
@@ -119,80 +124,76 @@ FishingTranslations["deDE"] = {
POLEALREADYEQUIPPED = "Sie werden bereits f\195\188r Fischen ausger\195\188stet.",
CANTSWITCHBACK = "Sie haben bereits Ihre Fischenausr\195\188stung entfernt.",
CLEANUP_NONEMSG = "Keine alten Einstellungen bleiben.",
CLEANUP_WILLMSG = "Alte Einstellungen restlich f\195\188r |c0000FF00%s|r: %s.",
CLEANUP_DONEMSG = "Alte Einstellungen entfernt f\195\188r |c0000FF00%s|r: %s.",
CLEANUP_NOOLDMSG = "Es gibt keine alten Einstellungen f\195\188r Spieler |c0000FF00%s|r.",
CLEANUP_WILLMSG = "Alte Einstellungen restlich f\195\188r |c#GREEN#%s|r: %s.",
CLEANUP_DONEMSG = "Alte Einstellungen entfernt f\195\188r |c#GREEN#%s|r: %s.",
CLEANUP_NOOLDMSG = "Es gibt keine alten Einstellungen f\195\188r Spieler |c#GREEN#%s|r.",
NOTLINKABLE = "<Einzelteil ist nicht verbindbar>",
TIMETOGO = "Angelwettbewerb beginnt in %d:%02d",
TIMELEFT = "Angelwettbewerb endet in %d:%02d -- %d %s",
TIMELEFT = "Angelwettbewerb endet in %d:%02d",
STVZONENAME = "Stranglethorn",
TOOLTIP_HINTSWITCH = "Hinweis: wechselt ein Linksklcik die Ausr\195\188stung",
TOOLTIP_HINTTOGGLE = "Hinweis: das #NAME#-Fenster zu \195\182ffnen.",
TOOLTIP_HINT = "Hinweis:";
TOOLTIP_HINTSWITCH = "wechselt ein Linksklcik die Ausr\195\188stung",
TOOLTIP_HINTTOGGLE = "das #NAME#-Fenster zu \195\182ffnen.",
-- Key binding support
BINDING_HEADER_FISHINGBUDDY_BINDINGS = "#NAME#",
BINDING_NAME_FISHINGBUDDY_TOGGLE = "#NAME# anzeigen",
BINDING_NAME_FISHINGBUDDY_SWITCH = "Ausr\195\188stung wechseln",
BINDING_NAME_TOGGLEFISHINGBUDDY_LOC = "#NAME# #LOCATIONS# Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_OUT = "#NAME# #OUTFITS# Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_TRK = "#NAME# #TRACKING# Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_OPT = "#NAME# #OPTIONS# Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_LOC = "#NAME# Zonen-Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_OUT = "#NAME# Outfit-Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_TRK = "#NAME# Tracking-Fenster anzeigen",
BINDING_NAME_TOGGLEFISHINGBUDDY_OPT = "#NAME# Optionen-Fenster anzeigen",
};
FishingTranslations["deDE"].IMPORT_HELP = {
"|c0000FF00/fb #IMPORT#|r",
"|c#GREEN#/fb #IMPORT#|r",
" Importiere Impp's Fishinfo or FishInfo2 Daten.",
};
FishingTranslations["deDE"].SWITCH_HELP = {
"|c0000FF00/fb #SWITCH#|r",
"|c#GREEN#/fb #SWITCH#|r",
" wechsele deine Fischereiausr\195\188stung und -kleidung.",
};
FishingTranslations["deDE"].WATCHER_HELP = {
"|c0000FF00/fb #WATCHER#|r [|c0000FF00#WATCHER_LOCK#|r oder |c0000FF00#WATCHER_UNLOCK#|r oder |c0000FF00#RESET#|r]",
"|c#GREEN#/fb #WATCHER#|r [|c#GREEN##WATCHER_LOCK#|r oder |c#GREEN##WATCHER_UNLOCK#|r oder |c#GREEN##RESET#|r]",
" fixieren .. Fixieren des Watcher-Fenster,",
" freigeben .. Entriegeln zum Verschieben,",
" reset .. Zur\195\188ckstellen",
};
FishingTranslations["deDE"].CURRENT_HELP = {
"|c0000FF00/fb #CURRENT# #RESET#|r",
"|c#GREEN#/fb #CURRENT# #RESET#|r",
" Zur\195\188ckstellen der w\195\164hrend der gegenw\195\164rtigen Session gefangenen Fische.",
};
FishingTranslations["deDE"].CLEANUP_HELP = {
"|c0000FF00/fb #CLEANUP#|r [|c0000FF00#CHECK#|r or |c0000FF00#NOW#|r]",
" S\195\164ubern Sie herauf alte Einstellungen. |c0000FF00#CHECK#|r verzeichnet",
" die alten Einstellungen, die von |c0000FF00#NOW#|r entfernt werden.",
"|c#GREEN#/fb #CLEANUP#|r [|c#GREEN##CHECK#|r or |c#GREEN##NOW#|r]",
" S\195\164ubern Sie herauf alte Einstellungen. |c#GREEN##CHECK#|r verzeichnet",
" die alten Einstellungen, die von |c#GREEN##NOW#|r entfernt werden.",
};
FishingTranslations["deDE"].TRACKING_HELP = {
"|c0000FF00/fb #TRACK#|r [|c0000FF00#HOURLY#|r oder |c0000FF00#WEEKLY#|r] |c00FF00FF<Fish-Link>|r",
"|c#GREEN#/fb #TRACK#|r [|c#GREEN##HOURLY#|r oder |c#GREEN##WEEKLY#|r] |c#PURPLE#<Fish-Link>|r",
" zeichne die Angeldauer f\195\188r die angegebenen",
" Fischart (ein Shift-Klick Link) auf",
"|c0000FF00/fb #NOTRACK#|r |c00FF00FF<fish link>|r",
"|c#GREEN#/fb #NOTRACK#|r |c#PURPLE#<fish link>|r",
" remove the specified fish (a shift click link) from the tracker",
"|c0000FF00/fb #TRACKING#|r",
"|c#GREEN#/fb #TRACKING#|r",
" eine einfache Anzeige, wann die gefangenen",
" Fische gefangen wurden",
};
FishingTranslations["deDE"].HELPMSG = {
"Du kannst |c0000FF00/fishingbuddy|r oder |c0000FF00/fb|r f\195\188r alle Befehle benutzen",
"|c0000FF00/fb|r: schaltet das Fenster ein/aus.",
"|c0000FF00/fb #HELP#|r: zeigt diesern Hilfetext",
"#SWITCH_HELP#",
"#WATCHER_HELP#",
"#CURRENT_HELP#",
"#CLEANUP_HELP#",
"#IMPORT_HELP#",
"#TRACKING_HELP#",
" ",
FishingTranslations["deDE"].PRE_HELP = {
"Du kannst |c#GREEN#/fishingbuddy|r oder |c#GREEN#/fb|r f\195\188r alle Befehle benutzen",
"|c#GREEN#/fb|r: schaltet das Fenster ein/aus.",
"|c#GREEN#/fb #HELP#|r: zeigt diesern Hilfetext",
};
FishingTranslations["deDE"].POST_HELP = {
"Du kannst die Fensteraktivierung und den",
"Befehl zum Wechseln deiner Ausstattung in den",
"\"Tastaturbelegungen\" festlegen.",
+30 -85
View File
@@ -1,7 +1,7 @@
FishingTranslations["esES"] = {
NAME = "Fishing Buddy",
DESCRIPTION1 = "Seguimiento de las capturas que has hecho",
DESCRIPTION2 = "y maneja tu caña de pescar.",
DESCRIPTION2 = "y maneja tu ca\195\177a de pescar.",
-- Tab labels and tooltips
LOCATIONS_INFO = "Muestra info de zona de pesca",
@@ -10,7 +10,7 @@ FishingTranslations["esES"] = {
OUTFITS_TAB = "Equipos",
OPTIONS_INFO = "Establece #NAME# opciones",
OPTIONS_TAB = "Opciones",
TRACKING_INFO = "Muestra #NAME# informacióon de pesca ciclica",
TRACKING_INFO = "Muestra #NAME# informaci\195\179on de pesca ciclica",
TRACKING_TAB = "Seguimiento",
POINT = "punto",
@@ -28,7 +28,9 @@ FishingTranslations["esES"] = {
NOTRACK = "no siguas",
TRACKING = "siguiendo",
ADD = "añde",
OIL_SPILL = "Perdita de Petro'leo",
ADD = "a\195\177de",
REPLACE = "reemplaza",
UPDATE = "actualiza",
CURRENT = "actual",
@@ -64,55 +66,54 @@ FishingTranslations["esES"] = {
-- Option names and tooltips
CONFIG_SHOWNEWFISHIES_ONOFF = "Muestra nuevos peces",
CONFIG_SHOWNEWFISHIES_INFO = "Muestra un mensaje en el chat cuando la captura es nueva en el área actual.",
CONFIG_SHOWNEWFISHIES_INFO = "Muestra un mensaje en el chat cuando la captura es nueva en el \195\161rea actual.",
CONFIG_FISHWATCH_ONOFF = "Observador",
CONFIG_FISHWATCH_INFO = "Muestra un texto con la captura en el área actual.",
CONFIG_FISHWATCH_INFO = "Muestra un texto con la captura en el \195\161rea actual.",
CONFIG_FISHWATCHSKILL_ONOFF = "Muestra habilidad actual",
CONFIG_FISHWATCHSKILL_INFO = "Muestra habilidad y mods en el área de observación.",
CONFIG_FISHWATCHSKILL_INFO = "Muestra habilidad y mods en el \195\161rea de observaci\195\179n.",
CONFIG_FISHWATCHZONE_ONOFF = "Muestra zona actual",
CONFIG_FISHWATCHZONE_INFO = "Muestra zona actual en el área de observación.",
CONFIG_FISHWATCHZONE_INFO = "Muestra zona actual en el \195\161rea de observaci\195\179n.",
CONFIG_FISHWATCHONLY_ONOFF = "Solo cuando pescas",
CONFIG_FISHWATCHONLY_INFO = "Solo muestra capturas en el observador si estas pescando actualmente",
CONFIG_FISHWATCHPERCENT_ONOFF = "Muestra porcentaje capturado",
CONFIG_FISHWATCHPERCENT_INFO = "Muestra el porcentaje de cada tipo de pez en el observador",
CONFIG_EASYLURES_ONOFF = "Señuelo facil",
CONFIG_EASYLURES_INFO = "Si activado, se aplicará un señuelo a tu caña antes de empezar a pescar siempre que lo necesites.",
CONFIG_ONLYMINE_ONOFF = "Equipa solo caña",
CONFIG_ONLYMINE_INFO = "Si activado, captura facil solo cequeará si llevas la caña (p.ej. no buscará todas las posibilidades).",
CONFIG_EASYLURES_ONOFF = "Se\195\177uelo facil",
CONFIG_EASYLURES_INFO = "Si activado, se aplicar\195\161 un se\195\177uelo a tu ca\195\177a antes de empezar a pescar siempre que lo necesites.",
CONFIG_ONLYMINE_ONOFF = "Equipa solo ca\195\177a",
CONFIG_ONLYMINE_INFO = "Si activado, captura facil solo cequear\195\161 si llevas la ca\195\177a (p.ej. no buscar\195\161 todas las posibilidades).",
CONFIG_SHOWLOCATIONZONES_ONOFF = "Muestra zonas",
CONFIG_SHOWLOCATIONZONES_INFO = "Muestra zonas y subzonas.",
CONFIG_SORTBYPERCENT_ONOFF = "Por número de capturas",
CONFIG_SORTBYPERCENT_INFO = "Ordena la pantalla con el número de peces capturadas y no por el nombre.",
CONFIG_SORTBYPERCENT_ONOFF = "Por n\195\186mero de capturas",
CONFIG_SORTBYPERCENT_INFO = "Ordena la pantalla con el n\195\186mero de peces capturadas y no por el nombre.",
CONFIG_STVTIMER_ONOFF = "Marcador de Fishing Extravaganza",
CONFIG_STVTIMER_INFO = "Si activado, muestra la cuenta atras para el comienzo de Fishing Extravaganza y muestra el tiempo restante.",
CONFIG_USEBUTTONHOLE_ONOFF = "Usa ButtonHole",
CONFIG_USEBUTTONHOLE_INFO = "Si activo, al addon ButtonHole controlará el botón del minimapa. Hace efecto al siguiente login.",
CONFIG_USEBUTTONHOLE_INFO = "Si activo, al addon ButtonHole controlar\195\161 el bot\195\179n del minimapa. Hace efecto al siguiente login.",
CONFIG_SKILL_INFO = "Bonus de equipo total.",
CONFIG_SKILL_TEXT = "Pescando ",
CONFIG_STYLISH_INFO = "Style points loosely inspired by Draznar's Fishing FAQ in the WoW forums.",
CONFIG_STYLISH_TEXT = "Estilo: ",
CONFIG_OUTFITTER_TEXT = "Bonus equipo habilidad: %s\r\nPuntuacion estilo Draznar's: %d ";
TITAN_CLICKTOSWITCH_ONOFF = "Click para cambiar",
TITAN_CLICKTOSWITCH_INFO = "Si activado, click-izq. Cambia equipos, sino saltarála ventana Fishing Buddy.",
CLICKTOSWITCH_ONOFF = "Click para cambiar",
CLICKTOSWITCH_INFO = "Si activado, click-izq. Cambia equipos, sino saltar\195\161la ventana Fishing Buddy.",
LEFTCLICKTODRAG = "Click-izq para mover",
MINIMAPBUTTONPLACEMENT = "Posición Botón",
MINIMAPBUTTONPLACEMENT = "Posici\195\179n Bot\195\179n",
MINIMAPBUTTONPLACEMENTTOOLTIP = "Permite mover el #NAME# icono alrdedor del minimapa",
CONFIG_MINIMAPBUTTON_ONOFF = "Muestra icono minimapa",
CONFIG_MINIMAPBUTTON_INFO = "Muestra un #NAME# icono en el minimapa.",
CONFIG_ENHANCESOUNDS_ONOFF = "Activa sonidos de pesca",
CONFIG_ENHANCESOUNDS_INFO = "Maximiza el volúmen y minimiza el volúmen del ambiente para que se aprecie mejor el sonido cuando se pesca.",
CONFIG_ENHANCESOUNDS_INFO = "Maximiza el vol\195\186men y minimiza el vol\195\186men del ambiente para que se aprecie mejor el sonido cuando se pesca.",
-- messages
FAILEDINIT = "No inicializó correctamente.",
FAILEDINIT = "No inicializ\195\179 correctamente.",
IMPORTMSG = "BaseDatos '%s' importada.",
NOIMPORTMSG = "No Impp, DataFish, o FishInfo2 BasesDatos encontradas.",
ADDFISHIEMSG = "Añdiendo %s a zona %s.",
ADDFISHIEMSG = "A\195\177diendo %s a zona %s.",
CURSORBUSYMSG = "no pudo cambiar por estar el cursor ocupado!",
NOOUTFITDEFINED = "No tienes objetos en tu equipo de pesca.",
NODATAMSG = "No datos pesca disponibles.",
@@ -121,77 +122,21 @@ FishingTranslations["esES"] = {
NOTRACKMSG = "Pesca ciclica borrada '%s'.",
POLEALREADYEQUIPPED = "Ya estas equipado para pescar.",
CANTSWITCHBACK = "Ya te has quitado el equipamiento de pesca.",
CLEANUP_NONEMSG = "No quedan antigÜos ajustes.",
CLEANUP_WILLMSG = "Ajustes antigÜos quedan para |c0000FF00%s|r: %s.",
CLEANUP_DONEMSG = "Borrados ajustes antigÜos para |c0000FF00%s|r: %s.",
CLEANUP_NOOLDMSG = "No hay ajustes antigÜos para jugador |c0000FF00%s|r.",
CLEANUP_NONEMSG = "No quedan antig\195\186os ajustes.",
CLEANUP_WILLMSG = "Ajustes antig\195\186os quedan para |c#GREEN#%s|r: %s.",
CLEANUP_DONEMSG = "Borrados ajustes antig\195\186os para |c#GREEN#%s|r: %s.",
CLEANUP_NOOLDMSG = "No hay ajustes antig\195\186os para jugador |c#GREEN#%s|r.",
NOTLINKABLE = "<Objeto no se puede alcanzar>",
TIMETOGO = "Extravaganza comienza en %d:%02d",
TIMELEFT = "Extravaganza acaba en %d:%02d -- %d %s",
TIMELEFT = "Extravaganza acaba en %d:%02d",
STVZONENAME = "Stranglethorn Vale",
TOOLTIP_HINTSWITCH = "Consejo: click para cambiar equipos",
TOOLTIP_HINTTOGGLE = "Consejo: click para mostar #NAME# ventana.",
-- Key binding support
BINDING_HEADER_FISHINGBUDDY_BINDINGS = "#NAME#",
BINDING_NAME_FISHINGBUDDY_TOGGLE = "Toggle #NAME# Window",
BINDING_NAME_FISHINGBUDDY_SWITCH = "Switch Fishing Outfit",
BINDING_NAME_FISHINGBUDDY_GOFISHING = "Suit up and go fishing",
BINDING_NAME_TOGGLEFISHINGBUDDY_LOC = "Toggle #NAME# Locations Pane",
BINDING_NAME_TOGGLEFISHINGBUDDY_OUT = "Toggle #NAME# Outfit Pane",
BINDING_NAME_TOGGLEFISHINGBUDDY_TRK = "Toggle #NAME# Tracking Pane",
BINDING_NAME_TOGGLEFISHINGBUDDY_OPT = "Toggle #NAME# Options Pane",
TOOLTIP_HINT = "Consejo:",
TOOLTIP_HINTSWITCH = "click para cambiar equipos",
TOOLTIP_HINTTOGGLE = "click para mostar #NAME# ventana.",
};
FishingTranslations["esES"].IMPORT_HELP = {
"|c0000FF00/fb #IMPORT#|r",
" Import Impp's fishinfo or FishInfo2 data.",
};
FishingTranslations["esES"].SWITCH_HELP = {
"|c0000FF00/fb #SWITCH#|r",
" swap outfits (if OutfitDisplayFrame or Outfitter is available)",
};
FishingTranslations["esES"].WATCHER_HELP = {
"|c0000FF00/fb #WATCHER#|r [|c0000FF00#WATCHER_LOCK#|r or |c0000FF00#WATCHER_UNLOCK#|r or |c0000FF00#RESET#|r]",
" Unlock the watcher to move the window,",
" lock to stop, reset to reset",
};
FishingTranslations["esES"].CURRENT_HELP = {
"|c0000FF00/fb #CURRENT# #RESET#|r",
" Reset the fish caught during the current session.",
};
FishingTranslations["esES"].CLEANUP_HELP = {
"|c0000FF00/fb #CLEANUP#|r [|c0000FF00f#CHECK#|r or |c0000FF00#NOW#|r]",
" Clean up old settings. |c0000FF00#CHECK#|r lists which",
" settings will be removed by |c0000FF00#NOW#|r.",
};
FishingTranslations["esES"].TRACKING_HELP = {
"|c0000FF00/fb #TRACK#|r [|c0000FF00#HOURLY#|r or |c0000FF00#WEEKLY#|r] |c00FF00FF<fish link>|r",
" track the catch times for the specified fish (a shift click link)",
"|c0000FF00/fb #NOTRACK#|r |c00FF00FF<fish link>|r",
" remove the specified fish (a shift click link) from the tracker",
"|c0000FF00/fb #TRACKING#|r",
" a really bad display of when tracked fish were caught",
};
FishingTranslations["esES"].HELPMSG = {
"You can use |c0000FF00/fishingbuddy|r or |c0000FF00/fb|r for all commands",
"|c0000FF00/fb|r: by itself, toggle the Fishing Buddy window",
"|c0000FF00/fb #HELP#|r: display this message",
"#SWITCH_HELP#",
"#WATCHER_HELP#",
"#CURRENT_HELP#",
"#CLEANUP_HELP#",
"#IMPORT_HELP#",
"#TRACKING_HELP#",
" ",
"You can bind both the window toggle and the outfit",
" switch command to keys in the \"Key Bindings\" window.",
};
+71 -45
View File
@@ -5,13 +5,13 @@ FishingTranslations["frFR"] = {
-- Tab labels and tooltips
LOCATIONS_INFO = "Affiche les informations de p\195\170che locales";
LOCATIONS = "R\195\169gions";
LOCATIONS = "Localisations";
OUTFITS_INFO = "Pr\195\169pare votre equipement de p\195\170che";
OUTFITS = "Equipement";
OPTIONS_INFO = "R\195\168gle les options";
OPTIONS = "Options";
TRACKING_INFO = "Affiche les donn\195\169es sur les poissons";
TRACKING = "Donn\195\169es";
TRACKING = "Archives";
POINT = "point";
POINTS = "points";
@@ -44,10 +44,16 @@ FishingTranslations["frFR"] = {
WEEKLY = "Hebdomadaire";
HOURLY = "toutes les heures";
KEYS_LABEL_TEXT = "Touches:",
KEYS_NONE_TEXT = "Aucune",
KEYS_SHIFT_TEXT = "Shift",
KEYS_CTRL_TEXT = "CTRL",
KEYS_ALT_TEXT = "Alt",
SHOWFISHIES = "Poissons";
SHOWFISHIES_INFO = "Affiche vos prises class\195\169es par type de poisson.";
SHOWLOCATIONS = "R\195\169gions";
SHOWLOCATIONS = "Montrer les zones";
SHOWLOCATIONS_INFO = "Affiche vos prises class\195\169es par r\195\169gions.";
SWITCHOUTFIT = "Equipement";
@@ -55,8 +61,30 @@ FishingTranslations["frFR"] = {
CONFIG_SKILL_TEXT = "P\195\170che ";
TITAN_CLICKTOSWITCH_ONOFF = "Clique pour changer";
TITAN_CLICKTOSWITCH_INFO = "Si activ\195\169, un clic gauche change l'\195\169quipement, si d\195\169sactiv\195\169, affiche la fen\195\170tre.";
-- Option names and tooltips
CONFIG_SHOWNEWFISHIES_ONOFF = "Montrer les nouveaux poissons",
CONFIG_SHOWNEWFISHIES_INFO = "Affiche un message dans la zone de texte quand un nouveau poisson est p\195\169ch\195\169.",
CONFIG_FISHWATCH_ONOFF = "Archives des poissons",
CONFIG_FISHWATCH_INFO = "Affiche une zone de texte avec les poissons d\195\169j\195\160 p\195\169ch\195\169s dans la zone courante.",
CONFIG_FISHWATCHONLY_ONOFF = "Seulement en p\195\169chant",
CONFIG_FISHWATCHONLY_INFO = "Montrer seulement les poissons lorsque vous \195\170tes en train de p\195\169cher.",
CONFIG_FISHWATCHSKILL_ONOFF = "Niveau actuel",
CONFIG_FISHWATCHSKILL_INFO = "Affiche votre niveau courant en p\195\170che ainsi que les am\195\169liorations dans la zone de texte.",
CONFIG_FISHWATCHZONE_ONOFF = "Zone courante",
CONFIG_FISHWATCHZONE_INFO = "Affiche la zone courante dans la zone de texte.",
CONFIG_FISHWATCHPERCENT_ONOFF = "Montrer les pourcentages",
CONFIG_FISHWATCHPERCENT_INFO = "Affiche les pourcentages pour chaque type de poissons dans la zone de texte.",
CONFIG_EASYCAST_ONOFF = "Lancer la ligne facilement",
CONFIG_EASYCAST_INFO = "Si activ\195\169, lorsque votre canne \195\160 p\195\170che est \195\169quip\195\169e, un clic droit lance la ligne.",
CONFIG_SORTBYPERCENT_ONOFF = "Trier par quantit\195\169 de poissons",
CONFIG_SORTBYPERCENT_INFO = "Trie l'affichage par quantit\195\169 de poissons p\195\169ch\195\169s au lieu du nom.",
CONFIG_STVTIMER_ONOFF = "Timer du concours de p\195\170che",
CONFIG_STVTIMER_INFO = "Si activ\195\169, un compteur sera affich\195\169 indiquant le temps restant avant le debut et la fin du concours.",
CONFIG_USEGATHERER_ONOFF = "Utiliser Gatherer",
CONFIG_USEGATHERER_INFO = "Si activ\195\169, un compteur sera affich\195\169 indiquant le temps restant avant le debut et la fin du concours.",
CLICKTOSWITCH_ONOFF = "Clique pour changer";
CLICKTOSWITCH_INFO = "Si activ\195\169, un clic gauche change l'\195\169quipement, si d\195\169sactiv\195\169, affiche la fen\195\170tre.";
LEFTCLICKTODRAG = "Clique gauche pour bouger";
@@ -72,46 +100,6 @@ FishingTranslations["frFR"] = {
TIMELEFT = "Le concours de p\195\170che se termine dans %d:%02d";
STVZONENAME = "Vall\195\169e de Strangleronce";
};
FishingTranslations["frFR"].IMPORT_HELP = {
"|c0000FF00/fb #IMPORT#|r",
" Importe les donn\195\169es d'Impp's fishinfo ou de FishInfo2.",
};
FishingTranslations["frFR"].SWITCH_HELP = {
"|c0000FF00/fb #SWITCH#|r",
" Change l'\195\169quipement (si OutfitDisplayFrame ou Outfitter est charg\195\169)",
};
FishingTranslations["frFR"].WATCHER_HELP = {
"|c0000FF00/fb #WATCHER#|r [|c0000FF00#WATCHER_LOCK#|r or |c0000FF00#WATCHER_UNLOCK#|r or |c0000FF00#RESET#|r]",
" D\195\169v\195\169rouille pour bouger la fen\195\170tre,",
" lock pour arr\195\170ter, reset pour mettre a z\195\169ro",
};
FishingTranslations["frFR"].CURRENT_HELP = {
"|c0000FF00/fb #CURRENT# #RESET#|r",
" Met a z\195\169ro des poissons pris durant cette session.",
};
FishingTranslations["frFR"].TRACKING_HELP = {
"|c0000FF00/fb #TRACK#|r [|c0000FF00#HOURLY#|r or |c0000FF00#WEEKLY#|r] |c00FF00FF<fish link>|r",
" Surveille le temps de prise pour ce poisson (Maj-Click)",
"|c0000FF00/fb #NOTRACK#|r |c00FF00FF<fish link>|r",
" Retire ce poisson (Maj-Click) du surveillant",
"|c0000FF00/fb #TRACKING#|r",
" Un mauvais affichage du moment de prise d'un poisson surveill\195\169",
};
FishingTranslations["frFR"].HELPMSG = {
"Vous pouvez utiliser |c0000FF00/fishingbuddy|r ou |c0000FF00/fb|r pour toutes les commandes",
"|c0000FF00/fb|r: seul, affiche/cache la fen\195\170tre de FishingBuddy",
"|c0000FF00/fb #HELP#|r: affiche ce message",
"#SWITCH_HELP#",
"#WATCHER_HELP#",
"#CURRENT_HELP#",
"#IMPORT_HELP#",
"#TRACKING_HELP#",
" ",
"Vous pouvez assigner une touche pour afficher/cacher la fen\195\170tre et/ou",
"changer d'\195\169quipement dans la fen\195\170tre \"Raccourcis\".",
BINDING_HEADER_FISHINGBUDDY_BINDINGS = "#NAME#";
BINDING_NAME_FISHINGBUDDY_TOGGLE = "Toggle:#NAME#(Fen\195\170tre)";
@@ -121,4 +109,42 @@ FishingTranslations["frFR"].HELPMSG = {
BINDING_NAME_TOGGLEFISHINGBUDDY_OUT = "Toggle: #NAME# (Panneau d'\195\169quipement)";
BINDING_NAME_TOGGLEFISHINGBUDDY_TRK = "Toggle: #NAME# (Panneau de donn\195\169es)";
BINDING_NAME_TOGGLEFISHINGBUDDY_OPT = "Toggle: #NAME# (Panneau d'options)";
ABBREV_APRIL = "Avr",
};
FishingTranslations["frFR"].IMPORT_HELP = {
"|c#GREEN#/fb #IMPORT#|r",
" Importe les donn\195\169es d'Impp's fishinfo ou de FishInfo2.",
};
FishingTranslations["frFR"].SWITCH_HELP = {
"|c#GREEN#/fb #SWITCH#|r",
" Change l'\195\169quipement (si OutfitDisplayFrame ou Outfitter est charg\195\169)",
};
FishingTranslations["frFR"].WATCHER_HELP = {
"|c#GREEN#/fb #WATCHER#|r [|c#GREEN##WATCHER_LOCK#|r or |c#GREEN##WATCHER_UNLOCK#|r or |c#GREEN##RESET#|r]",
" D\195\169v\195\169rouille pour bouger la fen\195\170tre,",
" lock pour arr\195\170ter, reset pour mettre a z\195\169ro",
};
FishingTranslations["frFR"].CURRENT_HELP = {
"|c#GREEN#/fb #CURRENT# #RESET#|r",
" Met a z\195\169ro des poissons pris durant cette session.",
};
FishingTranslations["frFR"].TRACKING_HELP = {
"|c#GREEN#/fb #TRACK#|r [|c#GREEN##HOURLY#|r or |c#GREEN##WEEKLY#|r] |c#PURPLE#<fish link>|r",
" Surveille le temps de prise pour ce poisson (Maj-Click)",
"|c#GREEN#/fb #NOTRACK#|r |c#PURPLE#<fish link>|r",
" Retire ce poisson (Maj-Click) du surveillant",
"|c#GREEN#/fb #TRACKING#|r",
" Un mauvais affichage du moment de prise d'un poisson surveill\195\169",
};
FishingTranslations["frFR"].PRE_HELP = {
"Vous pouvez utiliser |c#GREEN#/fishingbuddy|r ou |c#GREEN#/fb|r pour toutes les commandes",
"|c#GREEN#/fb|r: seul, affiche/cache la fen\195\170tre de FishingBuddy",
"|c#GREEN#/fb #HELP#|r: affiche ce message",
};
FishingTranslations["frFR"].POST_HELP = {
"Vous pouvez assigner une touche pour afficher/cacher la fen\195\170tre et/ou",
"changer d'\195\169quipement dans la fen\195\170tre \"Raccourcis\".",
};
+105 -51
View File
@@ -7,10 +7,10 @@ FishingTranslations["enUS"] = {
DESCRIPTION2 = "and manage your fishing gear.",
DESCRIPTION = "#DESCRIPTION1# #DESCRIPTION2#",
ID = "FishingBuddy";
ID = "FishingBuddy",
WINDOW_TITLE = "#NAME# v#VERSION#";
FISHINGTEXTURE = "Interface\\Icons\\Trade_Fishing";
WINDOW_TITLE = "#NAME# v#VERSION#",
FISHINGTEXTURE = "Interface\\Icons\\Trade_Fishing",
-- Tab labels and tooltips
LOCATIONS_INFO = "Show fishing location information",
@@ -36,6 +36,14 @@ FishingTranslations["enUS"] = {
TRACK = "track",
NOTRACK = "notrack",
TRACKING = "tracking",
UPDATEDB = "updatedb",
FORCE = "force",
SCHOOL = "School", -- e.g. 'Oily Blackmouth School'
FLOATING_WRECKAGE = "Floating Wreckage",
FLOATING_DEBRIS = "Floating Debris",
ELEM_WATER = "Elemental Water",
OIL_SPILL = "Oil Spill",
ADD = "add",
REPLACE = "replace",
@@ -56,6 +64,8 @@ FishingTranslations["enUS"] = {
WEEKLY = "weekly",
HOURLY = "hourly",
OFFSET_LABEL_TEXT = "Offset:";
KEYS_LABEL_TEXT = "Modifiers:",
KEYS_NONE_TEXT = "None",
KEYS_SHIFT_TEXT = "Shift",
@@ -76,20 +86,18 @@ FishingTranslations["enUS"] = {
CONFIG_SHOWNEWFISHIES_INFO = "Display a message in the chat area when a new fish for the current location is caught.",
CONFIG_FISHWATCH_ONOFF = "Fish watcher",
CONFIG_FISHWATCH_INFO = "Display a text overlay with the fish caught in the current location.",
CONFIG_FISHWATCHSKILL_ONOFF = "Display current skill",
CONFIG_FISHWATCHSKILL_INFO = "Display your current fishing skill and mods in the fish watch area.",
CONFIG_FISHWATCHZONE_ONOFF = "Display current zone",
CONFIG_FISHWATCHZONE_INFO = "Display the current zone in the fish watch area.",
CONFIG_FISHWATCHONLY_ONOFF = "Only while fishing",
CONFIG_FISHWATCHONLY_INFO = "Only watch the fish caught when we're actually fishing",
CONFIG_FISHWATCHPERCENT_ONOFF = "Show percentage caught",
CONFIG_FISHWATCHSKILL_ONOFF = "Current skill",
CONFIG_FISHWATCHSKILL_INFO = "Display your current fishing skill and mods in the fish watch area.",
CONFIG_FISHWATCHZONE_ONOFF = "Current zone",
CONFIG_FISHWATCHZONE_INFO = "Display the current zone in the fish watch area.",
CONFIG_FISHWATCHPERCENT_ONOFF = "Show percentages",
CONFIG_FISHWATCHPERCENT_INFO = "Display the percentage of each kind of fish on the watch display",
CONFIG_SUITUPFIRST_ONOFF = "Dress for succcess",
CONFIG_SUITUPFIRST_ONOFF = "Dress for success",
CONFIG_SUITUPFIRST_INFO = "Put on your fishing outfit if you're not wearing it when the binding key is pressed",
CONFIG_EASYCAST_ONOFF = "Easy Cast",
CONFIG_EASYCAST_INFO = "If enabled, then when a fishing pole is equipped and you right click, you will cast the line.",
CONFIG_FASTCAST_ONOFF = "Fast Cast";
CONFIG_FASTCAST_INFO = "If enabled, you can throw your line at the same time you click your bobber.";
CONFIG_EASYLURES_ONOFF = "Easy Lures",
CONFIG_EASYLURES_INFO = "If enabled, a lure will applied to your fishing pole before you start fishing, whenever you need one.",
CONFIG_ONLYMINE_ONOFF = "Outfit Pole Only",
@@ -102,20 +110,26 @@ FishingTranslations["enUS"] = {
CONFIG_SORTBYPERCENT_INFO = "Order displays by the number of fish caught instead of by name.",
CONFIG_STVTIMER_ONOFF = "Fishing Extravaganza timer",
CONFIG_STVTIMER_INFO = "If enabled, display a countdown timer for the start of the Fishing Extravaganza and a countdown of the timer left.",
CONFIG_STVPOOLSONLY_ONOFF = "Only cast in pools",
CONFIG_STVPOOLSONLY_INFO = "If enabled, easy cast will only be enabled if the cursor is over a fishing hole.",
CONFIG_USEBUTTONHOLE_ONOFF = "Use ButtonHole",
CONFIG_USEBUTTONHOLE_INFO = "If enabled, the ButtonHole addon will control the minimap button. Takes effect on the next login.",
CONFIG_USEGATHERER_ONOFF = "Use Gatherer",
CONFIG_USEGATHERER_INFO = "If enabled, #NAME# will inform Gatherer about fishing holes.",
CONFIG_SKILL_INFO = "Total outfit skill bonus.",
CONFIG_SKILL_TEXT = "Fishing ",
CONFIG_STYLISH_INFO = "Style points loosely inspired by Draznar's Fishing FAQ in the WoW forums.",
CONFIG_STYLISH_TEXT = "Style: ",
CONFIG_OUTFITTER_TEXT = "Outfit skill bonus: %s\r\nDraznar's style score: %d ";
CONFIG_OUTFITTER_TEXT = "Outfit skill bonus: %s\r\nDraznar's style score: %d ",
TITAN_CLICKTOSWITCH_ONOFF = "Click to switch",
TITAN_CLICKTOSWITCH_INFO = "If enabled, a left click switches outfits, otherwise it brings up the Fishing Buddy window.",
CLICKTOSWITCH_ONOFF = "Click to switch",
CLICKTOSWITCH_INFO = "If enabled, a left click switches outfits, otherwise it brings up the Fishing Buddy window.",
LEFTCLICKTODRAG = "Left-click to drag",
RIGHTCLICKFORMENU = "Right-click for menu",
WATCHERCLICKHELP = "#LEFTCLICKTODRAG#\n#RIGHTCLICKFORMENU#",
MINIMAPBUTTONPLACEMENT = "Button Placement",
MINIMAPBUTTONPLACEMENTTOOLTIP = "Allows you to move the #NAME# icon around the minimap",
@@ -125,12 +139,24 @@ FishingTranslations["enUS"] = {
CONFIG_ENHANCESOUNDS_ONOFF = "Enhance fishing sounds",
CONFIG_ENHANCESOUNDS_INFO = "Maximize sound volume and minimize ambient volume to make the bobber noise more noticeable while fishing.",
TRACKINGFRAME = "Tracking Frame",
TRACKINGFRAME_RIGHTCLICK = "Right-click to draw graphs for fish",
TRACKINGFRAME_LEFTCLICK = "Left-click to choose fish to track",
-- TRACKINGFRAME_CLICKS = "#TRACKINGFRAME_RIGHTCLICK#\r#TRACKINGFRAME_LEFTCLICK#",
TRACKINGFRAME_CLICKS = "#TRACKINGFRAME_RIGHTCLICK#",
TRACKFISHHOURLY = "Track this fish hourly",
TRACKFISHWEEKLY = "Track this fish weekly",
HIDEINWATCHER = "Display this fish in the watcher",
-- messages
COMPATIBLE_SWITCHER = "No compatible outfit switcher found.",
TOOMANYFISHERMEN = "You have more than one easy cast mod installed.",
FAILEDINIT = "Did not initialize correctly.",
IMPORTMSG = "Imported '%s' database.",
NOIMPORTMSG = "No Impp, DataFish, or FishInfo2 databases found.",
ADDFISHIEMSG = "Adding %s to location %s.",
ADDSCHOOLMSG = "Adding '%s' to location %s.",
CURSORBUSYMSG = "Couldn't switch because the cursor is busy!",
NOOUTFITDEFINED = "You don't have any items in your fishing outfit.",
NODATAMSG = "No fishing data available.",
@@ -140,23 +166,37 @@ FishingTranslations["enUS"] = {
POLEALREADYEQUIPPED = "You're already equipped for fishing.",
CANTSWITCHBACK = "You've already removed your fishing equipment.",
CLEANUP_NONEMSG = "No old settings remain.",
CLEANUP_WILLMSG = "Old settings remaining for |c0000FF00%s|r: %s.",
CLEANUP_DONEMSG = "Old settings removed for |c0000FF00%s|r: %s.",
CLEANUP_NOOLDMSG = "There are no old settings for player |c0000FF00%s|r.",
CLEANUP_WILLMSG = "Old settings remaining for |c#RED#%s|r: %s.",
CLEANUP_DONEMSG = "Old settings removed for |c#RED#%s|r: %s.",
CLEANUP_NOOLDMSG = "There are no old settings for player |c#GREEN#%s|r.",
NONEAVAILABLE_MSG = "None available",
UPDATEDB_MSG = "Updated %d fish names.",
MINIMUMSKILL = "Minimum skill: %d";
MINIMUMSKILL = "Minimum skill: %d",
NOTLINKABLE = "<Item is not linkable>",
CAUGHTTHISMANY = "Caught %d";
CAUGHTTHISTOTAL = "Total %d";
FISHTYPES = "Fish types: %d";
CAUGHTTHISMANY = "Caught %d",
CAUGHTTHISTOTAL = "Total %d",
FISHTYPES = "Fish types: %d",
DASH = " -- ",
FISHCAUGHT = "%d %s",
TIMETOGO = "Extravaganza starts in %d:%02d",
TIMELEFT = "Extravaganza ends in %d:%02d -- %d %s",
TIMELEFT = "Extravaganza ends in %d:%02d",
FATLADYSINGS = "|c#RED#Extravaganza is over|r (%d:%02d left)",
RIGGLE_BASSBAIT = "^Riggle Bassbait .*: .*! (.*) .*!$",
STVZONENAME = "Stranglethorn Vale",
TOOLTIP_HINTSWITCH = "Hint: click to switch outfits",
TOOLTIP_HINTTOGGLE = "Hint: click to show the #NAME# window.",
TOOLTIP_HINT = "Hint:",
TOOLTIP_HINTSWITCH = "click to switch outfits",
TOOLTIP_HINTTOGGLE = "click to show the #NAME# window.",
-- months for Tracking frame
ABBREV_JANUARY = "Jan",
ABBREV_APRIL = "Apr",
ABBREV_JULY = "Jul",
ABBREV_OCTOBER = "Oct",
ABBREV_DECEMBER = "Dec",
-- Key binding support
BINDING_HEADER_FISHINGBUDDY_BINDINGS = "#NAME#",
@@ -171,48 +211,62 @@ FishingTranslations["enUS"] = {
};
FishingTranslations["enUS"].IMPORT_HELP = {
"|c0000FF00/fb #IMPORT#|r",
"|c#GREEN#/fb #IMPORT#|r",
" Import Impp's fishinfo or FishInfo2 data.",
};
};
FishingTranslations["enUS"].SWITCH_HELP = {
"|c0000FF00/fb #SWITCH#|r",
"|c#GREEN#/fb #SWITCH#|r",
" swap outfits (if OutfitDisplayFrame or Outfitter is available)",
};
};
FishingTranslations["enUS"].WATCHER_HELP = {
"|c0000FF00/fb #WATCHER#|r [|c0000FF00#WATCHER_LOCK#|r or |c0000FF00#WATCHER_UNLOCK#|r or |c0000FF00#RESET#|r]",
"|c#GREEN#/fb #WATCHER#|r [|c#GREEN##WATCHER_LOCK#|r or |c#GREEN##WATCHER_UNLOCK#|r or |c#GREEN##RESET#|r]",
" Unlock the watcher to move the window,",
" lock to stop, reset to reset",
};
};
FishingTranslations["enUS"].CURRENT_HELP = {
"|c0000FF00/fb #CURRENT# #RESET#|r",
"|c#GREEN#/fb #CURRENT# #RESET#|r",
" Reset the fish caught during the current session.",
};
FishingTranslations["enUS"].UPDATEDB_HELP = {
"|c#GREEN#/fb #UPDATEDB# [#FORCE#]|r",
" Try and find the names of all the fish we don't know already.",
" An attempt is made to skip 'rare' fish that may disconnect you",
" from the server -- use the '#FORCE#' option to override the check.",
};
FishingTranslations["enUS"].CLEANUP_HELP = {
"|c0000FF00/fb #CLEANUP#|r [|c0000FF00f#CHECK#|r or |c0000FF00#NOW#|r]",
" Clean up old settings. |c0000FF00#CHECK#|r lists which",
" settings will be removed by |c0000FF00#NOW#|r.",
};
"|c#GREEN#/fb #CLEANUP#|r [|c#GREEN#f#CHECK#|r or |c#GREEN##NOW#|r]",
" Clean up old settings. |c#GREEN##CHECK#|r lists which",
" settings will be removed by |c#GREEN##NOW#|r.",
};
FishingTranslations["enUS"].TRACKING_HELP = {
"|c0000FF00/fb #TRACK#|r [|c0000FF00#HOURLY#|r or |c0000FF00#WEEKLY#|r] |c00FF00FF<fish link>|r",
"|c#GREEN#/fb #TRACK#|r [|c#GREEN##HOURLY#|r or |c#GREEN##WEEKLY#|r] |c#PURPLE#<fish link>|r",
" track the catch times for the specified fish (a shift click link)",
"|c0000FF00/fb #NOTRACK#|r |c00FF00FF<fish link>|r",
"|c#GREEN#/fb #NOTRACK#|r |c#PURPLE#<fish link>|r",
" remove the specified fish (a shift click link) from the tracker",
"|c0000FF00/fb #TRACKING#|r",
"|c#GREEN#/fb #TRACKING#|r",
" a really bad display of when tracked fish were caught",
};
};
FishingTranslations["enUS"].HELPMSG = {
"You can use |c0000FF00/fishingbuddy|r or |c0000FF00/fb|r for all commands",
"|c0000FF00/fb|r: by itself, toggle the Fishing Buddy window",
"|c0000FF00/fb #HELP#|r: display this message",
"#SWITCH_HELP#",
"#WATCHER_HELP#",
"#CURRENT_HELP#",
"#CLEANUP_HELP#",
"#IMPORT_HELP#",
"#TRACKING_HELP#",
" ",
FishingTranslations["enUS"].PRE_HELP = {
"You can use |c#GREEN#/fishingbuddy|r or |c#GREEN#/fb|r for all commands",
"|c#GREEN#/fb|r: by itself, toggle the Fishing Buddy window",
"|c#GREEN#/fb #HELP#|r: display this message",
};
FishingTranslations["enUS"].POST_HELP = {
"You can bind both the window toggle and the outfit",
" switch command to keys in the \"Key Bindings\" window.",
};
};
FishingTranslations["enUS"].HELPMSG = {
"@PRE_HELP",
"@SWITCH_HELP",
"@WATCHER_HELP",
"@CURRENT_HELP",
"@CLEANUP_HELP",
"@IMPORT_HELP",
"@TRACKING_HELP",
"@UPDATEDB_HELP",
" ",
"@POST_HELP",
};
+258
View File
@@ -0,0 +1,258 @@
-- Version : Russian ( by Maus )
FishingTranslations["ruRU"] = {
NAME = "Fishing Buddy",
DESCRIPTION1 = "Отслеживает какую рыбу и где вы поймали",
DESCRIPTION2 = "и помогает управлять вашим рыболовским снарежением.",
DESCRIPTION = "#DESCRIPTION1# #DESCRIPTION2#",
ID = "FishingBuddy",
WINDOW_TITLE = "#NAME# вер. #VERSION#",
FISHINGTEXTURE = "Interface\\Icons\\Trade_Fishing",
-- Tab labels and tooltips
LOCATIONS_INFO = "Отображает информацию о расположении рыбы",
LOCATIONS_TAB = "Располож",
OUTFITS_INFO = "Выбрать что снарядить во время рыбалки",
OUTFITS_TAB = "Снаряжение",
OPTIONS_INFO = "Настройки #NAME#",
OPTIONS_TAB = "Настройки",
TRACKING_INFO = "Отображает #NAME# информацию о рыбе",
TRACKING_TAB = "Отслеживание",
POINT = "очко",
POINTS = "очков",
RAW = "сырой",
FISH = "Рыба",
BOBBER_NAME = "Поплавок",
FISHINGSKILL = "Рыбная ловля",
HELP = "help",
SWITCH = "switch",
IMPORT = "import",
TRACK = "track",
NOTRACK = "notrack",
TRACKING = "tracking",
UPDATEDB = "updatedb",
FORCE = "force",
SCHOOL = "косяк", -- e.g. 'Oily Blackmouth School'
FLOATING_WRECKAGE = "Плавающие обломки",
FLOATING_DEBRIS = "Плавающий мусор",
ELEM_WATER = "Первородная вода",
OIL_SPILL = "Нефтяное пятно",
ADD = "add",
REPLACE = "replace",
UPDATE = "update",
CURRENT = "current",
RESET = "reset",
CLEANUP = "cleanup",
CHECK = "check",
NOW = "now",
NOREALM = "неизвестный сервер",
WATCHER = "watcher",
WATCHER_LOCK = "lock",
WATCHER_UNLOCK = "unlock",
UNKNOWN = "Unknown",
WEEKLY = "weekly",
HOURLY = "hourly",
OFFSET_LABEL_TEXT = "Смещение:";
KEYS_LABEL_TEXT = "Клавиша:",
KEYS_NONE_TEXT = "Нету",
KEYS_SHIFT_TEXT = "Shift",
KEYS_CTRL_TEXT = "Control",
KEYS_ALT_TEXT = "Alt",
SHOWFISHIES = "Рыба",
SHOWFISHIES_INFO = "Показать весь ваш улов, сгруппированный по названию рыбы.",
SHOWLOCATIONS = "Локации",
SHOWLOCATIONS_INFO = "Показать весь ваш улов, отсортированно по зоне ловли.",
SWITCHOUTFIT = "Переключение",
SWITCHOUTFIT_INFO = "Переключение между снаряжением для рыбной ловли и тем, что было надето на вас раньше.",
-- Option names and tooltips
CONFIG_SHOWNEWFISHIES_ONOFF = "Новая рыба",
CONFIG_SHOWNEWFISHIES_INFO = "Выводит сообщение в окно чата, когда вы поймали новую рыбы в текущем месте.",
CONFIG_FISHWATCH_ONOFF = "Наблюдатель",
CONFIG_FISHWATCH_INFO = "Отображать текстовый фрейм с информацией о пойманных рыбках в текущем месте.",
CONFIG_FISHWATCHONLY_ONOFF = "Только во время рыбалки",
CONFIG_FISHWATCHONLY_INFO = "Наблюдатель будет активен только во время рыбалки",
CONFIG_FISHWATCHSKILL_ONOFF = "Текущий навык",
CONFIG_FISHWATCHSKILL_INFO = "Показывать текущий уровень навыка и его модификаторы.",
CONFIG_FISHWATCHZONE_ONOFF = "Текущая зона",
CONFIG_FISHWATCHZONE_INFO = "Показывать текущую локацию.",
CONFIG_FISHWATCHPERCENT_ONOFF = "В процентах",
CONFIG_FISHWATCHPERCENT_INFO = "Отображать проценты для каждой рыбки в наблюдателе.",
CONFIG_SUITUPFIRST_ONOFF = "Одежда для успеха",
CONFIG_SUITUPFIRST_INFO = "Положите на рыбное снаряжение, если вы не используете его когда нажата клавиша связывания.",
CONFIG_EASYCAST_ONOFF = "Простая ловля",
CONFIG_EASYCAST_INFO = "Если активно, то когда ваша удочка надета и кликните пкм, вы забросите удочку.",
CONFIG_EASYLURES_ONOFF = "Авто-наживка",
CONFIG_EASYLURES_INFO = "Наживка будет автоматически применяться к вашей удочке, если это необходимо, конечно.",
CONFIG_ONLYMINE_ONOFF = "Одеть только удочку",
CONFIG_ONLYMINE_INFO = "Если включено, во время простой ловли будет проверяться ваше снаряжение только на наличие удочки.",
CONFIG_MOUSEFISHING_ONOFF = "Рыбалка мышкой",
CONFIG_MOUSEFISHING_INFO = "Если активно, лкм забросить удочку, пкм выудить.",
CONFIG_SHOWLOCATIONZONES_ONOFF = "Зоны",
CONFIG_SHOWLOCATIONZONES_INFO = "Показывать зоны и подзоны.",
CONFIG_SORTBYPERCENT_ONOFF = "Сорт по улову",
CONFIG_SORTBYPERCENT_INFO = "Упорядочить информацию об улове по его количеству, а не по алфавиту.",
CONFIG_STVTIMER_ONOFF = "Рыболовный таймер Рыбомании",
CONFIG_STVTIMER_INFO = "Если включено, отображает обратный отсчет времени до начал Рыбомании и обратный отсчет после.",
CONFIG_STVPOOLSONLY_ONOFF = "Забрасывать только в водоёмы",
CONFIG_STVPOOLSONLY_INFO = "Простая ловля будет применяться только тогда, когда курсор находится над водоёмом.",
CONFIG_USEBUTTONHOLE_ONOFF = "Use ButtonHole",
CONFIG_USEBUTTONHOLE_INFO = "If enabled, the ButtonHole addon will control the minimap button. Takes effect on the next login.",
CONFIG_USEGATHERER_ONOFF = "Использовать Gatherer",
CONFIG_USEGATHERER_INFO = "Если активно, #NAME# известит о рыбной лунке.",
CONFIG_SKILL_INFO = "Общий бонус к навыку от снаряжения.",
CONFIG_SKILL_TEXT = "Рыбалка ",
CONFIG_STYLISH_INFO = "Style points loosely inspired by Draznar's Fishing FAQ in the WoW forums.",
CONFIG_STYLISH_TEXT = "Style: ",
CONFIG_OUTFITTER_TEXT = "Бонус от снарежения: %s\r\nСчет (в стиле Draznar'а): %d ",
CLICKTOSWITCH_ONOFF = "Клик для смени набора",
CLICKTOSWITCH_INFO = "Левый клик будет переключать выбранный набор экипировки, вместо того, чтобы открывать главное окно #NAME#.",
LEFTCLICKTODRAG = "[Левый-клик] - перемещение",
RIGHTCLICKFORMENU = "[Правый-клик] - меню",
WATCHERCLICKHELP = "#LEFTCLICKTODRAG#\n#RIGHTCLICKFORMENU#",
MINIMAPBUTTONPLACEMENT = "Размещение",
MINIMAPBUTTONPLACEMENTTOOLTIP = "Позволяет перемещать иконку #NAME# у мини-карты",
CONFIG_MINIMAPBUTTON_ONOFF = "Иконка у мини карты",
CONFIG_MINIMAPBUTTON_INFO = "Показывать иконку #NAME# у мини карте.",
CONFIG_ENHANCESOUNDS_ONOFF = "Повысить громкость",
CONFIG_ENHANCESOUNDS_INFO = "Во время рыбалки, #NAME# увеличит громкость звука до максимума и уменьшит громкость звука окружающей среды до минимума.",
TRACKINGFRAME = "Tracking Frame",
TRACKINGFRAME_RIGHTCLICK = "Right-click to draw graphs for fish",
TRACKINGFRAME_LEFTCLICK = "Left-click to choose fish to track",
-- TRACKINGFRAME_CLICKS = "#TRACKINGFRAME_RIGHTCLICK#\r#TRACKINGFRAME_LEFTCLICK#",
TRACKINGFRAME_CLICKS = "#TRACKINGFRAME_RIGHTCLICK#",
TRACKFISHHOURLY = "Track this fish hourly",
TRACKFISHWEEKLY = "Track this fish weekly",
HIDEINWATCHER = "Display this fish in the watcher",
-- messages
COMPATIBLE_SWITCHER = "Не найдено подходящего снаряжения.",
TOOMANYFISHERMEN = "У вас установлен другой аддон для простой ловли.",
FAILEDINIT = "Инициализация выполнена с ошибками.",
IMPORTMSG = "Imported '%s' database.",
NOIMPORTMSG = "No Impp, DataFish, or FishInfo2 databases found.",
ADDFISHIEMSG = "добавлено: %s, к локации %s.",
ADDSCHOOLMSG = "добавлено: '%s', к локации %s.",
CURSORBUSYMSG = "Couldn't switch because the cursor is busy!",
NOOUTFITDEFINED = "You don't have any items in your fishing outfit.",
NODATAMSG = "Не обнаружено данных.",
TRACKINGMSG = "Tracking '%s' %s.",
NOTRACKERRMSG = "Can't remove default cycle fish.",
NOTRACKMSG = "Removed cycle fish '%s'.",
POLEALREADYEQUIPPED = "You're already equipped for fishing.",
CANTSWITCHBACK = "You've already removed your fishing equipment.",
CLEANUP_NONEMSG = "Старых настроек не обнаружено.",
CLEANUP_WILLMSG = "Обнаружены старые настройки для |c#RED#%s|r: %s.",
CLEANUP_DONEMSG = "Старые настройки удалены для |c#RED#%s|r: %s.",
CLEANUP_NOOLDMSG = "Не обнаружено старых настроек у игрока |c#GREEN#%s|r.",
NONEAVAILABLE_MSG = "Недоступно",
UPDATEDB_MSG = "Обновлено название рыбы: %d.",
MINIMUMSKILL = "Минимальный навык: %d",
NOTLINKABLE = "<Создание ссылки невозможно>",
CAUGHTTHISMANY = "Поймано %d",
CAUGHTTHISTOTAL = "Всего %d",
FISHTYPES = "Типы рыб: %d",
DASH = " -- ",
FISHCAUGHT = "%d %s",
TIMETOGO = "Начало Рыбомании через %d:%02d",
TIMELEFT = "Конец Рыбомании через %d:%02d",
FATLADYSINGS = "|c#RED#Окончание Рыбомании|r (осталось %d:%02d)",
RIGGLE_BASSBAIT = "^Риггл Мормыш .*: .*! (.*) .*!$",
STVZONENAME = "Тернистая долина",
TOOLTIP_HINT = "Cовет:",
TOOLTIP_HINTSWITCH = "кликните, чтобы переключить набор снаряжения",
TOOLTIP_HINTTOGGLE = "кликните, чтобы открыть окно #NAME#.",
-- months for Tracking frame
ABBREV_JANUARY = "Янв",
ABBREV_APRIL = "Апр",
ABBREV_JULY = "Ию",
ABBREV_OCTOBER = "Окт",
ABBREV_DECEMBER = "Дек",
-- Key binding support
BINDING_HEADER_FISHINGBUDDY_BINDINGS = "#NAME#",
BINDING_NAME_FISHINGBUDDY_TOGGLE = "Переключение окна #NAME#",
BINDING_NAME_FISHINGBUDDY_SWITCH = "Переключение наборов снаряжения",
BINDING_NAME_FISHINGBUDDY_GOFISHING = "Экипироваться и начать рыбалку",
BINDING_NAME_TOGGLEFISHINGBUDDY_LOC = "Переключение окна локаций #NAME#",
BINDING_NAME_TOGGLEFISHINGBUDDY_OUT = "Переключение окна снаряжения #NAME#",
BINDING_NAME_TOGGLEFISHINGBUDDY_TRK = "Переключение окна отслеживания #NAME#",
BINDING_NAME_TOGGLEFISHINGBUDDY_OPT = "Переключение окна опций #NAME#",
};
FishingTranslations["ruRU"].IMPORT_HELP = {
"|c#GREEN#/fb #IMPORT#|r",
" Import Impp's fishinfo or FishInfo2 data.",
};
FishingTranslations["ruRU"].SWITCH_HELP = {
"|c#GREEN#/fb #SWITCH#|r",
" переключение между набора снаряжения (если доступны OutfitDisplayFrame или Outfitter)",
};
FishingTranslations["ruRU"].WATCHER_HELP = {
"|c#GREEN#/fb #WATCHER#|r [|c#GREEN##WATCHER_LOCK#|r or |c#GREEN##WATCHER_UNLOCK#|r or |c#GREEN##RESET#|r]",
" unlock - разблокировать окно наблюдателя для его перемещения,",
" lock - блокировать, reset - установить позицию по-умолчанию",
};
FishingTranslations["ruRU"].CURRENT_HELP = {
"|c#GREEN#/fb #CURRENT# #RESET#|r",
" Сбросить количество пойманной рыбы в этой сессии.",
};
FishingTranslations["ruRU"].UPDATEDB_HELP = {
"|c#GREEN#/fb #UPDATEDB# [#FORCE#]|r",
" Попробовать найти названия рыб, которые ещё не известны #NAME#.",
" Во время поиска не проверяются 'редкие' рыбы, которые могут",
" привести к отключения от сервера -- используйте опцию '#FORCE#' для их принудительной проверки.",
};
FishingTranslations["ruRU"].CLEANUP_HELP = {
"|c#GREEN#/fb #CLEANUP#|r [|c#GREEN#f#CHECK#|r or |c#GREEN##NOW#|r]",
" Очистка старых настроек. |c#GREEN##CHECK#|r - выдать список настроек,",
" которые будут удалены опцией |c#GREEN##NOW#|r.",
};
FishingTranslations["ruRU"].TRACKING_HELP = {
"|c#GREEN#/fb #TRACK#|r [|c#GREEN##HOURLY#|r or |c#GREEN##WEEKLY#|r] |c#PURPLE#<fish link>|r",
" track the catch times for the specified fish (a shift click link)",
"|c#GREEN#/fb #NOTRACK#|r |c#PURPLE#<fish link>|r",
" remove the specified fish (a shift click link) from the tracker",
"|c#GREEN#/fb #TRACKING#|r",
" a really bad display of when tracked fish were caught",
};
FishingTranslations["ruRU"].PRE_HELP = {
"You can use |c#GREEN#/fishingbuddy|r or |c#GREEN#/fb|r for all commands",
"|c#GREEN#/fb|r: переключение главного окна Fishing Buddy",
"|c#GREEN#/fb #HELP#|r: показать это сообщение",
};
FishingTranslations["ruRU"].POST_HELP = {
"Вы можете назначить клавиши для аддона в окне \"Назначение клавиш\"",
};
+1 -1
View File
@@ -49,7 +49,7 @@ Fishing Buddy
and many, many others!
Feel free to send comments to Sutorix on the Windrunner server.
Feel free to send comments to Sutorix=AT=hotmail.com.
Installation
------------