Compare commits

..

2 Commits
master ... 2.1

Author SHA1 Message Date
SabinDeus
773639597c tagging as 2.1 for reals 2010-09-09 17:39:36 +00:00
SabinDeus
245f6aadbf Tagging as 2.1 2010-09-09 01:38:27 +00:00
7 changed files with 445 additions and 381 deletions

0
.gitignore vendored
View File

View File

@ -1,6 +1,6 @@
Turn In Turn In
v2.3 v2.1
by Sabindeus of Terenas by Sabindeus of Smolderthorn/Andre of Argent Dawn (Alliance)
DESCRIPTION DESCRIPTION
------------- -------------
@ -30,4 +30,25 @@ COMMAND SUMMARY
Please send bug reports, questions or comments to sabin@sabindeus.com 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

267
TurnIn.lua Executable file → Normal file
View File

@ -1,15 +1,13 @@
--[[ --[[
Turn-In Mod Turn-In Mod
version 2.3 version 2.1
Authored by Ian Friedman Authored by Ian Friedman
Sabindeus of Terenas (Alliance) Sabindeus of Smolderthorn (Alliance)
The repeatable quest turn in automating machine. The repeatable quest turn in automating machine.
Thanks to Arcanemagus of Hyjal for extra bug fixes and coding input Thanks to Arcanemagus of Hyjal for extra bug fixes and coding input
]] ]]
TI_VersionString = "2.0"; TI_VersionString = "2.0";
local TI_slashtable; local TI_slashtable;
TI_gossipclosed = false; TI_gossipclosed = false;
@ -37,6 +35,18 @@ local TI_GossipDefaults = {
banker = "Bank" banker = "Bank"
}; };
local TI_FunctionList = {
g = {
availquest = SelectGossipAvailableQuest,
activequest = SelectGossipActiveQuest,
default = SelectGossipOption
},
q = {
availquest = SelectAvailableQuest,
activequest = SelectActiveQuest
}
};
local TI_DefaultStatus = { local TI_DefaultStatus = {
state = false, state = false,
@ -57,49 +67,6 @@ local TI_events = {
"QUEST_FINISHED" "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 = {}; TI_TempNPCList = {};
function TI_message(...) function TI_message(...)
@ -111,15 +78,7 @@ end
function TI_debug(...) function TI_debug(...)
if(TI_status.debugstate) then if(TI_status.debugstate) then
C_AddOns.LoadAddOn("Blizzard_DebugTools") TI_message(...)
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
end end
@ -193,7 +152,6 @@ function TI_LoadEvents()
end end
function TI_ResetPointers() function TI_ResetPointers()
TI_debug("resetting pointers")
TI_activenumber = 1; TI_activenumber = 1;
TI_availnumber = 1; TI_availnumber = 1;
TI_specnum = 0; TI_specnum = 0;
@ -249,9 +207,6 @@ function TI_SlashCmdHandler(cmd)
window = function () window = function ()
TI_OptionsFrame:Show(); TI_OptionsFrame:Show();
end, end,
config = function ()
TI_OptionsFrame:Show();
end,
recent = function () recent = function ()
TI_TempNPCListWindow:Show(); TI_TempNPCListWindow:Show();
end, end,
@ -359,7 +314,7 @@ function TI_OnEvent(self, event, ...)
TI_debug("Quest Detail"); TI_debug("Quest Detail");
TI_gossipclosed = false; TI_gossipclosed = false;
if(TI_IsNPCOn(UnitName("npc"), "availquest")) then if(TI_IsNPCOn(UnitName("npc"), "availquest")) then
TI_HandleAcceptQuest(); AcceptQuest();
end end
TI_ResetPointers(); TI_ResetPointers();
end end
@ -373,11 +328,6 @@ function TI_OnEvent(self, event, ...)
end end
end end
function TI_HandleAcceptQuest()
--QuestInfoFadingFrame_OnUpdate(QuestInfoFadingFrame, 1); -- does not exist anymore in 6.0
QuestDetailAcceptButton_OnClick();
end
function TI_HandleQuestProgress() function TI_HandleQuestProgress()
local questname = GetTitleText(); local questname = GetTitleText();
@ -407,13 +357,10 @@ end
function TI_CompleteQuest() function TI_CompleteQuest()
if(IsQuestCompletable()) then if(IsQuestCompletable()) then
TI_debug("quest is completable, completeing");
CompleteQuest(); CompleteQuest();
TI_ResetPointers(); TI_ResetPointers();
else else
TI_debug("quest is not completable, declining"); DeclineQuest();
TI_availnumber = TI_availnumber + 1;
QuestDetailDeclineButton_OnClick();
end end
end end
@ -421,10 +368,11 @@ function TI_GetQuests(type)
local numQuests = (getglobal("GetNum"..type.."Quests"))(); local numQuests = (getglobal("GetNum"..type.."Quests"))();
local qfn = getglobal("Get"..type.."Title"); local qfn = getglobal("Get"..type.."Title");
local ret = {}; local ret = {};
local qname;
local i=1; local i=1;
for i=1,numQuests do for i=1,numQuests do
local qname, isComplete = qfn(i); qname = qfn(i);
ret[i] = {name=qname, questID=i, isComplete=isComplete}; ret[i] = {name=qname};
end end
return ret; return ret;
end end
@ -435,21 +383,22 @@ function TI_HandleGossipWindow(gorq)
local AvailableQuests; local AvailableQuests;
local ActiveQuests; local ActiveQuests;
local GossipOptions; local GossipOptions;
TI_debug(gorq);
if(gorq == "g") then if(gorq == "g") then
AvailableQuests = TI_FunctionList.g.tabulateAvailable(TI_FunctionList.g.getavailquests()); AvailableQuests = TI_TabulateGossipAvailableQuests(GetGossipAvailableQuests());
ActiveQuests = TI_FunctionList.g.tabulateActive(TI_FunctionList.g.getactivequests()); ActiveQuests = TI_TabulateGossipActiveQuests(GetGossipActiveQuests());
GossipOptions = TI_FunctionList.g.tabulateOptions(TI_FunctionList.g.getoptions()); GossipOptions = TI_TabulateGossipOptions(GetGossipOptions());
SAcQ = TI_FunctionList.g.activequest; SAcQ = SelectGossipActiveQuest;
SAvQ = TI_FunctionList.g.availquest; SAvQ = SelectGossipAvailableQuest;
elseif(gorq == "q") then elseif(gorq == "q") then
AvailableQuests = TI_GetQuests("Available"); AvailableQuests = TI_GetQuests("Available");
ActiveQuests = TI_GetQuests("Active"); ActiveQuests = TI_GetQuests("Active");
GossipOptions = {}; GossipOptions = {};
SAcQ=TI_FunctionList.q.activequest; SAcQ=SelectActiveQuest;
SAvQ=TI_FunctionList.q.availquest; SAvQ=SelectAvailableQuest;
end end
local ListEntry = {}; local ListEntry = {};
for i,v in ipairs(AvailableQuests) do for i,v in ipairs(AvailableQuests) do
local x={}; local x={};
@ -475,13 +424,8 @@ function TI_HandleGossipWindow(gorq)
local x={}; local x={};
x.name = v.name; x.name = v.name;
x.gorq = gorq; x.gorq = gorq;
if x.orderIndex then
x.args = v.orderIndex;
else
x.args = i; x.args = i;
end
x.type = v.type; x.type = v.type;
x.icon = v.icon;
x.state = false; x.state = false;
table.insert(ListEntry, x); table.insert(ListEntry, x);
end end
@ -489,13 +433,13 @@ function TI_HandleGossipWindow(gorq)
local TotalOptions = #AvailableQuests+#ActiveQuests+#GossipOptions; local TotalOptions = #AvailableQuests+#ActiveQuests+#GossipOptions;
--if(TI_activenumber > ActiveQuests.getn()) TI_activenumber = 1;
if(TotalOptions < 1) then if(TotalOptions < 1) then
return; return;
end end
local npcname = UnitName("npc"); local npcname = UnitName("npc");
if not issecretvalue(npcname) then
TI_AddNPCToTempList(npcname, ListEntry); TI_AddNPCToTempList(npcname, ListEntry);
if(TI_status.autoadd and (not TI_NPCDB[npcname])) then if(TI_status.autoadd and (not TI_NPCDB[npcname])) then
@ -520,11 +464,11 @@ function TI_HandleGossipWindow(gorq)
end end
if(TI_availnumber > TotalOptions or TI_activenumber > TotalOptions) then if(TI_availnumber > TotalOptions or TI_activenumber > TotalOptions) then
TI_debug("Out of available/active quests, giving up ");
TI_ResetPointers(); TI_ResetPointers();
return; return;
end end
TI_debug(npcname); TI_debug(npcname);
if(TI_NPCDB[npcname]) then if(TI_NPCDB[npcname]) then
local thisnpc = TI_NPCDB[npcname]; local thisnpc = TI_NPCDB[npcname];
@ -539,7 +483,7 @@ function TI_HandleGossipWindow(gorq)
for i2,v2 in ipairs(AvailableQuests) do for i2,v2 in ipairs(AvailableQuests) do
if (v2.name == current.name) then if (v2.name == current.name) then
TI_debug(i1.."-Available Match Found: "..current.name); TI_debug(i1.."-Available Match Found: "..current.name);
SAvQ(v2.questID); TI_FunctionList[current.gorq]["availquest"](i2);
return; return;
end end
end end
@ -547,19 +491,14 @@ function TI_HandleGossipWindow(gorq)
for i2,v2 in ipairs(ActiveQuests) do for i2,v2 in ipairs(ActiveQuests) do
if (v2.name == current.name) then if (v2.name == current.name) then
TI_debug(i1.."-Active Match Found: "..current.name..", "..current.type); TI_debug(i1.."-Active Match Found: "..current.name..", "..current.type);
SAcQ(v2.questID); TI_FunctionList[current.gorq]["activequest"](i2);
return; return;
end end
end end
else elseif (current.type == "gossip") then
for i2,v2 in ipairs(GossipOptions) do for i2,v2 in ipairs(GossipOptions) do
if (v2.name == current.name) then 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; return;
end end
end end
@ -574,8 +513,6 @@ function TI_HandleGossipWindow(gorq)
else else
TI_debug("npc not in list"); TI_debug("npc not in list");
end end
end
if(TI_status.usedefault == false) then if(TI_status.usedefault == false) then
TI_debug("npc not in list, default set to off, returning."); TI_debug("npc not in list, default set to off, returning.");
return; return;
@ -584,27 +521,20 @@ function TI_HandleGossipWindow(gorq)
for i,current in ipairs(TI_status.options) do for i,current in ipairs(TI_status.options) do
if(current.state) then if(current.state) then
if(current.type == "availquest" and #AvailableQuests > 0 and TI_availnumber <= #AvailableQuests) then if(current.type == "availquest" and #AvailableQuests > 0 and TI_availnumber <= #AvailableQuests) then
SAvQ(AvailableQuests[TI_availnumber].questID); TI_availnumber = TI_availnumber + 1;
TI_debug("Selecting Available Quest ".. TI_availnumber); SAvQ(TI_availnumber-1);
TI_debug("Selecting Available Quest ".. TI_availnumber-1);
return; return;
elseif(current.type == "activequest" and #ActiveQuests > 0 and TI_activenumber <= #ActiveQuests) then elseif(current.type == "activequest" and #ActiveQuests > 0 and TI_activenumber <= #ActiveQuests) then
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; TI_activenumber = TI_activenumber + 1;
end SAcQ(TI_activenumber-1);
end TI_debug("Selecting Active Quest ".. TI_activenumber-1);
return;
elseif(#GossipOptions > 0) then elseif(#GossipOptions > 0) then
for j,val in ipairs(GossipOptions) do for j,val in ipairs(GossipOptions) do
if(val.type == current.type) then if(val.type == current.type) then
TI_ResetPointers(); TI_ResetPointers();
TI_debug("Selecting Gossip Option "..j) SelectGossipOption(j);
TI_FunctionList.g.gossip(val.args);
return; return;
end end
end end
@ -639,13 +569,7 @@ function TI_AddNPCToTempList(name, list)
local temp = {}; local temp = {};
temp.name = name; temp.name = name;
temp.list = list; temp.list = list;
local subZone = GetSubZoneText(); temp.location = GetSubZoneText() .. ", " .. GetRealZoneText();
local realZone = GetRealZoneText();
if(subZone == "") then
temp.location = realZone;
else
temp.location = subZone .. ", " .. realZone;
end
table.insert(TI_TempNPCList, 1, temp); table.insert(TI_TempNPCList, 1, temp);
if(#TI_TempNPCList > TI_TempNPCListMaxSize) then if(#TI_TempNPCList > TI_TempNPCListMaxSize) then
table.remove(TI_TempNPCList, TI_TempNPCListMaxSize); table.remove(TI_TempNPCList, TI_TempNPCListMaxSize);
@ -677,121 +601,62 @@ function TI_StripDescriptors(...)
return x; return x;
end end
function TI_TabulateGossipQuestUIInfo(gquis) function TI_TabulateGossipOptions(...)
local x = {}; local x = {};
local arg = {...};
for i,gqui in ipairs(gquis) do for i=1, #arg, 2 do
local temp = {}; local temp = {};
temp.name = gqui.title; temp.name = arg[i];
temp.type = arg[i+1];
temp.icon = QuestUtil.GetQuestIconOffer(
gqui.isLegendary,
gqui.frequency,
gqui.isRepeatable,
false,
false
);
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp); table.insert(x, temp);
end end
return x; return x;
end end
function TI_TabulateGossipUIInfo(guis) function TI_TabulateGossipAvailableQuests(...)
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 = {}; local x = {};
for i,gqui in ipairs(gquis) do for i=1, select("#", ...), 5 do
local temp = {}; local temp = {};
temp.name = gqui.title; temp.name = select(i, ...);
if ( gqui.repeatable ) then isTrivial = select(i+2, ...);
isDaily = select(i+3, ...);
isRepeatable = select(i+4, ...);
if ( isDaily ) then
temp.icon = "Interface\\GossipFrame\\DailyQuestIcon"; temp.icon = "Interface\\GossipFrame\\DailyQuestIcon";
elseif ( gqui.isLegendary ) then elseif ( isRepeatable ) then
temp.icon = "Interface\\GossipFrame\\AvailableLegendaryQuestIcon"; temp.icon = "Interface\\GossipFrame\\DailyActiveQuestIcon";
else else
temp.icon = "Interface\\GossipFrame\\AvailableQuestIcon"; temp.icon = "Interface\\GossipFrame\\AvailableQuestIcon";
end end
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp); table.insert(x, temp);
end end
return x; return x;
end end
function TI_TabulateGossipActiveQuests_Classic(gquis) function TI_TabulateGossipActiveQuests(...)
local x = {}; local x = {};
for i,gqui in ipairs(gquis) do for i=1, select("#", ...), 4 do
local temp = {}; local temp = {};
temp.name = gqui.title; temp.name = select(i, ...);
if ( gqui.repeatable ) then isComplete = select(i+3, ...);
temp.icon = "Interface\\GossipFrame\\DailyQuestIcon"; if(isComplete) then
elseif ( gqui.isLegendary ) then temp.icon = "Interface\\GossipFrame\\ActiveQuestIcon";
temp.icon = "Interface\\GossipFrame\\AvailableLegendaryQuestIcon";
else else
temp.icon = "Interface\\GossipFrame\\AvailableQuestIcon"; temp.icon = "Interface\\GossipFrame\\IncompleteQuestIcon";
end end
temp.questID = gqui.questID;
temp.isComplete = gqui.isComplete;
table.insert(x, temp); table.insert(x, temp);
end end
return x; return x;
end end
TI_FunctionList = {} --[[this function stolen from WhisperCast by Sarris, whom I love dearly for his contribution to Paladins everywhere.
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 ) function TI_copyTable( src )
local copy = {} local copy = {}
for k1,v1 in pairs(src) do for k1,v1 in pairs(src) do

6
TurnIn.toc Executable file → Normal file
View File

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

281
TurnIn.xml Executable file → Normal file
View File

@ -1,9 +1,8 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <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">
xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd">
<Script file="TurnIn.lua" /> <Script file="TurnIn.lua" />
<Script file="TurnInUI.lua" /> <Script file="TurnInUI.lua" />
<Frame name="TI_OptionFrameBoxTemplate" virtual="true" inherits="BackdropTemplate"> <Frame name="TI_OptionFrameBoxTemplate" virtual="true">
<!-- shamelessly stolen from blizzard --> <!-- shamelessly stolen from blizzard -->
<Layers> <Layers>
<Layer level="BACKGROUND"> <Layer level="BACKGROUND">
@ -18,12 +17,19 @@
</FontString> </FontString>
</Layer> </Layer>
</Layers> </Layers>
<KeyValues> <Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<KeyValue key="backdropInfo" value="BACKDROP_TUTORIAL_16_16" type="global"/> <EdgeSize>
</KeyValues> <AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<Scripts> <Scripts>
<OnLoad> <OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4); self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.5, 0.5, 0.5); self:SetBackdropColor(0.5, 0.5, 0.5);
</OnLoad> </OnLoad>
@ -45,7 +51,7 @@
--> -->
</Scripts> </Scripts>
<Frames> <Frames>
<CheckButton name="$parent_Check" hidden="false" inherits="UICheckButtonTemplate"> <CheckButton name="$parent_Check" hidden="false" inherits="OptionsCheckButtonTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"/> <Anchor point="TOPLEFT"/>
</Anchors> </Anchors>
@ -136,7 +142,7 @@
</Anchor> </Anchor>
</Anchors> </Anchors>
</Texture> </Texture>
<FontString name="$parent_Text" inherits="GameFontNormal" justifyV="TOP" justifyH="LEFT"> <FontString name="$parent_Text" inherits="GameFontNormal" justifyV="top" justifyH="left">
<Anchors> <Anchors>
<Anchor point="TOPLEFT" relativeTo="$parent_Icon" relativePoint="TOPRIGHT"> <Anchor point="TOPLEFT" relativeTo="$parent_Icon" relativePoint="TOPRIGHT">
<Offset> <Offset>
@ -181,7 +187,7 @@
<AbsDimension x="232" y="20" /> <AbsDimension x="232" y="20" />
</Size> </Size>
<Frames> <Frames>
<CheckButton name="$parent_Check" hidden="false" inherits="UICheckButtonTemplate"> <CheckButton name="$parent_Check" hidden="false" inherits="OptionsCheckButtonTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"/> <Anchor point="TOPLEFT"/>
</Anchors> </Anchors>
@ -204,7 +210,7 @@
</OnLeave> </OnLeave>
</Scripts> </Scripts>
</CheckButton> </CheckButton>
<Button name="$parent_Delete" hidden="false" inherits="UIPanelButtonTemplate" text="X"> <Button name="$parent_Delete" hidden="false" inherits="OptionsButtonTemplate" text="X">
<Anchors> <Anchors>
<Anchor point="RIGHT"> <Anchor point="RIGHT">
<Offset> <Offset>
@ -230,7 +236,7 @@
</Frames> </Frames>
<Layers> <Layers>
<Layer level="ARTWORK"> <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> <Anchors>
<Anchor point="LEFT"> <Anchor point="LEFT">
<Offset> <Offset>
@ -251,7 +257,7 @@
<GameTooltip name="TI_Tooltip" hidden="true" inherits="GameTooltipTemplate" /> <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> <Scripts>
<OnEnter> <OnEnter>
TI_TempNPCListTooltipShow(self); TI_TempNPCListTooltipShow(self);
@ -266,7 +272,7 @@
<Layers> <Layers>
<Layer level="ARTWORK"> <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> <Anchors>
<Anchor point="LEFT"> <Anchor point="LEFT">
<Offset> <Offset>
@ -278,7 +284,7 @@
</Layer> </Layer>
</Layers> </Layers>
<Frames> <Frames>
<Button name="$parent_Delete" hidden="false" inherits="UIPanelButtonTemplate" text="X"> <Button name="$parent_Delete" hidden="false" inherits="OptionsButtonTemplate" text="X">
<Anchors> <Anchors>
<Anchor point="TOPRIGHT"> <Anchor point="TOPRIGHT">
<Offset> <Offset>
@ -301,7 +307,7 @@
</OnLeave> </OnLeave>
</Scripts> </Scripts>
</Button> </Button>
<Button name="$parent_Add" hidden="false" inherits="UIPanelButtonTemplate" text="+"> <Button name="$parent_Add" hidden="false" inherits="OptionsButtonTemplate" text="+">
<Anchors> <Anchors>
<Anchor point="RIGHT" relativeTo="$parent_Delete" relativePoint="LEFT"> <Anchor point="RIGHT" relativeTo="$parent_Delete" relativePoint="LEFT">
<Offset> <Offset>
@ -327,7 +333,7 @@
</Frames> </Frames>
</Frame> </Frame>
<Frame name="TI_TempNPCListWindow" parent="UIParent" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" hidden="true" inherits="BackdropTemplate"> <Frame Name="TI_TempNPCListWindow" parent="UIParent" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" hidden="true">
<Size> <Size>
<AbsDimension x="200" y="130" /> <AbsDimension x="200" y="130" />
</Size> </Size>
@ -397,24 +403,18 @@
</Anchors> </Anchors>
</Frame> </Frame>
</Frames> </Frames>
<KeyValues> <Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<KeyValue key="backdropInfo" value="BACKDROP_TUTORIAL_16_16" type="global"/> <EdgeSize>
</KeyValues> <AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<Scripts> <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> <OnMouseUp>
if ( self.isMoving ) then if ( self.isMoving ) then
self:StopMovingOrSizing(); self:StopMovingOrSizing();
@ -436,24 +436,36 @@
</Scripts> </Scripts>
</Frame> </Frame>
<Frame name="TI_OptionsFrame" inherits="BackdropTemplate" frameStrata="DIALOG" toplevel="true" enableMouse="true" movable="true" parent="UIParent"> <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>
<KeyValues> <Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<KeyValue key="backdropInfo" value="BACKDROP_DIALOG_32_32" type="global"/> <BackgroundInsets>
</KeyValues> <AbsInset left="11" right="12" top="12" bottom="11"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="32"/>
</TileSize>
<EdgeSize>
<AbsValue val="32"/>
</EdgeSize>
</Backdrop>
<Scripts> <Scripts>
<OnLoad> <OnShow>
self:ApplyBackdrop()
self:EnableMouse(true) </OnShow>
self:RegisterForDrag("LeftButton")
</OnLoad>
<OnDragStart>
self:StartMoving()
</OnDragStart>
<OnDragStop>
self:StopMovingOrSizing()
</OnDragStop>
</Scripts> </Scripts>
<Size> <Size>
<AbsDimension x="300" y="500"/> <AbsDimension x="300" y="500"/>
@ -511,7 +523,7 @@
<AbsDimension x="200" y="20" /> <AbsDimension x="200" y="20" />
</Size> </Size>
<Frames> <Frames>
<CheckButton name="$parent_Checkbox" hidden="false" inherits="UICheckButtonTemplate"> <CheckButton name="$parent_Checkbox" hidden="false" inherits="OptionsCheckButtonTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"> <Anchor point="TOPLEFT">
<Offset> <Offset>
@ -573,7 +585,7 @@
<AbsDimension x="200" y="40" /> <AbsDimension x="200" y="40" />
</Size> </Size>
<Frames> <Frames>
<CheckButton name="$parent_UseDefault" hidden="false" inherits="UICheckButtonTemplate"> <CheckButton name="$parent_UseDefault" hidden="false" inherits="OptionsCheckButtonTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"> <Anchor point="TOPLEFT">
<Offset> <Offset>
@ -593,7 +605,7 @@
</OnClick> </OnClick>
</Scripts> </Scripts>
</CheckButton> </CheckButton>
<CheckButton name="$parent_AddAutomatically" hidden="false" inherits="UICheckButtonTemplate"> <CheckButton name="$parent_AddAutomatically" hidden="false" inherits="OptionsCheckButtonTemplate">
<Anchors> <Anchors>
<Anchor point="TOPLEFT" relativeTo="$parent_UseDefault" relativePoint="BOTTOMLEFT"> <Anchor point="TOPLEFT" relativeTo="$parent_UseDefault" relativePoint="BOTTOMLEFT">
<Offset> <Offset>
@ -646,7 +658,6 @@
<Frame name="TI_OptionsPriorityContainer" inherits="TI_OptionFrameBoxTemplate"> <Frame name="TI_OptionsPriorityContainer" inherits="TI_OptionFrameBoxTemplate">
<Scripts> <Scripts>
<OnLoad> <OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4); self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.15, 0.15, 0.15); self:SetBackdropColor(0.15, 0.15, 0.15);
getglobal(self:GetName().."Title"):SetText("Gossip Options Priority List"); getglobal(self:GetName().."Title"):SetText("Gossip Options Priority List");
@ -684,6 +695,167 @@
<Size> <Size>
<AbsDimension x="200" y="30"/> <AbsDimension x="200" y="30"/>
</Size> </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> </Frame>
</ScrollChild> </ScrollChild>
</ScrollFrame> </ScrollFrame>
@ -693,7 +865,6 @@
<Frame name="TI_OptionsNPCContainer" inherits="TI_OptionFrameBoxTemplate"> <Frame name="TI_OptionsNPCContainer" inherits="TI_OptionFrameBoxTemplate">
<Scripts> <Scripts>
<OnLoad> <OnLoad>
self:ApplyBackdrop();
self:SetBackdropBorderColor(0.4, 0.4, 0.4); self:SetBackdropBorderColor(0.4, 0.4, 0.4);
self:SetBackdropColor(0.15, 0.15, 0.15); self:SetBackdropColor(0.15, 0.15, 0.15);
getglobal(self:GetName().."Title"):SetText("NPC Database"); getglobal(self:GetName().."Title"):SetText("NPC Database");
@ -711,7 +882,7 @@
</Size> </Size>
<Frames> <Frames>
<ScrollFrame name="TI_NPCListScrollFrame" inherits="FauxScrollFrameTemplate" hidden="false" > <ScrollFrame name="TI_NPCListScrollFrame" inherits="FauxScrollFrameTemplate" hidden="false" enableMouseWheel="true">
<Anchors> <Anchors>
<Anchor point="TOPLEFT"> <Anchor point="TOPLEFT">
<Offset> <Offset>

90
TurnInUI.lua Executable file → Normal file
View File

@ -1,30 +1,3 @@
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) function TI_PopulateOptions(arg)
TI_debug(arg); TI_debug(arg);
local CurrOpts; local CurrOpts;
@ -37,9 +10,9 @@ function TI_PopulateOptions(arg)
end end
for i,v in ipairs(CurrOpts) do for i,v in ipairs(CurrOpts) do
local entrybutton = TI_GetOptionsPriorityFrame(i); local entry = "TI_OptionsPriority" .. i;
local icon, entrytext = entrybutton:GetRegions(); local entrybutton = getglobal(entry);
local checkbox = entrybutton:GetChildren(); local entrytext = getglobal("TI_OptionsPriority"..i.."_Text");
local iconpath; local iconpath;
if(v.name == nil) then TI_debug("oh noes") end; if(v.name == nil) then TI_debug("oh noes") end;
entrytext:SetText(v.name); entrytext:SetText(v.name);
@ -47,30 +20,27 @@ function TI_PopulateOptions(arg)
if(v.icon) then if(v.icon) then
iconpath = v.icon; iconpath = v.icon;
else else
iconpath = "Interface/GossipFrame/ActiveQuestIcon"; iconpath = "Interface\\GossipFrame\\ActiveQuestIcon";
end end
elseif(v.type == "availquest") then elseif(v.type == "availquest") then
if(v.icon) then if(v.icon) then
iconpath = v.icon; iconpath = v.icon;
else else
iconpath = "Interface/GossipFrame/AvailableQuestIcon"; iconpath = "Interface\\GossipFrame\\AvailableQuestIcon";
end end
else else
if(v.icon) then iconpath = "Interface\\GossipFrame\\" .. v.type .. "GossipIcon";
iconpath = v.icon;
else
iconpath = "Interface/GossipFrame/" .. v.type .. "GossipIcon";
end end
end getglobal(entry .. "_Icon"):SetTexture(iconpath);
icon:SetTexture(iconpath); getglobal(entry .. "_Check"):SetChecked(v.state);
checkbox:SetChecked(v.state);
entrytext:SetWidth(156); --make sure to change this if you change the anchors in the XML entrytext:SetWidth(156); --make sure to change this if you change the anchors in the XML
entrybutton:SetHeight( entrytext:GetHeight() + 6); entrybutton:SetHeight( entrytext:GetHeight() + 6);
entrybutton:Show(); entrybutton:Show();
last = last+1; last = last+1;
end end
TI_HideUnusedOptionFrames(last); for j=last, 16, 1 do
getglobal("TI_OptionsPriority" .. j):Hide();
end
TI_OptionsPriorityScrollFrame:SetVerticalScroll(0); TI_OptionsPriorityScrollFrame:SetVerticalScroll(0);
TI_OptionsPriorityScrollFrame:UpdateScrollChildRect(); TI_OptionsPriorityScrollFrame:UpdateScrollChildRect();
TI_StatusIndicatorUpdate(); TI_StatusIndicatorUpdate();
@ -79,6 +49,31 @@ function TI_PopulateOptions(arg)
TI_SettingCheckboxUpdate(); TI_SettingCheckboxUpdate();
end 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() function TI_NPCListScrollBarUpdate()
if(TI_NPCIndex) then if(TI_NPCIndex) then
@ -90,6 +85,19 @@ function TI_NPCListScrollBarUpdate()
local offset = FauxScrollFrame_GetOffset(TI_NPCListScrollFrame); local offset = FauxScrollFrame_GetOffset(TI_NPCListScrollFrame);
local i=1; local i=1;
local j=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 for line=1,8 do
lineplusoffset = line + FauxScrollFrame_GetOffset(TI_NPCListScrollFrame); lineplusoffset = line + FauxScrollFrame_GetOffset(TI_NPCListScrollFrame);

View File

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