Back to Home

ESO Lua File v100035

ingame/playeremote/playeremotequickslot.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
local ZO_PlayerEmoteQuickslot = ZO_InteractiveRadialMenuController:Subclass()
function ZO_PlayerEmoteQuickslot:New(...)
    return ZO_InteractiveRadialMenuController.New(self, ...)
end
function ZO_PlayerEmoteQuickslot:Initialize(control, entryTemplate, animationTemplate, entryAnimationTemplate)
    ZO_InteractiveRadialMenuController.Initialize(self, control, entryTemplate, animationTemplate, entryAnimationTemplate)
end
-- functions overridden from base
function ZO_PlayerEmoteQuickslot:PrepareForInteraction()
    if not SCENE_MANAGER:IsShowing("hud") then
        return false
    end
    return true
end
function ZO_PlayerEmoteQuickslot:SetupEntryControl(control, data)
    if data then
        control.label:SetText(data.name)
        if data.selected then
            if control.glow then
                 control.glow:SetAlpha(1)
            end
            control.animation:GetLastAnimation():SetAnimatedControl(nil)
        else
            if control.glow then
                 control.glow:SetAlpha(0)
            end
            control.animation:GetLastAnimation():SetAnimatedControl(control.glow)
        end
        if IsInGamepadPreferredMode() then
              control.label:SetFont("ZoFontGamepad54")
         else
              control.label:SetFont("ZoInteractionPrompt")
         end
    end
end
local EMPTY_QUICKSLOT_TEXTURE = "EsoUI/Art/Quickslots/quickslot_emptySlot.dds"
local EMPTY_QUICKSLOT_STRING = GetString(SI_QUICKSLOTS_EMPTY)
function ZO_PlayerEmoteQuickslot:PopulateMenu()
    local slottedEmotes = PLAYER_EMOTE_MANAGER:GetSlottedEmotes()
    for i, emote in ipairs(slottedEmotes) do
        local type = emote.type
        local id = emote.id
        
        local found = false
        local name, icon, callback
        if type == ACTION_TYPE_EMOTE then
            local emoteInfo = PLAYER_EMOTE_MANAGER:GetEmoteItemInfo(id)
            found = emoteInfo ~= nil
            if found then
                    if emoteInfo.isOverriddenByPersonality then
                         icon = GAMEPAD_PLAYER_EMOTE:GetPersonalityEmoteIconForCategory(emoteInfo.emoteCategory)                    
                         name = ZO_PERSONALITY_EMOTES_COLOR:Colorize(emoteInfo.displayName)
                    else
                         icon = GAMEPAD_PLAYER_EMOTE:GetEmoteIconForCategory(emoteInfo.emoteCategory)
                         name = emoteInfo.displayName
                    end
                callback = function() PlayEmoteByIndex(emoteInfo.emoteIndex) end
            end
        elseif type == ACTION_TYPE_QUICK_CHAT then
            found = QUICK_CHAT_MANAGER:HasQuickChat(id)
            if found then
                icon = QUICK_CHAT_MANAGER:GetQuickChatIcon()
                name = QUICK_CHAT_MANAGER:GetFormattedQuickChatName(id)
                callback = function() QUICK_CHAT_MANAGER:PlayQuickChat(id) end
            end
        end
        
        if found then
            local data = {name = name}
            self.menu:AddEntry(name, icon, icon, callback, data)
        else
            self.menu:AddEntry(EMPTY_QUICKSLOT_STRING, EMPTY_QUICKSLOT_TEXTURE, EMPTY_QUICKSLOT_TEXTURE, nil, {name=EMPTY_QUICKSLOT_STRING})
        end
    end
end
-- Global Functions
    self.label = self:GetNamedChild("Label")
end
    PLAYER_EMOTE_QUICKSLOT = ZO_PlayerEmoteQuickslot:New(control, "ZO_PlayerEmoteRadialMenuEntryTemplate", nil, "SelectableItemRadialMenuEntryAnimation")
end