Back to Home

ESO Lua File v101041

ingame/leveluprewards/keyboard/leveluprewardsupcoming_keyboard.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
ZO_UPCOMING_LEVEL_UP_REWARDS_KEYBOARD_REWARD_ROW_HEIGHT = 40
ZO_UPCOMING_LEVEL_UP_REWARDS_KEYBOARD_REWARD_CONTAINER_SPACING = 20
ZO_UPCOMING_LEVEL_UP_REWARDS_KEYBOARD_SHOW_DURATION_MS = 1250
--The static part of the window (everything not including reward entries)
local WINDOW_HEIGHT_WITHOUT_DYNAMIC_CONTROLS = 380
ZO_LevelUpRewardsUpcoming_Keyboard = ZO_LevelUpRewardsUpcoming_Base:Subclass()
function ZO_LevelUpRewardsUpcoming_Keyboard:New(...)
    return ZO_LevelUpRewardsUpcoming_Base.New(self, ...)
end
function ZO_LevelUpRewardsUpcoming_Keyboard:Initialize(control)
    ZO_LevelUpRewardsUpcoming_Base.Initialize(self, control, "ZO_LevelUpRewards_UpcomingRewardRow")
    self.rewardContainerToLayout = {}
    self.fadeInContentsAnimationTimeline = ANIMATION_MANAGER:CreateTimelineFromVirtual("ZO_UpcomingLevelUpRewardsFadeInContentsAnimation", self.scrollContainer)
    ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS_FRAGMENT = ZO_FadeSceneFragment:New(control)
    ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS_FRAGMENT:RegisterCallback("StateChange",
                                                function(oldState, newState)
                                                    if newState == SCENE_FRAGMENT_SHOWING then
                                                        self:OnShowing()
                                                    elseif newState == SCENE_FRAGMENT_HIDDEN then
                                                        self:OnHidden()
                                                    end
                                                end)
end
function ZO_LevelUpRewardsUpcoming_Keyboard:OnShowing()
end
function ZO_LevelUpRewardsUpcoming_Keyboard:OnHidden()
    self.fadeInContentsAnimationTimeline:Stop()
end
function ZO_LevelUpRewardsUpcoming_Keyboard:PlayFadeInContentsAnimation()
    self.fadeInContentsAnimationTimeline:PlayFromStart()
end
function ZO_LevelUpRewardsUpcoming_Keyboard:LayoutReward(rewardControl, data)
    local name = ZO_LEVEL_UP_REWARDS_MANAGER:GetUpcomingRewardNameFromRewardData(data)
    rewardControl.nameControl:SetText(name)
    local rewardType = data:GetRewardType()
    if rewardType then
        local r, g, b = GetInterfaceColor(INTERFACE_COLOR_TYPE_ITEM_QUALITY_COLORS, data:GetItemDisplayQuality())
        rewardControl.nameControl:SetColor(r, g, b, 1)
    else
        local r, g, b = ZO_NORMAL_TEXT:UnpackRGB()
        rewardControl.nameControl:SetColor(r, g, b, 1)
    end
    local icon = data:GetKeyboardLootIcon()
    if icon then
        rewardControl.iconControl:SetTexture(icon)
        rewardControl.iconControl:SetHidden(false)
    else
        rewardControl.iconControl:SetHidden(true)
    end
    rewardControl.data = data
end
function ZO_LevelUpRewardsUpcoming_Keyboard:LayoutRewardsForLevel(level, levelRewards, rewardContainer)
    ZO_LevelUpRewardsUpcoming_Base.LayoutRewardsForLevel(self, level, levelRewards, rewardContainer)
    local layout = self.rewardContainerToLayout[rewardContainer]
    if not layout then
        layout = ZO_LevelUpRewardsLayout_Keyboard:New()
        self.rewardContainerToLayout[rewardContainer] = layout
    end
    local ANCHOR_TO_PARENT = nil
    layout:ResetAnchoring(ANCHOR_TO_PARENT)
    layout:StartSection()
    local attributePoints = GetAttributePointsAwardedForLevel(level)
    if attributePoints > 0 then
        local rewardControl = self:AcquireRewardControl()
        rewardControl:SetParent(rewardContainer.rewardsContainer)
        local attributeData = ZO_LEVEL_UP_REWARDS_MANAGER:GetAttributePointEntryInfo(attributePoints)
        self:LayoutReward(rewardControl, attributeData)
        layout:Anchor(rewardControl)
    end
    local skillPoints = GetSkillPointsAwardedForLevel(level)
    if skillPoints > 0 then
        local rewardControl = self:AcquireRewardControl()
        rewardControl:SetParent(rewardContainer.rewardsContainer)
        local skillPointData = ZO_LEVEL_UP_REWARDS_MANAGER:GetSkillPointEntryInfo(skillPoints)
        self:LayoutReward(rewardControl, skillPointData)
        layout:Anchor(rewardControl)
    end
    for i, rewardData in ipairs(levelRewards) do
        if rewardData:IsValidReward() then
            local rewardControl = self:AcquireRewardControl()
            rewardControl:SetParent(rewardContainer.rewardsContainer)
            self:LayoutReward(rewardControl, rewardData)
            layout:Anchor(rewardControl)
        end
    end
end
function ZO_LevelUpRewardsUpcoming_Keyboard:LayoutUpcomingRewards()
    ZO_LevelUpRewardsUpcoming_Base.LayoutUpcomingRewards(self)
    local totalDynamicHeight = 0
    for rewardContainer, layout in pairs(self.rewardContainerToLayout) do
        if not rewardContainer:IsControlHidden() then
            totalDynamicHeight = totalDynamicHeight + layout:GetTotalHeight()
        end
    end
    local staticHeight = WINDOW_HEIGHT_WITHOUT_DYNAMIC_CONTROLS
    if self.nextMilestoneContainer:IsControlHidden() then
        staticHeight = staticHeight - self.nextMilestoneContainer.frameTexture:GetHeight() - ZO_UPCOMING_LEVEL_UP_REWARDS_KEYBOARD_REWARD_CONTAINER_SPACING - ZO_LEVEL_UP_REWARDS_ART_REWARDS_SPACING
    end
    self.control:SetHeight(zo_min(staticHeight + totalDynamicHeight, ZO_LEVEL_UP_REWARDS_KEYBOARD_MAX_SCREEN_HEIGHT))
end
function ZO_LevelUpRewardsUpcoming_Keyboard:Show(fadeInContents)
    if not self:IsShowing() then
        SCENE_MANAGER:AddFragment(ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS_FRAGMENT)
        if fadeInContents then
            self:PlayFadeInContentsAnimation()
        end
    end
end
function ZO_LevelUpRewardsUpcoming_Keyboard:Hide()
    if self:IsShowing() then
        SCENE_MANAGER:RemoveFragment(ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS_FRAGMENT)
    end
end
function ZO_LevelUpRewardsUpcoming_Keyboard:IsShowing()
    return ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS_FRAGMENT:IsShowing()
end
--
--[[ XML Handlers ]]--
--
    ZO_KEYBOARD_UPCOMING_LEVEL_UP_REWARDS = ZO_LevelUpRewardsUpcoming_Keyboard:New(control)
end