ESO Lua File v100010

ingame/instancekickwarning/instancekickwarning.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
112
113
-- ZO_InstanceKickWarning Base Object
local ZO_InstanceKickWarning = ZO_Object:Subclass()
function ZO_InstanceKickWarning:New(control)
    local instanceKickWarning = ZO_Object.New(self)
    instanceKickWarning:Initialize(control)
    return instanceKickWarning
end
function ZO_InstanceKickWarning:Initialize(control)
    self.control = control
    local function OnInstanceKickTimeUpdate(event, timeRemaining, totalTime)
        if not timeRemaining then
            timeRemaining, totalTime = GetInstanceKickTime()
        elseif not totalTime then
            totalTime = timeRemaining
        end
        self:OnInstanceKickTimeUpdate(timeRemaining, totalTime)
    end
    local function OnGroupInviteUpdate()
        self:UpdateVisibility()
    end
    self.control:RegisterForEvent(EVENT_PLAYER_ACTIVATED, OnInstanceKickTimeUpdate)
    self.control:RegisterForEvent(EVENT_INSTANCE_KICK_TIME_UPDATE, OnInstanceKickTimeUpdate)
    self.control:RegisterForEvent(EVENT_GROUP_INVITE_RECEIVED, OnGroupInviteUpdate)
    self.control:RegisterForEvent(EVENT_GROUP_INVITE_REMOVED, OnGroupInviteUpdate)
    if IsPlayerActivated() then
        OnInstanceKickTimeUpdate()
    end
    local container = self.control:GetNamedChild("Container")
    self.timerCooldown = container:GetNamedChild("Timer")
    self.timerCooldown:SetNumWarningSounds(5)
end
function ZO_InstanceKickWarning:OnInstanceKickTimeUpdate(timeRemaining, totalTime)
    if timeRemaining and totalTime and timeRemaining > 0 and totalTime > 0 then
        self.timerCooldown:Start(timeRemaining)
        self.kickPending = true
        self:UpdateVisibility()
        
        -- give an alert text to explain why being removed from the instance
        if(IsUnitGrouped("player")) then
            ZO_Alert(UI_ALERT_CATEGORY_ALERT, SOUNDS.GENERAL_ALERT_ERROR, GetString(SI_INSTANCE_KICK_WARNING_GROUPED))
        else
            ZO_Alert(UI_ALERT_CATEGORY_ALERT, SOUNDS.GENERAL_ALERT_ERROR, GetString(SI_INSTANCE_KICK_WARNING_UNGROUPED))
        end
    else
        self.timerCooldown:Stop()
        self.kickPending = false
        self:UpdateVisibility()
    end
end
function ZO_InstanceKickWarning:SetHidden(hidden)
    self.control:SetHidden(hidden)
end
-- ZO_InstanceKickWarning_Alive...Used when the player is alive (in shared info area)
local ZO_InstanceKickWarning_Alive = ZO_InstanceKickWarning:Subclass()
function ZO_InstanceKickWarning_Alive:Initialize(control)
    ZO_InstanceKickWarning.Initialize(self, control)
    SHARED_INFORMATION_AREA:AddInstanceKick(self)
end
function ZO_InstanceKickWarning_Alive:UpdateVisibility()
    local groupInviterName = GetGroupInviteInfo()
    local hasInvitePending = groupInviterName ~= ""
    local hideKickWarning = hasInvitePending or not self.kickPending
    SHARED_INFORMATION_AREA:SetHidden(self, hideKickWarning)
end
-- ZO_InstanceKickWarning_Dead...Used when the player is dead
local ZO_InstanceKickWarning_Dead = ZO_InstanceKickWarning:Subclass()
function ZO_InstanceKickWarning_Dead:Initialize(control)
    ZO_InstanceKickWarning.Initialize(self, control)
    self.hiddenReasons = ZO_HiddenReasons:New()
end
function ZO_InstanceKickWarning_Dead:UpdateVisibility()
    self:SetHiddenForReason("kickPending", not self.kickPending)
end
function ZO_InstanceKickWarning_Dead:RefreshVisible()
    self:SetHidden(self.hiddenReasons:IsHidden())
end
function ZO_InstanceKickWarning_Dead:SetHiddenForReason(reason, hidden)
    if self.hiddenReasons:SetHiddenForReason(reason, hidden) then
        self:RefreshVisible()
    end
end
-- Global functions
    INSTANCE_KICK_WARNING_ALIVE = ZO_InstanceKickWarning_Alive:New(control)
end
    INSTANCE_KICK_WARNING_DEAD = ZO_InstanceKickWarning_Dead:New(control)
end