Back to Home

ESO Lua File v101044

ingame/unitattributevisualizer/modules/unitattributevisualizermodulebase.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
ZO_UnitAttributeVisualizerModuleBase = ZO_Object:Subclass()
local g_numModulesCreated = 0
function ZO_UnitAttributeVisualizerModuleBase:New(...)
    local module = ZO_Object.New(self)
    g_numModulesCreated = g_numModulesCreated + 1
    module.moduleId = g_numModulesCreated
    module:Initialize(...)
    return module
end
function ZO_UnitAttributeVisualizerModuleBase:GetModuleId()
    return self.moduleId
end
function ZO_UnitAttributeVisualizerModuleBase:SetOwner(owner)
    self.owner = owner
end
function ZO_UnitAttributeVisualizerModuleBase:GetOwner()
    return self.owner
end
function ZO_UnitAttributeVisualizerModuleBase:GetUnitTag()
    return self.owner and self.owner:GetUnitTag() or nil
end
function ZO_UnitAttributeVisualizerModuleBase:GetMostRecentUpdate(visualType, stat, attribute, powerType)
    if self.updateRecencyInfo then
        local visualTypeInfo = self.updateRecencyInfo[visualType]
        if visualTypeInfo then
            local statInfo = visualTypeInfo[stat]
            if statInfo then
                local attributeInfo = statInfo[attribute]
                if attributeInfo then
                    local existingSequenceId = attributeInfo[powerType]
                    return existingSequenceId
                end
            end
        end    
    end
end
function ZO_UnitAttributeVisualizerModuleBase:GetInitialValueAndMarkMostRecent(visualType, stat, attribute, powerType)
    local value, maxValue, sequenceId = GetUnitAttributeVisualizerEffectInfo(self:GetUnitTag(), visualType, stat, attribute, powerType)
    if value then
        --if there is an active UAV of this type return its info and mark that we updated to that sequenceId so we can ignore any older events
        self:SetMostRecentUpdate(visualType, stat, attribute, powerType, sequenceId)
        return value, maxValue
    else
        --otherwise clear out the UAV sequenceId since there is no active effect
        self:SetMostRecentUpdate(visualType, stat, attribute, powerType, nil)
        return 0, 0
    end
end
function ZO_UnitAttributeVisualizerModuleBase:SetMostRecentUpdate(visualType, stat, attribute, powerType, sequenceId)
    if not self.updateRecencyInfo then
        self.updateRecencyInfo = {}
    end
    local visualTypeInfo = self.updateRecencyInfo[visualType]
    if not visualTypeInfo then
        visualTypeInfo = {}
        self.updateRecencyInfo[visualType] = visualTypeInfo
    end
    local statInfo = visualTypeInfo[stat]
    if not statInfo then
        statInfo = {}
        visualTypeInfo[stat] = statInfo
    end
    local attributeInfo = statInfo[attribute]
    if not attributeInfo then
        attributeInfo = {}
        statInfo[attribute] = attributeInfo
    end
    attributeInfo[powerType] = sequenceId
end
function ZO_UnitAttributeVisualizerModuleBase:Initialize(...)
    -- Intended to be overridden
end
function ZO_UnitAttributeVisualizerModuleBase:IsUnitVisualRelevant(visualType, stat, attribute, powerType)
    -- Intended to be overridden
    -- Should return true if this module cares about this particular combination of types
    return false
end
function ZO_UnitAttributeVisualizerModuleBase:OnAdded(healthBarControl, magickaBarControl, staminaBarControl)
    -- Intended to be overridden
    -- Called when this module is added to a visualizer
end
function ZO_UnitAttributeVisualizerModuleBase:OnUnitAttributeVisualAdded(visualType, stat, attribute, powerType, value, maxValue)
    -- Intended to be overridden
    -- Called when a unit visual is added and this particular combination of types passes the IsUnitVisualRelevant filter
end
function ZO_UnitAttributeVisualizerModuleBase:OnUnitAttributeVisualUpdated(visualType, stat, attribute, powerType, oldValue, newValue, oldMaxValue, newMaxValue)
    -- Intended to be overridden
    -- Called when a unit visual is updated and this particular combination of types passes the IsUnitVisualRelevant filter
end
function ZO_UnitAttributeVisualizerModuleBase:OnUnitAttributeVisualRemoved(visualType, stat, attribute, powerType, value, maxValue)
    -- Intended to be overridden
    -- Called when a unit visual is removed and this particular combination of types passes the IsUnitVisualRelevant filter
end
function ZO_UnitAttributeVisualizerModuleBase:OnUnitChanged()
    -- Intended to be overridden
    -- Called when the unit the unit tag points to has changed
end
function ZO_UnitAttributeVisualizerModuleBase:ApplyPlatformStyle()
    -- Intended to be overridden
    -- Called when gamepad preferred mode changes
end
function ZO_UnitAttributeVisualizerModuleBase:DoAlphaUpdate(isNearby)
    -- Intended to be overridden
    -- Called when Unit Frames update their alpha values due to the unit entering or leaving "nearby" range
end