ESO Lua File v100010

ingame/tutorial/tutorial.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
TUTORIAL_SYSTEM = nil
local function AreTutorialsEnabled()
    return GetSetting_Bool(SETTING_TYPE_TUTORIAL, TUTORIAL_ENABLED_SETTING_ID)
end
ZO_Tutorials = ZO_Object:Subclass()
function ZO_Tutorials:New(...)
    local tutorial = ZO_Object.New(self)
    tutorial:Initialize(...)
    return tutorial
end
function ZO_Tutorials:Initialize(control)
    self.control = control
    self.tutorialHandlers = {}
    control:RegisterForEvent(EVENT_DISPLAY_TUTORIAL, function(eventCode, ...) self:OnDisplayTutorial(...) end)
    control:RegisterForEvent(EVENT_REMOVE_TUTORIAL, function(eventCode, ...) self:OnRemoveTutorial(...) end)
    control:RegisterForEvent(EVENT_TUTORIAL_SYSTEM_ENABLED_STATE_CHANGED, function(eventCode, enabled) self:OnTutorialEnabledStateChanged(enabled) end)
    do
        local triggerHandlers = ZO_Tutorial_GetTriggerHandlers()
        local function OnTriggeredEvent(eventCode, ...)
            local tutorialTypeToTrigger = triggerHandlers[eventCode](...)
            if tutorialTypeToTrigger then
                TriggerTutorial(tutorialTypeToTrigger)
            end
        end
        for event in pairs(triggerHandlers) do
            control:RegisterForEvent(event, OnTriggeredEvent)
        end
    end
    self:AddTutorialHandler(ZO_BriefHudTutorial:New(control))
    self:AddTutorialHandler(ZO_HudInfoTutorial:New(control))
    self:AddTutorialHandler(ZO_UiInfoBoxTutorial:New(control))
end
function ZO_Tutorials:AddTutorialHandler(handler)
    self.tutorialHandlers[handler:GetTutorialType()] = handler
end
function ZO_Tutorials:SuppressTutorialType(tutorialType, suppress, reason)
    self.tutorialHandlers[tutorialType]:SuppressTutorials(suppress, reason)
end
function ZO_Tutorials:OnTutorialEnabledStateChanged(enabled)
    if not enabled then
        for type, handler in pairs(self.tutorialHandlers) do
            handler:ClearAll()
        end
    end
end
function ZO_Tutorials:ForceRemoveAll()
    for type, handler in pairs(self.tutorialHandlers) do
        if handler:GetCurrentlyDisplayedTutorialIndex() then
        end
    end
end
function ZO_Tutorials:OnDisplayTutorial(tutorialIndex)
    local tutorialType = GetTutorialType(tutorialIndex)
    if self.tutorialHandlers[tutorialType] then
        local _, _, priority = GetTutorialInfo(tutorialIndex)
        self.tutorialHandlers[tutorialType]:OnDisplayTutorial(tutorialIndex, priority)
    end
end
function ZO_Tutorials:OnRemoveTutorial(tutorialIndex)
    local tutorialType = GetTutorialType(tutorialIndex)
    if self.tutorialHandlers[tutorialType] then
        self.tutorialHandlers[tutorialType]:OnRemoveTutorial(tutorialIndex)
    end
end
function ZO_Tutorials:ShowHelp()
    for type, handler in pairs(self.tutorialHandlers) do
        if handler:ShowHelp() then
            return true
        end
    end
    return false
end
    TUTORIAL_SYSTEM = ZO_Tutorials:New(control)
end