WoWInterface SVN PersonalTrainer

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 3 to Rev 4
    Reverse comparison

Rev 3 → Rev 4

trunk/PersonalTrainer.lua
0,0 → 1,164
-- UI Mod Declaration
PT = LibStub("AceAddon-3.0"):NewAddon("PersonalTrainer", "AceConsole-3.0", "AceEvent-3.0");
 
-- Ace Components
local AceDB = LibStub("AceDB-3.0");
local AceConfig = LibStub("AceConfigDialog-3.0");
 
-- Core Functions
function PT:OnInitialize()
-- Generics
PT.Version = GetAddOnMetadata("PersonalTrainer", "Version");
 
PT.db = AceDB:New("PT_Vars");
PT.db:RegisterDefaults({
global = {
debug = false;
},
class = {
Skills = {}
}
});
 
PT.IsScanning = false
PT.OldFilter = { Avail = 0, Unavail = 0, Used = 0 }
 
self:RegisterEvent("TRAINER_SHOW");
self:RegisterEvent("TRAINER_UPDATE");
end
 
function PT:OnEnable()
self:Print("Loaded [ "..PT.Version.." ]");
end
 
function PT:OnDisable()
 
end
 
-- Skill Parsing & Storing
function PT:TRAINER_SHOW()
if (not IsTradeskillTrainer()) then
self:Print("DEBUG: Trainer was a skill trainer.");
PT:ScanSkillTrees();
else
self:Print("DEBUG: Trainer was a tradeskill trainer.");
end
end
 
function PT:TRAINER_UPDATE()
--PT:UpdateSkillTrees();
end
 
function PT:ScanSkillTrees()
-- Save Old Filter Settings
local set = {}
 
-- Turn All On
SetTrainerServiceTypeFilter("available", 1);
SetTrainerServiceTypeFilter("unavailable", 1);
SetTrainerServiceTypeFilter("used", 1);
 
-- Expand All Categories
for i = 1,GetNumTrainerServices() do
_,_, category = GetTrainerServiceInfo(i);
 
if (category == nil) then
break;
end
 
if (category == "header") then
ExpandTrainerSkillLine(i);
end
end
 
-- Scan
PT.db.class.Skills = {}
for i = 1,GetNumTrainerServices() do
local Service = PT:GetServiceInfo(i);
 
if (Service.Name == nil) then
break;
end
 
local Entry = {}
Entry.ID = Service.SpellID;
Entry.Cost = Service.Cost;
Entry.Level = Service.Level;
Entry.Icon = Service.Icon;
 
table.insert(PT.db.class.Skills, Entry);
end
 
-- Sort By Level
table.sort(PT.db.class.Skills, PT_SortSkillsByLevel);
 
-- Reset Filter Options
SetTrainerServiceTypeFilter("available", 1);
SetTrainerServiceTypeFilter("unavailable", 1);
SetTrainerServiceTypeFilter("used", 0);
end
 
function PT_SortSkillsByLevel(a,b)
if (a.Level ~= nil and b.Level ~= nil) then
return a.Level<b.Level;
else
return a==b;
end
end
 
function PT:UpdateSkillTrees()
--[[local numServices = GetNumTrainerServices();
 
for i = 1,numServices do
local Service = PT:GetServiceInfo(i);
 
if (Service.Name == nil) then
break;
end
 
self:Print(Service.LongName..", "..Service.Category..", "..Service.Expanded..", "..Service.Link);
end]]
 
for i = 1,GetNumSkillLines() do
 
end
end
 
function PT:GetServiceInfo(index)
local Service = {}
 
local nm, rnk, cat, ex = GetTrainerServiceInfo(index);
 
if (rnk ~= "") then
Service.LongName = nm.." ("..rnk..")"
else
Service.LongName = nm;
end
 
-- Trainer Info
Service.Name = nm;
Service.Rank = rnk;
Service.Category = cat
Service.Expanded = ex
 
-- Cost
local cst, tcst, _ = GetTrainerServiceCost(index);
Service.Cost = cst;
Service.CostText = ""..cst..""; --TODO: Update
 
-- Level
Service.Level = GetTrainerServiceLevelReq(index);
 
-- Spell Info
local lnk = GetSpellLink(Service.Name, Service.Rank);
Service.Link = lnk
if(lnk ~= nil) then
Service.SpellID = lnk:match("spell:(%d+)");
local _,_,ico = GetSpellInfo(Service.SpellID);
Service.Icon = ico
else
Service.Icon = GetSpellTexture(Service.Name);
end
 
return Service;
end
\ No newline at end of file
trunk/PersonalTrainer.toc
4,6 → 4,6
## Author: Voorije of Azjol-Nerub
## Notes: Battleground Scoreboard
## OptionalDeps:
## SavedVariables: BB_Vars
## SavedVariables: PT_Vars
embeds.xml
PersonalTrainer.xml
\ No newline at end of file