ESO Lua File v100010

ingame/map/gamepad/worldmapkey_gamepad.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
local SYMBOL_PARAMS = {
    NUM_SYMBOLS_PER_ROW = 3,
    SYMBOL_OFFSET_X = 50,
    SYMBOL_OFFSET_Y = 50,
    SYMBOL_SPACING_X = 120,
    SYMBOL_SPACING_Y = 118,
}
local WorldMapKey_Gamepad = ZO_WorldMapKey_Shared:Subclass()
function WorldMapKey_Gamepad:New(...)
    local object = ZO_WorldMapKey_Shared.New(self, ...)
    return object
end
function WorldMapKey_Gamepad:Initialize(control)
    ZO_GamepadGrid.Initialize(self)
    ZO_WorldMapKey_Shared.Initialize(self, control)
    self.symbolParams = SYMBOL_PARAMS
    local mainControl = control:GetNamedChild("Main")
    self.container = mainControl:GetNamedChild("Container")
    self.noKeyLabel = mainControl:GetNamedChild("NoKey")
    self.symbolPool = ZO_ControlPool:New("ZO_WorldMapKeySymbol_Gamepad", self.container, "Symbol")
    GAMEPAD_WORLD_MAP_KEY_FRAGMENT = ZO_FadeSceneFragment:New(control)
    GAMEPAD_WORLD_MAP_KEY_FRAGMENT:RegisterCallback("StateChange",  function(oldState, newState)
        if(newState == SCENE_SHOWING) then
            self:RefreshKey()
        end
    end)
    self.fragment = GAMEPAD_WORLD_MAP_KEY_FRAGMENT
    self.scrollTargetPos = 0
end
function WorldMapKey_Gamepad:RefreshKey()
    if(not self.fragment:IsShowing()) then
        return
    end
    if(self.dirty) then
        self.dirty = false
        self.symbolPool:ReleaseAllObjects()
        local numKeySections = GetNumMapKeySections()
        self.noKeyLabel:SetHidden(numKeySections > 0)
        self.symbols = {}
        local params = self.symbolParams
        local symbolCol = 1
        local symbolRow = 1
        for sectionIndex = 1, GetNumMapKeySections() do
            for symbolIndex = 1, GetNumMapKeySectionSymbols(sectionIndex) do
                local symbol = self.symbolPool:AcquireObject()
                symbol:SetDimensions(params.SYMBOL_SIZE, params.SYMBOL_SIZE)
                local name, icon, tooltip = GetMapKeySectionSymbolInfo(sectionIndex, symbolIndex)
                symbol:GetNamedChild("Symbol"):SetTexture(icon)
                symbol:GetNamedChild("Name"):SetText(name)
                symbol.tooltip = tooltip
                local offsetX = params.SYMBOL_OFFSET_X + (params.SYMBOL_SPACING_X) * (symbolCol - 1)
                local offsetY = params.SYMBOL_OFFSET_Y + (params.SYMBOL_SPACING_Y) * (symbolRow - 1)
                symbol:SetAnchor(CENTER, self.container, TOPLEFT, offsetX, offsetY)
                if(symbolCol == 1) then
                    symbolList = {}
                    self.symbols[#self.symbols + 1] = symbolList
                end
                symbolList[#symbolList + 1] = symbol
                symbolCol = symbolCol + 1
                if symbolCol == params.NUM_SYMBOLS_PER_ROW + 1 then
                    symbolRow = symbolRow + 1
                    symbolCol = 1
                end
            end
        end
    end
end
--Global XML
    GAMEPAD_WORLD_MAP_KEY = WorldMapKey_Gamepad:New(self)
end