You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
7.1 KiB
193 lines
7.1 KiB
-- ========================================================================= --
|
|
-- SylingTracker --
|
|
-- https://www.curseforge.com/wow/addons/sylingtracker --
|
|
-- --
|
|
-- Repository: --
|
|
-- https://github.com/Skamer/SylingTracker --
|
|
-- --
|
|
-- ========================================================================= --
|
|
Syling "SylingTracker.Torghast" ""
|
|
-- ========================================================================= --
|
|
import "SLT"
|
|
-- ========================================================================= --
|
|
_Active = false
|
|
-- ========================================================================= --
|
|
export {
|
|
RegisterContentType = API.RegisterContentType,
|
|
RegisterModel = API.RegisterModel,
|
|
|
|
IsInJailersTower = IsInJailersTower,
|
|
GetJailersTowerLevel = GetJailersTowerLevel,
|
|
GetAnimaPowerRarity = Utils.Torghast.GetAnimaPowerRarity,
|
|
GetStepInfo = C_Scenario.GetStepInfo,
|
|
GetScenarioWidgetInfo = C_UIWidgetManager.GetScenarioHeaderCurrenciesAndBackgroundWidgetVisualizationInfo,
|
|
GetStatusBarWidgetInfo = C_UIWidgetManager.GetStatusBarWidgetVisualizationInfo,
|
|
UnitAura = UnitAura
|
|
}
|
|
-- ========================================================================= --
|
|
local _TorghastModel = RegisterModel(Model, "torghast-data")
|
|
-- ========================================================================= --
|
|
RegisterContentType({
|
|
ID = "torghast",
|
|
DisplayName = "Torghast",
|
|
Description = "TORGHAST_PH_DESCRIPTION",
|
|
DefaultOrder = 40,
|
|
DefaultModel = _TorghastModel,
|
|
DefaultViewClass = TorghastContentView,
|
|
Events = "PLAYER_ENTERING_WORLD",
|
|
Status = function() return IsInJailersTower() end
|
|
})
|
|
-- ========================================================================= --
|
|
local TORGHAST_WIDGET_ID = 2319
|
|
local TORGHAST_TARRAGRUE_WIDGET_ID = 2321
|
|
local MAX_BUFF_MAX_DISPLAY = 44
|
|
-- ========================================================================= --
|
|
__ActiveOnEvents__ "PLAYER_ENTERING_WORLD"
|
|
function BecomeActiveOn(self)
|
|
return IsInJailersTower()
|
|
end
|
|
-- ========================================================================= --
|
|
function OnActive(self)
|
|
self:UpdateDeathAndFantasmCurrency()
|
|
self:UpdateAnimaPowers()
|
|
self:UpdateLevel()
|
|
self:UpdateObjectives()
|
|
|
|
_TorghastModel:Flush()
|
|
end
|
|
|
|
function OnInactive(self)
|
|
_TorghastModel:ClearData()
|
|
end
|
|
-- ========================================================================= --
|
|
__SystemEvent__()
|
|
function UPDATE_UI_WIDGET(widgetInfo)
|
|
if widgetInfo.widgetID == TORGHAST_WIDGET_ID then
|
|
_M:UpdateDeathAndFantasmCurrency()
|
|
_TorghastModel:Flush()
|
|
elseif widgetInfo.widgetID == TORGHAST_TARRAGRUE_WIDGET_ID then
|
|
_M:UpdateTarragrueTimer()
|
|
_TorghastModel:Flush()
|
|
end
|
|
end
|
|
|
|
__SystemEvent__()
|
|
function SCENARIO_UPDATE(isNewStage)
|
|
if isNewStage then
|
|
_M:UpdateObjectives()
|
|
_TorghastModel:Flush()
|
|
end
|
|
end
|
|
|
|
__SystemEvent__()
|
|
function JAILERS_TOWER_LEVEL_UPDATE(level, type)
|
|
_TorghastModel:AddData({ level = level }, "torghast")
|
|
_TorghastModel:Flush()
|
|
end
|
|
|
|
__SystemEvent__()
|
|
function UNIT_AURA(unit)
|
|
if unit == "player" then
|
|
_M:UpdateAnimaPowers()
|
|
_TorghastModel:Flush()
|
|
end
|
|
end
|
|
-- ========================================================================= --
|
|
function UpdateObjectives(self)
|
|
local stageName, stageDescription, numObjectives = GetStepInfo()
|
|
_TorghastModel:AddData({ stageName = stageName, stageDescription = stageDescription}, "torghast")
|
|
end
|
|
|
|
--- The death and the fantasm currency are provided by the Widget System and represented by
|
|
--- a ScenarioHeaderCurrenciesAndBackgroundWidgetVisualizationInfo
|
|
--- /dump C_UIWidgetManager.GetStatusBarWidgetVisualizationInfo(2319)
|
|
--- in Torghast for more information
|
|
function UpdateDeathAndFantasmCurrency(self)
|
|
-- local widget = GetWidgetVisualizationInfo(TORGHAST_WIDGET_ID)
|
|
-- GetScenarioHeaderCurrenciesAndBackgroundWidgetVisualizationInfo
|
|
local info = GetScenarioWidgetInfo(TORGHAST_WIDGET_ID)
|
|
|
|
if info then
|
|
local data = {}
|
|
-- The first currency is the remaining death
|
|
local deathCurrency = info.currencies[1]
|
|
data.remainingDeath = tonumber(deathCurrency.text)
|
|
data.deathTooltip = deathCurrency.tooltip
|
|
|
|
-- The second currency is fantasm
|
|
local fanstasmCurrency = info.currencies[2]
|
|
data.fanstasm = tonumber(fanstasmCurrency.text)
|
|
data.fanstasmTooltip = fanstasmCurrency.tooltip
|
|
|
|
-- The level text (is 100% correct)
|
|
local levelText = info.headerText
|
|
data.levelText = levelText
|
|
|
|
_TorghastModel:AddData(data, "torghast")
|
|
end
|
|
end
|
|
|
|
--- The timer information is provided by the Widget system and represented by
|
|
--- a GetStatusBarWidgetVisualizationInfo
|
|
--- /dump C_UIWidgetManager.GetStatusBarWidgetVisualizationInfo(2321)
|
|
--- in Torghast for more information
|
|
function UpdateTarragrueTimer(self)
|
|
-- local info = C_UIWidgetManager.GetStatusBarWidgetVisualizationInfo(TORGHAST_TARRAGRUE_WIDGET_ID)
|
|
local info = GetStatusBarWidgetInfo(TORGHAST_TARRAGRUE_WIDGET_ID)
|
|
local shownState = info.shownState
|
|
|
|
-- If the widget is shown, update the data
|
|
if shownState == 1 then
|
|
local data = {}
|
|
data.barMin = info.barMin
|
|
data.barValue = info.barValue
|
|
data.barMax = info.barMax
|
|
|
|
-- text = "Tarragrue arrives in:"
|
|
data.text = info.text
|
|
-- tooltip = "Get to the exist quickly!"
|
|
data.tooltip = info.tooltip
|
|
|
|
-- overrideBarText = "Hurry"
|
|
-- This shows "Hurry" when the player has mouseover on the bar.
|
|
data.overrideBarText = info.overrideBarText
|
|
|
|
_TorghastModel:AddData(data, "torghast", "tarragrue")
|
|
else
|
|
_TorghastModel:RemoveData("torghast", "tarragrue")
|
|
end
|
|
end
|
|
|
|
function UpdateAnimaPowers(self)
|
|
local data = {}
|
|
local animaPowersData = {}
|
|
local numAnimaPowers = 0
|
|
for i = 1, MAX_BUFF_MAX_DISPLAY do
|
|
local _, icon, count, _, _, _, _, _, _, spellID = UnitAura("player", i, "MAW");
|
|
if icon then
|
|
if count == 0 then
|
|
count = 1
|
|
end
|
|
|
|
local rarity = GetAnimaPowerRarity(spellID)
|
|
animaPowersData[spellID] = { icon = icon, spellID = spellID, count = count, rarity = rarity, slot = i }
|
|
|
|
numAnimaPowers = numAnimaPowers + count
|
|
end
|
|
end
|
|
|
|
data.numAnimaPowers = numAnimaPowers
|
|
data.animaPowers = animaPowersData
|
|
|
|
_TorghastModel:AddData(data, "torghast")
|
|
end
|
|
|
|
function UpdateLevel(self)
|
|
_TorghastModel:AddData({ level = GetJailersTowerLevel() }, "torghast")
|
|
end
|
|
-- ========================================================================= --
|
|
-- Debug Utils Tools
|
|
-- ========================================================================= --
|
|
if ViragDevTool_AddData then
|
|
ViragDevTool_AddData(_TorghastModel, "SLT Torghast Model")
|
|
end
|