ESO Lua File v100010

ingame/tutorial/hudinfotutorial.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
local AUTO_CLOSE_MS = 15 * 1000
ZO_HudInfoTutorial = ZO_TutorialHandlerBase:Subclass()
function ZO_HudInfoTutorial:Initialize(parent)
    self.tutorial = CreateControlFromVirtual(parent:GetName(), parent, "ZO_HudInfoBoxTutorialTip", "HudInfoTip")
    self.tutorialAnimation = ANIMATION_MANAGER:CreateTimelineFromVirtual("HudInfoBoxTutorialAnimation", self.tutorial)
    self.tutorialAnimation:SetHandler("OnStop", function(timeline) 
        if not timeline:IsPlayingBackward() then
            if #self.queue > 0 then
                local nextTutorialIndex = table.remove(self.queue, 1)
                self:DisplayTutorial(nextTutorialIndex)
            end
        end
    end)
    EVENT_MANAGER:RegisterForUpdate(self.tutorial:GetName() .. "OnUpdate", 0, function() self:OnUpdate() end)
    self:ClearAll()
    ZO_Keybindings_RegisterLabelForBindingUpdate(self.tutorial.helpKey, "TOGGLE_HELP")
end
function ZO_HudInfoTutorial:GetTutorialType()
    return TUTORIAL_TYPE_HUD_INFO_BOX
end
local BASE_TUTORIAL_HEIGHT = 170
function ZO_HudInfoTutorial:DisplayTutorial(tutorialIndex)
    local title, description = GetTutorialInfo(tutorialIndex)
    local helpCategoryIndex, helpIndex = GetTutorialLinkedHelpInfo(tutorialIndex)
    local hasHelp = helpCategoryIndex ~= nil and helpIndex ~= nil
    self.tutorial.title:SetText(title)
    self.tutorial.description:SetText(description)
    local textHeight = self.tutorial.description:GetTextHeight()
    if hasHelp then
        textHeight = textHeight + self.tutorial.helpLabel:GetHeight()
    end
    self.tutorial.helpLabel:SetHidden(not hasHelp)
    self.tutorial.helpKey:SetHidden(not hasHelp)
    self.tutorial:SetHeight(BASE_TUTORIAL_HEIGHT + textHeight)
    self.tutorialAnimation:PlayBackward()
    self.currentlyDisplayedTutorialTimeLeft = AUTO_CLOSE_MS
    PlaySound(SOUNDS.TUTORIAL_INFO_SHOWN)
end
function ZO_HudInfoTutorial:RemoveTutorial(tutorialIndex)
    if self:GetCurrentlyDisplayedTutorialIndex() == tutorialIndex then
        SetTutorialSeen(tutorialIndex)
        self.currentlyDisplayedTutorialTimeLeft = nil
        self.tutorialAnimation:PlayForward()
    else
        self:RemoveFromQueue(self.queue, queuedTutorialIndex)
    end
end
function ZO_HudInfoTutorial:SetHidden(hide)
    self.tutorial:SetHidden(hide)
end
function ZO_HudInfoTutorial:OnUpdate()
    local now = GetFrameTimeMilliseconds()
    local delta = now - (self.lastUpdate or now)
    if self:GetCurrentlyDisplayedTutorialIndex() and not self.tutorial:IsHidden() then
        self.currentlyDisplayedTutorialTimeLeft = self.currentlyDisplayedTutorialTimeLeft - delta
        if self.currentlyDisplayedTutorialTimeLeft < 0 then
        end
    end
    self.lastUpdate = now
end
function ZO_HudInfoTutorial:ClearAll()
    self.currentlyDisplayedTutorialTimeLeft = nil
    self.tutorialAnimation:PlayForward()
    self.queue = {}
end
function ZO_HudInfoTutorial:ShowHelp()
        local helpCategoryIndex, helpIndex = GetTutorialLinkedHelpInfo(self:GetCurrentlyDisplayedTutorialIndex())
        if helpCategoryIndex and helpIndex then
            MAIN_MENU:ShowScene("helpTutorials")
            HELP:SelectHelp(helpCategoryIndex, helpIndex)
            return true
        end
    end
end