Mercurial > wow > buffalo2
diff ObjectiveTracker/BonusObjectives.lua @ 33:64f2a9bbea79
- implementing structural revisions in bonus objectives
- prevent instances of nil arithmetic
- decide on where to keep style values
- start widgets with dummy values for operability
author | Nenue |
---|---|
date | Fri, 15 Apr 2016 17:01:06 -0400 |
parents | a3afe6c3771e |
children | 9856ebc63fa4 |
line wrap: on
line diff
--- a/ObjectiveTracker/BonusObjectives.lua Fri Apr 15 07:01:40 2016 -0400 +++ b/ObjectiveTracker/BonusObjectives.lua Fri Apr 15 17:01:06 2016 -0400 @@ -8,16 +8,14 @@ local Default, Quest = T.DefaultHandler, T.Quest local print = B.print('Tracker') local lprint = B.print('Line') +local iprint = B.print('Info') local Bonus = T.Bonus local UnitName, GetRealmName, GetQuestObjectiveInfo, GetTasksTable, GetTaskInfo = UnitName, GetRealmName, GetQuestObjectiveInfo, GetTasksTable, GetTaskInfo local GetMapNameByID, GetCurrentMapAreaID = GetMapNameByID, GetCurrentMapAreaID local tinsert, ipairs, pairs, tostring = tinsert, ipairs, pairs, tostring -local GetNumQuestLogRewardCurrencies, GetQuestLogRewardCurrencyInfo = GetNumQuestLogRewardCurrencies, GetQuestLogRewardCurrencyInfo -local GetNumQuestLogRewards, GetQuestLogRewardInfo = GetNumQuestLogRewards, GetQuestLogRewardInfo -local GetQuestLogRewardMoney, GetMoneyString = GetQuestLogRewardMoney, GetMoneyString local GetQuestProgressBarPercent, PERCENTAGE_STRING, GetTime = GetQuestProgressBarPercent, PERCENTAGE_STRING, GetTime - +local STICKY_TASKS = true --- Returns a tasks table modified to include recently completed objectives local InternalGetTasksTable = function() @@ -88,11 +86,13 @@ Bonus.QuestBlock = {} Bonus.WatchInfo = {} function Bonus:GetNumWatched () + local print = iprint print(self.name, self) local tasks = InternalGetTasksTable() local numWatched = 0 local numAll = 0 + local existingTasks = {} self.WatchInfo = {} print('|cFFFFFF00Bonus.GetNumWatched()|r', #tasks) print(' TasksTable pull:') @@ -106,19 +106,15 @@ self.Info[questID] = self.Info[questID] or {} local t = self.Info[questID] - self.WatchInfo[i] = t - t.isInArea = isInArea - t.isOnMap = isOnMap - t.existingTask = existingTask - t.questID = questID - t.id = questID - t.objectives = {} - t.taskIndex = i - - - T.SetRewards(t, questID) + if (isOnMap or isInArea) and existingTask then + t.areaID = GetCurrentMapAreaID() + local _ + t.mapName, _, _, t.isMicroDungeon, t.microDungeonMapName = GetMapInfo() + print('|cFF00FF00scooping map info (questID '..questID..'):|r', t.areaID, t.mapName) + end local taskTitle + t.objectives = {} local taskFinished = true; for objectiveIndex = 1, numObjectives do local text, objectiveType, finished, displayAsObjective = InternalGetQuestObjectiveInfo(questID, objectiveIndex, false); @@ -143,13 +139,23 @@ print(' |cFF00FF88*', objectiveIndex, text) end + T.SetRewards(t, questID) + -- didn't get a name from progress bar? what about area name if not taskTitle then if isInArea then taskTitle = GetMapNameByID(GetCurrentMapAreaID()) end end + + t.isInArea = isInArea + t.isOnMap = isOnMap + t.existingTask = existingTask + t.questID = questID + t.id = questID + t.taskIndex = i t.title = taskTitle + self.WatchInfo[i] = t end print (' |cFF00FF88#', i, 'questID', questID, 'inArea', isInArea, 'onMap', isOnMap, 'existing', (existingTask and 'Y' or 'N'), (test and '|cFF00FF00show|r' or '|cFFFF0088hide|r')) @@ -164,10 +170,10 @@ end --- info cleanup done when turn-ins are detected -Bonus.OnTurnIn = function(self, questID, xp, money) - - if #self.info.rewardInfo >= 1 then - for i, reward in ipairs(self.info.rewardInfo) do +Bonus.OnTurnIn = function(self, block, questID, xp, money) + local info = self.Info[questID] + if info.rewardInfo and #info.rewardInfo >= 1 then + for i, reward in ipairs(info.rewardInfo) do --[[ type = 'item', index = i , @@ -182,13 +188,15 @@ end end - print('|cFFFF8800'..self.name..':OnTurnIn call', questID, xp, money) + print('|cFFFF8800'..block.name..':OnTurnIn call', questID, xp, money) local savedTasks = B.Conf.TasksLog - self.Info[questID].completedTime = GetTime() - self.Info[questID].animate = true - T.SetAnimate(self.watchReasonModule) - savedTasks[questID] = self.Info[questID] + info.completedTime = GetTime() + info.animate = true + T.SetAnimate(handler.watchReasonModule) + savedTasks[questID] = info + + print('adding', info.title, 'to cache') end Bonus.GetInfo = function(self, taskIndex) @@ -203,7 +211,7 @@ Default.UpdateObjectives(handler, block) end -Bonus.UpdateLine = function(handler, objectiveType, line, data) +Bonus.UpdateLine = function(handler, block, line, data) local info = block.info local print = lprint local text, attachment = '', nil @@ -211,11 +219,15 @@ print(' ', data.objectiveIndex,'|cFFFF0088-|r', data.objectiveType, data.text) if data.objectiveType == 'progressbar' then print(' |cFFFF44DDpercent='..tostring(GetQuestProgressBarPercent(info.questID))) - data.value = GetQuestProgressBarPercent(info.questID) or 0 - data.maxValue = 100 + local percent = 100 attachment = T.SetWidget(line, data, 'ProgressBar', info.questID..'-'..data.objectiveIndex) + if not data.finished then + percent = GetQuestProgressBarPercent(info.questID) + end + attachment.value = percent + attachment.maxValue = 100 attachment:SetPoint('TOP', line, 'TOP', 0, 0) - attachment.status:SetFormattedText(PERCENTAGE_STRING, (data.value / data.maxValue)) + attachment.status:SetFormattedText(PERCENTAGE_STRING, (percent / 100)) print(' |cFFFF0022** text:|r', data.text, '|cFFFF0022value:|r', data.value, '|cFFFF0022max:|r', data.maxValue) else text = data.text @@ -223,8 +235,9 @@ return text, attachment end -Bonus.Select = function(self) - Bonus:OnTurnIn(self.info.questID) +Bonus.Select = function(handler, block) + print(handler, block) + handler:OnTurnIn(block, block.info.questID) end Bonus.Remove = function(self)