Browse Source

some fixes for multiple professions

pull/8/head
Anthony Narkevicius 3 years ago committed by GitHub
parent
commit
edeb1c5fd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 169
      TradeSkillMaster_Crafting/Modules/CraftingGUI.lua

169
TradeSkillMaster_Crafting/Modules/CraftingGUI.lua

@ -16,52 +16,52 @@ local private = {}
private.gather = {} private.gather = {}
private.shown = {} private.shown = {}
local function GetProfessionInfo(id) -- local function GetProfessionInfo(id)
-- store primary profession names -- -- store primary profession names
local primary = {} -- local primary = {}
local cooking = {} -- local cooking = {}
local firstAid = {} -- local firstAid = {}
-- find which primary professions we have -- -- find which primary professions we have
for i = 1, GetNumSkillLines() do -- for i = 1, GetNumSkillLines() do
if GetSkillLineInfo(i) == "Professions" then -- if GetSkillLineInfo(i) == "Professions" then
i = i+1 -- skip header -- i = i+1 -- skip header
while select(2, GetSkillLineInfo(i)) ~= 1 do -- while select(2, GetSkillLineInfo(i)) ~= 1 do
local name, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(i) -- local name, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(i)
table.insert(primary, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank}) -- table.insert(primary, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank})
i = i+1 -- i = i+1
end -- end
elseif GetSkillLineInfo(i) == "Secondary Skills" then -- elseif GetSkillLineInfo(i) == "Secondary Skills" then
i = i+1 -- skip header -- i = i+1 -- skip header
while select(2, GetSkillLineInfo(i)) ~= 1 do -- while select(2, GetSkillLineInfo(i)) ~= 1 do
local name, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(i) -- local name, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(i)
if name == "Cooking" then -- if name == "Cooking" then
table.insert(cooking, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank}) -- table.insert(cooking, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank})
elseif name == "First Aid" then -- elseif name == "First Aid" then
table.insert(firstAid, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank}) -- table.insert(firstAid, {name=name, skillRank=skillRank, skillMaxRank=skillMaxRank})
end -- end
i = i+1 -- i = i+1
end -- end
end -- end
end -- end
--local spell, profession = GetSpellLink(primary[1]) -- --local spell, profession = GetSpellLink(primary[1])
local profession -- local profession
if id == "tradeSkill1" then -- if id == "tradeSkill1" then
profession = primary[1] -- profession = primary[1]
elseif id == "tradeSkill2" then -- elseif id == "tradeSkill2" then
profession = primary[2] -- profession = primary[2]
elseif id == "cook" then -- elseif id == "cook" then
profession = cooking -- profession = cooking
elseif id == "firstAid" then -- elseif id == "firstAid" then
profession = firstAid -- profession = firstAid
else -- else
error("Invalid GetProfessionInfo id") -- error("Invalid GetProfessionInfo id")
return nil -- return nil
end -- end
if profession == nil then -- if profession == nil then
return nil -- return nil
end -- end
return profession.name, nil, profession.skillRank, profession.skillMaxRank -- return profession.name, nil, profession.skillRank, profession.skillMaxRank
end -- end
-- Helper function to find spellID associated to spellname -- Helper function to find spellID associated to spellname
local function GetTradeSkillSpellID(spellName) local function GetTradeSkillSpellID(spellName)
@ -313,26 +313,21 @@ function GUI:UpdateTradeSkills()
--11- Fishing --11- Fishing
--12- Riding --12- Riding
local skillName, header local skillName
local tradeSkill1, tradeSkill2, cook, firstAid local cook, firstAid
local insideProfessions
local tradeSkill = {}
for i = 1, GetNumSkillLines() do for i = 1, GetNumSkillLines() do
skillName = GetSkillLineInfo(i) skillName = GetSkillLineInfo(i)
if skillName == "Professions" then --TRADE_SKILLS ) then if skillName == "Professions" then
tradeSkill1, header = GetSkillLineInfo(i + 1); insideProfessions = true
if tradeSkill1 == "Mining" then tradeSkill1 = "Smelting" end elseif skillName == "Secondary Skills"
if header or not GetSpellInfo(tradeSkill1) then or skillName == "Weapon Skills" then
tradeSkill1 = nil insideProfessions = false
else elseif insideProfessions then
tradeSkill1=i+1 if skillName == "Mining" then skillName = "Smelting" end
end if GetSpellInfo(skillName) then
table.insert(tradeSkill, i)
tradeSkill2, header = GetSkillLineInfo(i + 2);
if tradeSkill2 == "Mining" then tradeSkill2 = "Smelting" end
if header or not GetSpellInfo(tradeSkill2) then
tradeSkill2 = nil
else
tradeSkill2=i+2
end end
elseif skillName == "Cooking" then elseif skillName == "Cooking" then
cook = i cook = i
@ -346,35 +341,25 @@ function GUI:UpdateTradeSkills()
if not playerName then return end if not playerName then return end
TSM.db.realm.tradeSkills[playerName] = TSM.db.realm.tradeSkills[playerName] or {} TSM.db.realm.tradeSkills[playerName] = TSM.db.realm.tradeSkills[playerName] or {}
-- SpellBook_UpdateProfTab()
for i, id in pairs({ tradeSkill[1], tradeSkill[2], tradeSkill[3], tradeSkill[4], tradeSkill[5], tradeSkill[6], tradeSkill[7], tradeSkill[8], tradeSkill[9], tradeSkill[10], cook, firstAid }) do -- needs to be pairs since may not be continuous indices
-- local tradeSkill1, tradeSkill2, _, _, cook, firstAid = GetProfessions() -- GetProfessions API added in Cata local skillName, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(id)
-- local btns = { PrimaryProfession1SpellButtonBottom, PrimaryProfession2SpellButtonBottom, SecondaryProfession3SpellButtonRight, SecondaryProfession4SpellButtonRight } if skillName ~= nil then
local old = TSM.db.realm.tradeSkills[playerName] TSM.db.realm.tradeSkills[playerName][skillName] = TSM.db.realm.tradeSkills[playerName][skillName] or {}
--TSM.db.realm.tradeSkills[playerName] = {} TSM.db.realm.tradeSkills[playerName][skillName].level = skillRank
-- for i, id in pairs({ "tradeSkill1", "tradeSkill2", "cook", "firstAid" }) do TSM.db.realm.tradeSkills[playerName][skillName].maxLevel = skillMaxRank
for i, id in pairs({ tradeSkill1, tradeSkill2, cook, firstAid }) do -- needs to be pairs since may not be continuous indices TSM.db.realm.tradeSkills[playerName][skillName].isSecondary = (i > 10) and true
-- if not btns[i]:GetParent().missingHeader:IsVisible() then
-- local skillName, _, level, maxLevel = GetProfessionInfo(id) -- Also added in Cata local _, link = GetSpellLink(skillName)
local skillName, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(id) if link then
if skillName ~= nil then TSM.db.realm.tradeSkills[playerName][skillName].link = link
TSM.db.realm.tradeSkills[playerName][skillName] = old[skillName] or {} if skillName == GetTradeSkillLine() and i <= 10 and not TSM.isSyncing then
TSM.db.realm.tradeSkills[playerName][skillName].level = skillRank TSM.db.realm.tradeSkills[playerName][skillName].account = nil
TSM.db.realm.tradeSkills[playerName][skillName].maxLevel = skillMaxRank TSM.db.realm.tradeSkills[playerName][skillName].accountKey = TSMAPI.Sync:GetAccountKey()
TSM.db.realm.tradeSkills[playerName][skillName].isSecondary = (i > 2) and true TSM.Sync:BroadcastTradeSkillData()
-- local spellBookSlot = btns[i]:GetID() + btns[i]:GetParent().spellOffset
local _, link = GetSpellLink(skillName)
if link then
TSM.db.realm.tradeSkills[playerName][skillName].link = link
if skillName == GetTradeSkillLine() and i <= 2 and not TSM.isSyncing then
TSM.db.realm.tradeSkills[playerName][skillName].account = nil
TSM.db.realm.tradeSkills[playerName][skillName].accountKey = TSMAPI.Sync:GetAccountKey()
TSM.Sync:BroadcastTradeSkillData()
end
end end
end end
-- end end
end end
--tidy up crafts if player unlearned a profession --tidy up crafts if player unlearned a profession
@ -2760,4 +2745,4 @@ function CheapestVellum(itemPassed)
end end
end end
return itemPassed return itemPassed
end end

Loading…
Cancel
Save