ESO Lua File v100010

libraries/globals/globals.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
--[[ A Generally Accessible place for global callback registration and dispersal ]]--
CALLBACK_MANAGER = ZO_CallbackObject:New()
function NormalizePointToControl(x, y, control)
    local left, top, right, bottom = control:GetScreenRect()
    local width, height = right - left, bottom - top
    
    if(width == 0) then width = 0.001 end
    if(height == 0) then height = 0.001 end
    
    return (x - left) / width, (y - top) / height
end
    local mouseX, mouseY = GetUIMousePosition()
    return NormalizePointToControl(mouseX, mouseY, control)
end
function NormalizeUICanvasPoint(x, y)
    local width, height = GuiRoot:GetDimensions()
    return x / width, y / height
end
local function OnAddOnLoaded(event, name)
    if(name == "ZO_Common") then
        EVENT_MANAGER:UnregisterForEvent("Globals_Common", EVENT_ADD_ON_LOADED)
    end
end
EVENT_MANAGER:RegisterForEvent("Globals_Common", EVENT_ADD_ON_LOADED, OnAddOnLoaded)
local g_ignoreMouseDownEditFocusLoss = false
    g_ignoreMouseDownEditFocusLoss = true
end
local function OnGlobalMouseDown(event, button)
    if(g_ignoreMouseDownEditFocusLoss) then
        g_ignoreMouseDownEditFocusLoss = false
        return
    end
    --If an edit control is focused and the player clicks off of it, then clear the focus
    if(button == 1) then
        local focusEdit = WINDOW_MANAGER:GetFocusControl()
        if(focusEdit) then
            if(not MouseIsOver(focusEdit)) then
                focusEdit:LoseFocus()
            end
        end
    end
end
EVENT_MANAGER:RegisterForEvent("Globals_Common", EVENT_GLOBAL_MOUSE_DOWN, OnGlobalMouseDown)
local function OnPlayerDeactivated()
end
EVENT_MANAGER:RegisterForEvent("Globals_Common", EVENT_PLAYER_DEACTIVATED, OnPlayerDeactivated)
function SetupEditControlForNameValidation(editControl, maxNameLength)
    editControl:SetMaxInputChars(maxNameLength or CHARNAME_MAX_LENGTH)
    editControl:AddValidCharacter('\'')
    editControl:AddValidCharacter('-')
    editControl:AddValidCharacter(' ')
    editControl:SetCopyEnabled(false)
    editControl:SetPasteEnabled(false)
end
--[[
Background Image Resizing Utility
--]]
local BG_ASPECT_RATIO = 1680 / 1050
local function GetAppropriateDimenions()
    local width, height = GuiRoot:GetDimensions()
    local windowAspectRatio = width / height
    -- If you want to show the whole image no matter what the resolution is, but letter box it, just change > to <
    if(windowAspectRatio > BG_ASPECT_RATIO) then
        height = width / BG_ASPECT_RATIO
    else
        width = height * BG_ASPECT_RATIO        
    end
    return width, height
end
    local width, height = GetAppropriateDimenions()
    control:SetDimensions(width, height)
end
    local function DoLayout()
        local screenHeight = GuiRoot:GetHeight()
        local controlHeight = control:GetHeight()
        local offsetY = (screenHeight - controlHeight) / 2
        control:ClearAnchors()
        control:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, 245, offsetY)
    end
    control:RegisterForEvent(EVENT_SCREEN_RESIZED, DoLayout)
    DoLayout()
end