Compare commits

..

19 Commits

Author SHA1 Message Date
SabinDeus
9c0705f2d3 Update TOC for 12.1. Handle secret values in one of the places they might exist. 2026-08-07 23:37:50 -04:00
SabinDeus
4b1a1af6b3 Consolidate TOCs and update compatible versions. Delete old and deprecated code no longer in use by any live version of WoW. 2026-02-07 16:03:18 -05:00
SabinDeus
5e84b90850 Updated TOC for 12.0 beta and 11.2.7 live 2025-11-25 18:42:10 -05:00
SabinDeus
a6f5433efc Updating TOC files 2024-07-12 19:48:31 -04:00
SabinDeus
cc1e393bfc Fix for 10.0.7 SelectGossipOption removal
TOC bump
2023-04-07 20:14:29 -04:00
SabinDeus
14d9f35361 Fixes for QuestUtil usage in Classic 2023-02-16 19:22:40 -05:00
SabinDeus
d269a24967 TOC bumps 2023-01-29 17:57:35 -05:00
SabinDeus
4f03bdf323 Fix Gossip option ordering (entries generated during the last releases since 10.0 may need to be deleted and readded)
Fix for Classic 3.4.1 API Updates
2023-01-29 17:56:17 -05:00
SabinDeus
000e731fbc Dynamically generate Priority Frames, fixing 16 option limit 2023-01-02 01:52:56 -05:00
SabinDeus
5c4bf53d17 Fixing bugs introduced by 10.0 changes as well as a long-standing QuestFrame manipulation bug 2022-11-07 21:47:13 -05:00
SabinDeus
027447cfa6 10.0: API changes and XML XSD adherence 2022-10-26 23:37:50 -04:00
SabinDeus
ed06ca0f3d Merge branch 'master' of ssh://git.sabindeus.com:43043/sabin/turn-in 2022-10-26 23:36:59 -04:00
SabinDeus
e7d369fa25 Refactoring select API functions based on game version (retail/classic) 2022-09-11 16:41:00 -04:00
SabinDeus
4ce1a4be30 Refactoring select API functions based on game version (retail/classic) 2022-09-11 16:30:19 -04:00
SabinDeus
a78b31dba9 Backdrop fixes and TOC bump for 9.1.5 2021-11-15 22:09:17 -05:00
SabinDeus
8efe5dcbf3 GossipQuestInfo API bugfixes and incomplete Active Quest ignores 2021-01-13 00:37:20 -05:00
SabinDeus
47a99070cf 9.0 updates and TOC bump 2020-10-11 03:21:22 -04:00
SabinDeus
2eb3b298ce Updating TOC to 80000 2018-08-12 21:53:30 +00:00
SabinDeus
2b9a01000f Quest functions changed return lists again 2016-08-13 15:24:34 +00:00
7 changed files with 359 additions and 440 deletions

0
.gitignore vendored Executable file
View File

View File

@ -1,6 +1,6 @@
Turn In
v2.1
by Sabindeus of Smolderthorn/Andre of Argent Dawn (Alliance)
v2.3
by Sabindeus of Terenas
DESCRIPTION
-------------
@ -30,25 +30,4 @@ COMMAND SUMMARY
CHANGE LOG
-------------
v2.1 - Quest selection logic rewrite thanks to Arcanemagus of Hyjal
v2.0 - Logic rewrite and added a real GUI for the new NPC DB. Updated for WoW 2.0.
v1.3 - Greedy mode now actually works properly... I think. More to come! :/
v1.2 - Added Saved Variables. Turn In status now persists. Turn In now selects active quests and gossip options as well as available quests. Greedy mode lets you select an option regardless of if the one you wanted is availble.
v1.1 - Fixed "bug" regarding Duke Nicholas Zverenhoff (and possibly other NPCs). Was more of a sloppy omission than a bug really.
v1.0a - Added toggle function
v1.0 - Initial Release
Special Thanks to Florrail and Makhno for beta testing like a pro!
Extra Special Thanks to Arcanemagus for his code input!
Please send bug reports, questions or comments to Sabin1936@mac.com
Please send bug reports, questions or comments to sabin@sabindeus.com

254
TurnIn.lua Normal file → Executable file
View File

@ -1,13 +1,15 @@
--[[
Turn-In Mod
version 2.1
version 2.3
Authored by Ian Friedman
Sabindeus of Smolderthorn (Alliance)
Sabindeus of Terenas (Alliance)
The repeatable quest turn in automating machine.
Thanks to Arcanemagus of Hyjal for extra bug fixes and coding input
]]
TI_VersionString = "2.0";
local TI_slashtable;
TI_gossipclosed = false;
@ -35,18 +37,6 @@ local TI_GossipDefaults = {
banker = "Bank"
};
local TI_FunctionList = {
g = {
availquest = SelectGossipAvailableQuest,
activequest = SelectGossipActiveQuest,
default = SelectGossipOption
},
q = {
availquest = SelectAvailableQuest,
activequest = SelectActiveQuest
}
};
local TI_DefaultStatus = {
state = false,
@ -67,6 +57,49 @@ local TI_events = {
"QUEST_FINISHED"
};
local TI_GossipIconNameToId = {
["activequesticon"] = 132048,
["availablequesticon"] = 132049,
["banker"] = 132050,
["battlemaster"] = 132051,
["binder"] = 132052,
["gossip"] = 132053,
["healer"] = 132054,
["petition"] = 132055,
["tabard"] = 132056,
["taxi"] = 132057,
["trainer"] = 132058,
["unlearn"] = 132059,
["vendor"] = 132060,
["incompletequest"] = 365195,
["dailyquest"] = 368364,
["dailyactivequest"] = 368577,
["auctioneer"] = 528409,
["activelegendaryquest"] = 646979,
["availablelegendaryquest"] = 646980,
["chatbubble"] = 1019848,
["workorder"] = 1130518,
["transmogrify"] = 1673939,
["campaignactivequest"] = 3532316,
["campaignavailablequest"] = 3532317,
["campaignincompletequest"] = 3532318,
["campaigngossipicons"] = 3595324,
}
local function TI_InvertDictionary(input)
local s={}
for k,v in pairs(input) do
s[v]=k
end
return s
end
local TI_GossipIconIdToName = TI_InvertDictionary(TI_GossipIconNameToId)
local function TI_TranslateIconToType(iconId)
return TI_GossipIconIdToName[iconId]
end
TI_TempNPCList = {};
function TI_message(...)
@ -78,7 +111,15 @@ end
function TI_debug(...)
if(TI_status.debugstate) then
TI_message(...)
C_AddOns.LoadAddOn("Blizzard_DebugTools")
local x = {...};
for k,v in pairs(x) do
if type(v) == "table" and DevTools_Dump then
DevTools_Dump(v)
else
DEFAULT_CHAT_FRAME:AddMessage(tostring(v));
end
end
end
end
@ -152,6 +193,7 @@ function TI_LoadEvents()
end
function TI_ResetPointers()
TI_debug("resetting pointers")
TI_activenumber = 1;
TI_availnumber = 1;
TI_specnum = 0;
@ -370,6 +412,7 @@ function TI_CompleteQuest()
TI_ResetPointers();
else
TI_debug("quest is not completable, declining");
TI_availnumber = TI_availnumber + 1;
QuestDetailDeclineButton_OnClick();
end
end
@ -378,11 +421,10 @@ function TI_GetQuests(type)
local numQuests = (getglobal("GetNum"..type.."Quests"))();
local qfn = getglobal("Get"..type.."Title");
local ret = {};
local qname;
local i=1;
for i=1,numQuests do
qname = qfn(i);
ret[i] = {name=qname};
local qname, isComplete = qfn(i);
ret[i] = {name=qname, questID=i, isComplete=isComplete};
end
return ret;
end
@ -393,21 +435,21 @@ function TI_HandleGossipWindow(gorq)
local AvailableQuests;
local ActiveQuests;
local GossipOptions;
TI_debug(gorq);
if(gorq == "g") then
AvailableQuests = TI_TabulateGossipAvailableQuests(GetGossipAvailableQuests());
ActiveQuests = TI_TabulateGossipActiveQuests(GetGossipActiveQuests());
GossipOptions = TI_TabulateGossipOptions(GetGossipOptions());
SAcQ = SelectGossipActiveQuest;
SAvQ = SelectGossipAvailableQuest;
AvailableQuests = TI_FunctionList.g.tabulateAvailable(TI_FunctionList.g.getavailquests());
ActiveQuests = TI_FunctionList.g.tabulateActive(TI_FunctionList.g.getactivequests());
GossipOptions = TI_FunctionList.g.tabulateOptions(TI_FunctionList.g.getoptions());
SAcQ = TI_FunctionList.g.activequest;
SAvQ = TI_FunctionList.g.availquest;
elseif(gorq == "q") then
AvailableQuests = TI_GetQuests("Available");
ActiveQuests = TI_GetQuests("Active");
GossipOptions = {};
SAcQ=SelectActiveQuest;
SAvQ=SelectAvailableQuest;
SAcQ=TI_FunctionList.q.activequest;
SAvQ=TI_FunctionList.q.availquest;
end
local ListEntry = {};
for i,v in ipairs(AvailableQuests) do
local x={};
@ -433,8 +475,13 @@ function TI_HandleGossipWindow(gorq)
local x={};
x.name = v.name;
x.gorq = gorq;
if x.orderIndex then
x.args = v.orderIndex;
else
x.args = i;
end
x.type = v.type;
x.icon = v.icon;
x.state = false;
table.insert(ListEntry, x);
end
@ -442,13 +489,13 @@ function TI_HandleGossipWindow(gorq)
local TotalOptions = #AvailableQuests+#ActiveQuests+#GossipOptions;
--if(TI_activenumber > ActiveQuests.getn()) TI_activenumber = 1;
if(TotalOptions < 1) then
return;
end
local npcname = UnitName("npc");
if not issecretvalue(npcname) then
TI_AddNPCToTempList(npcname, ListEntry);
if(TI_status.autoadd and (not TI_NPCDB[npcname])) then
@ -473,6 +520,7 @@ function TI_HandleGossipWindow(gorq)
end
if(TI_availnumber > TotalOptions or TI_activenumber > TotalOptions) then
TI_debug("Out of available/active quests, giving up ");
TI_ResetPointers();
return;
end
@ -491,7 +539,7 @@ function TI_HandleGossipWindow(gorq)
for i2,v2 in ipairs(AvailableQuests) do
if (v2.name == current.name) then
TI_debug(i1.."-Available Match Found: "..current.name);
TI_FunctionList[current.gorq]["availquest"](i2);
SAvQ(v2.questID);
return;
end
end
@ -499,7 +547,7 @@ function TI_HandleGossipWindow(gorq)
for i2,v2 in ipairs(ActiveQuests) do
if (v2.name == current.name) then
TI_debug(i1.."-Active Match Found: "..current.name..", "..current.type);
TI_FunctionList[current.gorq]["activequest"](i2);
SAcQ(v2.questID);
return;
end
end
@ -507,7 +555,11 @@ function TI_HandleGossipWindow(gorq)
for i2,v2 in ipairs(GossipOptions) do
if (v2.name == current.name) then
TI_debug(i1.."-Gossip Match Found: "..current.name..", "..current.type);
SelectGossipOption(i2);
if(v2.args) then
TI_FunctionList.g.gossip(v2.args);
else
TI_FunctionList.g.gossip(i2);
end
return;
end
end
@ -522,6 +574,8 @@ function TI_HandleGossipWindow(gorq)
else
TI_debug("npc not in list");
end
end
if(TI_status.usedefault == false) then
TI_debug("npc not in list, default set to off, returning.");
return;
@ -530,20 +584,27 @@ function TI_HandleGossipWindow(gorq)
for i,current in ipairs(TI_status.options) do
if(current.state) then
if(current.type == "availquest" and #AvailableQuests > 0 and TI_availnumber <= #AvailableQuests) then
TI_availnumber = TI_availnumber + 1;
SAvQ(TI_availnumber-1);
TI_debug("Selecting Available Quest ".. TI_availnumber-1);
SAvQ(AvailableQuests[TI_availnumber].questID);
TI_debug("Selecting Available Quest ".. TI_availnumber);
return;
elseif(current.type == "activequest" and #ActiveQuests > 0 and TI_activenumber <= #ActiveQuests) then
TI_activenumber = TI_activenumber + 1;
SAcQ(TI_activenumber-1);
TI_debug("Selecting Active Quest ".. TI_activenumber-1);
while TI_activenumber <= #ActiveQuests do
if ActiveQuests[TI_activenumber].isComplete then
TI_debug("Selecting Active Quest ".. TI_activenumber .. " " .. ActiveQuests[TI_activenumber].name );
SAcQ(ActiveQuests[TI_activenumber].questID);
TI_ResetPointers();
return;
else
TI_debug("Active Quest ".. TI_activenumber .. " " .. ActiveQuests[TI_activenumber].name .. " is not complete")
TI_activenumber = TI_activenumber + 1;
end
end
elseif(#GossipOptions > 0) then
for j,val in ipairs(GossipOptions) do
if(val.type == current.type) then
TI_ResetPointers();
SelectGossipOption(j);
TI_debug("Selecting Gossip Option "..j)
TI_FunctionList.g.gossip(val.args);
return;
end
end
@ -578,7 +639,13 @@ function TI_AddNPCToTempList(name, list)
local temp = {};
temp.name = name;
temp.list = list;
temp.location = GetSubZoneText() .. ", " .. GetRealZoneText();
local subZone = GetSubZoneText();
local realZone = GetRealZoneText();
if(subZone == "") then
temp.location = realZone;
else
temp.location = subZone .. ", " .. realZone;
end
table.insert(TI_TempNPCList, 1, temp);
if(#TI_TempNPCList > TI_TempNPCListMaxSize) then
table.remove(TI_TempNPCList, TI_TempNPCListMaxSize);
@ -610,70 +677,121 @@ function TI_StripDescriptors(...)
return x;
end
function TI_TabulateGossipOptions(...)
function TI_TabulateGossipQuestUIInfo(gquis)
local x = {};
local arg = {...};
for i=1, #arg, 2 do
for i,gqui in ipairs(gquis) do
local temp = {};
temp.name = arg[i];
temp.type = arg[i+1];
temp.name = gqui.title;
temp.icon = QuestUtil.GetQuestIconOffer(
gqui.isLegendary,
gqui.frequency,
gqui.isRepeatable,
false,
false
);
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp);
end
return x;
end
function TI_TabulateGossipAvailableQuests(...)
function TI_TabulateGossipUIInfo(guis)
local x = {};
table.sort(guis, GossipOptionSort);
for i,gui in ipairs(guis) do
local temp = {};
temp.name = gui.name;
local gossipType = TI_TranslateIconToType(gui.icon)
if gossipType == "chatbubble" then
gossipType = "gossip"
end
temp.type = gossipType;
temp.icon = gui.icon;
temp.gossipOptionID = gui.gossipOptionID
temp.orderIndex = gui.orderIndex
temp.args = gui.orderIndex
table.insert(x, temp);
end
return x;
end
function TI_TabulateGossipAvailableQuests_Classic(gquis)
local x = {};
for i=1, select("#", ...), 6 do
for i,gqui in ipairs(gquis) do
local temp = {};
temp.name = select(i, ...);
temp.name = gqui.title;
local isTrivial = select(i+2, ...);
local isDaily = select(i+3, ...);
local isRepeatable = select(i+4, ...);
local isLegendary = select(i+5, ...);
if ( isDaily ) then
if ( gqui.repeatable ) then
temp.icon = "Interface\\GossipFrame\\DailyQuestIcon";
elseif ( isRepeatable ) then
temp.icon = "Interface\\GossipFrame\\DailyActiveQuestIcon";
elseif ( isLegendary ) then
elseif ( gqui.isLegendary ) then
temp.icon = "Interface\\GossipFrame\\AvailableLegendaryQuestIcon";
else
temp.icon = "Interface\\GossipFrame\\AvailableQuestIcon";
end
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp);
end
return x;
end
function TI_TabulateGossipActiveQuests(...)
function TI_TabulateGossipActiveQuests_Classic(gquis)
local x = {};
for i=1, select("#", ...), 5 do
for i,gqui in ipairs(gquis) do
local temp = {};
temp.name = select(i, ...);
temp.name = gqui.title;
local isComplete = select(i+3, ...);
local isLegendary = select(i+4, ...);
if(isComplete) then
if(isLegendary) then
temp.icon = "Interface\\GossipFrame\\ActiveLegendaryQuestIcon";
if ( gqui.repeatable ) then
temp.icon = "Interface\\GossipFrame\\DailyQuestIcon";
elseif ( gqui.isLegendary ) then
temp.icon = "Interface\\GossipFrame\\AvailableLegendaryQuestIcon";
else
temp.icon = "Interface\\GossipFrame\\ActiveQuestIcon";
end
else
temp.icon = "Interface\\GossipFrame\\IncompleteQuestIcon";
temp.icon = "Interface\\GossipFrame\\AvailableQuestIcon";
end
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp);
end
return x;
end
--[[this function stolen from WhisperCast by Sarris, whom I love dearly for his contribution to Paladins everywhere.
]]
TI_FunctionList = {}
function TI_SetupFunctions()
TI_FunctionList = {
g = {
availquest = C_GossipInfo.SelectAvailableQuest,
activequest = C_GossipInfo.SelectActiveQuest,
gossip = C_GossipInfo.SelectOptionByIndex,
getavailquests = C_GossipInfo.GetAvailableQuests,
getactivequests = C_GossipInfo.GetActiveQuests,
getoptions = C_GossipInfo.GetOptions,
tabulateOptions = TI_TabulateGossipUIInfo,
},
q = {
activequest = SelectActiveQuest,
availquest = SelectAvailableQuest,
}
}
if QuestUtil.GetQuestIconOffer then
TI_FunctionList.g.tabulateAvailable = TI_TabulateGossipQuestUIInfo
TI_FunctionList.g.tabulateActive = TI_TabulateGossipQuestUIInfo
else
TI_FunctionList.g.tabulateAvailable = TI_TabulateGossipAvailableQuests_Classic
TI_FunctionList.g.tabulateActive = TI_TabulateGossipActiveQuests_Classic
end
end
TI_SetupFunctions()
function TI_copyTable( src )
local copy = {}
for k1,v1 in pairs(src) do

6
TurnIn.toc Normal file → Executable file
View File

@ -1,7 +1,7 @@
## Interface: 70000
## X-Compatible-With: 70000
## Interface: 120100, 120000, 120001, 50503, 40402, 30405, 20505, 11508
## X-Compatible-With: 120100, 120000, 120001, 50503, 40402, 30405, 20505, 11508
## Title: Turn In
## Notes: Automates the selection of quest and gossip options.
## SavedVariables: TI_status, TI_NPCDB, TI_NPCIndex
## Version: 2.1
## Version: 2.2
TurnIn.xml

281
TurnIn.xml Normal file → Executable file
View File

@ -1,8 +1,9 @@
<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">
<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="TurnIn.lua" />
<Script file="TurnInUI.lua" />
<Frame name="TI_OptionFrameBoxTemplate" virtual="true">
<Frame name="TI_OptionFrameBoxTemplate" virtual="true" inherits="BackdropTemplate">
<!-- shamelessly stolen from blizzard -->
<Layers>
<Layer level="BACKGROUND">
@ -17,19 +18,12 @@
</FontString>
</Layer>
</Layers>
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<KeyValues>
<KeyValue key="backdropInfo" value="BACKDROP_TUTORIAL_16_16" type="global"/>
</KeyValues>
<Scripts>
<OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.5, 0.5, 0.5);
</OnLoad>
@ -51,7 +45,7 @@
-->
</Scripts>
<Frames>
<CheckButton name="$parent_Check" hidden="false" inherits="OptionsCheckButtonTemplate">
<CheckButton name="$parent_Check" hidden="false" inherits="UICheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
@ -142,7 +136,7 @@
</Anchor>
</Anchors>
</Texture>
<FontString name="$parent_Text" inherits="GameFontNormal" justifyV="top" justifyH="left">
<FontString name="$parent_Text" inherits="GameFontNormal" justifyV="TOP" justifyH="LEFT">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parent_Icon" relativePoint="TOPRIGHT">
<Offset>
@ -187,7 +181,7 @@
<AbsDimension x="232" y="20" />
</Size>
<Frames>
<CheckButton name="$parent_Check" hidden="false" inherits="OptionsCheckButtonTemplate">
<CheckButton name="$parent_Check" hidden="false" inherits="UICheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
@ -210,7 +204,7 @@
</OnLeave>
</Scripts>
</CheckButton>
<Button name="$parent_Delete" hidden="false" inherits="OptionsButtonTemplate" text="X">
<Button name="$parent_Delete" hidden="false" inherits="UIPanelButtonTemplate" text="X">
<Anchors>
<Anchor point="RIGHT">
<Offset>
@ -236,7 +230,7 @@
</Frames>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parent_Text" justifyV="top" justifyH="left" inherits="GameFontNormal" text="">
<FontString name="$parent_Text" justifyV="TOP" justifyH="LEFT" inherits="GameFontNormal" text="">
<Anchors>
<Anchor point="LEFT">
<Offset>
@ -257,7 +251,7 @@
<GameTooltip name="TI_Tooltip" hidden="true" inherits="GameTooltipTemplate" />
<Frame Name="TI_TempNPCListEntry" virtual="true" hidden="true">
<Frame name="TI_TempNPCListEntry" virtual="true" hidden="true">
<Scripts>
<OnEnter>
TI_TempNPCListTooltipShow(self);
@ -272,7 +266,7 @@
<Layers>
<Layer level="ARTWORK">
<FontString name="$parent_Text" justifyV="top" justifyH="left" inherits="GameFontNormal" text="">
<FontString name="$parent_Text" justifyV="TOP" justifyH="LEFT" inherits="GameFontNormal" text="">
<Anchors>
<Anchor point="LEFT">
<Offset>
@ -284,7 +278,7 @@
</Layer>
</Layers>
<Frames>
<Button name="$parent_Delete" hidden="false" inherits="OptionsButtonTemplate" text="X">
<Button name="$parent_Delete" hidden="false" inherits="UIPanelButtonTemplate" text="X">
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
@ -307,7 +301,7 @@
</OnLeave>
</Scripts>
</Button>
<Button name="$parent_Add" hidden="false" inherits="OptionsButtonTemplate" text="+">
<Button name="$parent_Add" hidden="false" inherits="UIPanelButtonTemplate" text="+">
<Anchors>
<Anchor point="RIGHT" relativeTo="$parent_Delete" relativePoint="LEFT">
<Offset>
@ -333,7 +327,7 @@
</Frames>
</Frame>
<Frame Name="TI_TempNPCListWindow" parent="UIParent" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" hidden="true">
<Frame name="TI_TempNPCListWindow" parent="UIParent" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" hidden="true" inherits="BackdropTemplate">
<Size>
<AbsDimension x="200" y="130" />
</Size>
@ -403,18 +397,24 @@
</Anchors>
</Frame>
</Frames>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<KeyValues>
<KeyValue key="backdropInfo" value="BACKDROP_TUTORIAL_16_16" type="global"/>
</KeyValues>
<Scripts>
<OnLoad>
self.backdropInfo = {
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true,
tileEdge = true,
tileSize = 16,
edgeSize = 16,
insets = { left = 5, right = 5, top = 5, bottom = 5 },
};
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.6, 0.6, 0.6);
self:SetBackdropColor(0.2, 0.2, 0.2);
</OnLoad>
<OnMouseUp>
if ( self.isMoving ) then
self:StopMovingOrSizing();
@ -436,36 +436,24 @@
</Scripts>
</Frame>
<Frame Name="TI_OptionsFrame" frameStrata="DIALOG" toplevel="true" enableMouse="true" enableMouseWheel="true" movable="true" parent="UIParent">
<TitleRegion>
<Size>
<AbsDimension x="128" y="64"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="12"/>
</Offset>
</Anchor>
</Anchors>
</TitleRegion>
<Frame name="TI_OptionsFrame" inherits="BackdropTemplate" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" parent="UIParent">
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="32"/>
</TileSize>
<EdgeSize>
<AbsValue val="32"/>
</EdgeSize>
</Backdrop>
<KeyValues>
<KeyValue key="backdropInfo" value="BACKDROP_DIALOG_32_32" type="global"/>
</KeyValues>
<Scripts>
<OnShow>
</OnShow>
<OnLoad>
self:ApplyBackdrop()
self:EnableMouse(true)
self:RegisterForDrag("LeftButton")
</OnLoad>
<OnDragStart>
self:StartMoving()
</OnDragStart>
<OnDragStop>
self:StopMovingOrSizing()
</OnDragStop>
</Scripts>
<Size>
<AbsDimension x="300" y="500"/>
@ -523,7 +511,7 @@
<AbsDimension x="200" y="20" />
</Size>
<Frames>
<CheckButton name="$parent_Checkbox" hidden="false" inherits="OptionsCheckButtonTemplate">
<CheckButton name="$parent_Checkbox" hidden="false" inherits="UICheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
@ -585,7 +573,7 @@
<AbsDimension x="200" y="40" />
</Size>
<Frames>
<CheckButton name="$parent_UseDefault" hidden="false" inherits="OptionsCheckButtonTemplate">
<CheckButton name="$parent_UseDefault" hidden="false" inherits="UICheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
@ -605,7 +593,7 @@
</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="$parent_AddAutomatically" hidden="false" inherits="OptionsCheckButtonTemplate">
<CheckButton name="$parent_AddAutomatically" hidden="false" inherits="UICheckButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parent_UseDefault" relativePoint="BOTTOMLEFT">
<Offset>
@ -658,6 +646,7 @@
<Frame name="TI_OptionsPriorityContainer" inherits="TI_OptionFrameBoxTemplate">
<Scripts>
<OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.15, 0.15, 0.15);
getglobal(self:GetName().."Title"):SetText("Gossip Options Priority List");
@ -695,167 +684,6 @@
<Size>
<AbsDimension x="200" y="30"/>
</Size>
<!--<Layers>
<Layer level="OVERLAY">
<FontString name="$parentText" justifyV="top" justifyH="left" inherits="GameFontNormal" text="Gossip Options">
<Anchors>
<Anchor point="TOPLEFT" />
</Anchors>
</FontString>
</Layer>
<Layer level="BACKGROUND">
<Texture name="$parent_Background" setAllPoints="true">
<Color r="0" g="1" b="0" a="0.0"/>
</Texture>
</Layer>
</Layers>-->
<Frames>
<Button name="$parent1" id="1" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent2" id="2" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent1">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent3" id="3" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent2">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent4" id="4" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent3">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent5" id="5" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent4">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent6" id="6" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent5">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent7" id="7" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent6">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent8" id="8" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent7">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent9" id="9" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent8">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent10" id="10" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent9">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent11" id="11" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent10">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent12" id="12" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent11">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent13" id="13" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent12">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent14" id="14" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent13">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent15" id="15" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent14">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parent16" id="16" hidden="true" inherits="TI_PriorityList">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parent15">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
</Frames>
</Frame>
</ScrollChild>
</ScrollFrame>
@ -865,6 +693,7 @@
<Frame name="TI_OptionsNPCContainer" inherits="TI_OptionFrameBoxTemplate">
<Scripts>
<OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.15, 0.15, 0.15);
getglobal(self:GetName().."Title"):SetText("NPC Database");
@ -882,7 +711,7 @@
</Size>
<Frames>
<ScrollFrame name="TI_NPCListScrollFrame" inherits="FauxScrollFrameTemplate" hidden="false" enableMouseWheel="true">
<ScrollFrame name="TI_NPCListScrollFrame" inherits="FauxScrollFrameTemplate" hidden="false" >
<Anchors>
<Anchor point="TOPLEFT">
<Offset>

90
TurnInUI.lua Normal file → Executable file
View File

@ -1,3 +1,30 @@
local TI_OptionsPriorityFramePool = {};
local TI_OptionsPriorityFramePoolMax = 0;
local function TI_GetOptionsPriorityFrame(idx)
if idx > TI_OptionsPriorityFramePoolMax then
for i=TI_OptionsPriorityFramePoolMax+1, idx, 1 do
local frame = CreateFrame("Button", "TI_OptionsPriority"..i,
getglobal("TI_OptionsPriority"), "TI_PriorityList", i);
if i == 1 then
frame:SetPoint("TOPLEFT", 0, 0);
else
frame:SetPoint("TOPLEFT", "TI_OptionsPriority"..i-1, "BOTTOMLEFT", 0, 0);
end
frame:Hide();
table.insert(TI_OptionsPriorityFramePool, i, frame);
TI_OptionsPriorityFramePoolMax = TI_OptionsPriorityFramePoolMax + 1;
end
end
return TI_OptionsPriorityFramePool[idx];
end
local function TI_HideUnusedOptionFrames(last)
for i=last, TI_OptionsPriorityFramePoolMax, 1 do
TI_OptionsPriorityFramePool[i]:Hide();
end
end
function TI_PopulateOptions(arg)
TI_debug(arg);
local CurrOpts;
@ -10,9 +37,9 @@ function TI_PopulateOptions(arg)
end
for i,v in ipairs(CurrOpts) do
local entry = "TI_OptionsPriority" .. i;
local entrybutton = getglobal(entry);
local entrytext = getglobal("TI_OptionsPriority"..i.."_Text");
local entrybutton = TI_GetOptionsPriorityFrame(i);
local icon, entrytext = entrybutton:GetRegions();
local checkbox = entrybutton:GetChildren();
local iconpath;
if(v.name == nil) then TI_debug("oh noes") end;
entrytext:SetText(v.name);
@ -20,27 +47,30 @@ function TI_PopulateOptions(arg)
if(v.icon) then
iconpath = v.icon;
else
iconpath = "Interface\\GossipFrame\\ActiveQuestIcon";
iconpath = "Interface/GossipFrame/ActiveQuestIcon";
end
elseif(v.type == "availquest") then
if(v.icon) then
iconpath = v.icon;
else
iconpath = "Interface\\GossipFrame\\AvailableQuestIcon";
iconpath = "Interface/GossipFrame/AvailableQuestIcon";
end
else
iconpath = "Interface\\GossipFrame\\" .. v.type .. "GossipIcon";
if(v.icon) then
iconpath = v.icon;
else
iconpath = "Interface/GossipFrame/" .. v.type .. "GossipIcon";
end
getglobal(entry .. "_Icon"):SetTexture(iconpath);
getglobal(entry .. "_Check"):SetChecked(v.state);
end
icon:SetTexture(iconpath);
checkbox:SetChecked(v.state);
entrytext:SetWidth(156); --make sure to change this if you change the anchors in the XML
entrybutton:SetHeight( entrytext:GetHeight() + 6);
entrybutton:Show();
last = last+1;
end
for j=last, 16, 1 do
getglobal("TI_OptionsPriority" .. j):Hide();
end
TI_HideUnusedOptionFrames(last);
TI_OptionsPriorityScrollFrame:SetVerticalScroll(0);
TI_OptionsPriorityScrollFrame:UpdateScrollChildRect();
TI_StatusIndicatorUpdate();
@ -49,31 +79,6 @@ function TI_PopulateOptions(arg)
TI_SettingCheckboxUpdate();
end
--[[
function TI_PopulateOptions(arg)
TI_debug(arg);
if(TI_status and TI_status.options) then
for i,v in ipairs(TI_status.options) do
local entry = "TI_OptionsPriority" .. i;
local iconpath;
if(v.name == nil) then TI_debug("oh noes") end;
if(getglobal(entry .. "_Text") == nil) then TI_debug("wtf "..entry .. "_Text") end;
getglobal(entry .. "_Text"):SetText(v.name);
if(v.type == "activequest") then
iconpath = "Interface\\GossipFrame\\ActiveQuestIcon";
elseif(v.type == "availquest") then
iconpath = "Interface\\GossipFrame\\AvailableQuestIcon";
else
iconpath = "Interface\\GossipFrame\\" .. v.type .. "GossipIcon";
end
getglobal(entry .. "_Icon"):SetTexture(iconpath);
getglobal(entry .. "_Check"):SetChecked(v.state);
getglobal(entry):Show();
end
end
TI_NPCListScrollBarUpdate();
end
]]--
function TI_NPCListScrollBarUpdate()
if(TI_NPCIndex) then
@ -85,19 +90,6 @@ function TI_NPCListScrollBarUpdate()
local offset = FauxScrollFrame_GetOffset(TI_NPCListScrollFrame);
local i=1;
local j=1;
--~ for k, v in pairs(TI_NPCDB) do
--~ if(offset <= i and i < offset+8) then
--~ if(i <= table.getn(TI_NPCDB)) then
--~ getglobal("TI_OptionsNPCContainer"..j.."_Text"):SetText(k);
--~ getglobal("TI_OptionsNPCContainer"..j.."_Check"):SetChecked(v.state);
--~ getglobal("TI_OptionsNPCContainer"..j):Show();
--~ else
--~ getglobal("TI_OptionsNPCContainer"..j):Hide();
--~ end
--~ j = j + 1;
--~ end
--~ i = i + 1;
--~ end
for line=1,8 do
lineplusoffset = line + FauxScrollFrame_GetOffset(TI_NPCListScrollFrame);

1
pkgmeta.yaml Executable file
View File

@ -0,0 +1 @@
package-as: TurnIn