Details | Compare with Previous | View Log
Line No. | Rev | Author | Line |
---|---|---|---|
1 | 12 | Taonnor-14572 | --[[ |
2 | Taonnor-14572 | Addon: Taos Group Ultimate |
|
3 | Taonnor-14572 | Author: TProg Taonnor |
|
4 | Taonnor-14572 | Created by @Taonnor |
|
5 | Taonnor-14572 | ]]-- |
|
6 | Taonnor-14572 | ||
7 | Taonnor-14572 | --[[ |
|
8 | 37 | Taonnor-14572 | Local variables |
9 | 12 | Taonnor-14572 | ]]-- |
10 | 14 | Taonnor-14572 | local LOG_ACTIVE = false |
11 | 37 | Taonnor-14572 | |
12 | 12 | Taonnor-14572 | local SWIMLANES = 6 |
13 | 13 | Taonnor-14572 | local ROWS = 6 |
14 | 56 | Taonnor-14572 | local REFRESHRATE = 1000 -- ms; RegisterForUpdate is in miliseconds |
15 | 19 | Taonnor-14572 | local TIMEOUT = 4 -- s; GetTimeStamp() is in seconds |
16 | 12 | Taonnor-14572 | |
17 | 46 | Taonnor-14572 | local _logger = nil |
18 | Taonnor-14572 | local _control = nil |
|
19 | Taonnor-14572 | ||
20 | 12 | Taonnor-14572 | --[[ |
21 | 37 | Taonnor-14572 | Table TGU_SwimlaneList |
22 | 12 | Taonnor-14572 | ]]-- |
23 | 37 | Taonnor-14572 | TGU_SwimlaneList = {} |
24 | Taonnor-14572 | TGU_SwimlaneList.__index = TGU_SwimlaneList |
|
25 | 12 | Taonnor-14572 | |
26 | Taonnor-14572 | --[[ |
|
27 | 37 | Taonnor-14572 | Table Members |
28 | 12 | Taonnor-14572 | ]]-- |
29 | 37 | Taonnor-14572 | TGU_SwimlaneList.Name = "TGU-SwimlaneList" |
30 | Taonnor-14572 | TGU_SwimlaneList.IsMocked = false |
|
31 | Taonnor-14572 | TGU_SwimlaneList.Swimlanes = {} |
|
32 | 12 | Taonnor-14572 | |
33 | Taonnor-14572 | --[[ |
|
34 | Taonnor-14572 | Sets visibility of labels |
|
35 | Taonnor-14572 | ]]-- |
|
36 | 37 | Taonnor-14572 | function TGU_SwimlaneList.RefreshList() |
37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logTrace("TGU_SwimlaneList.RefreshList") end |
|
38 | 12 | Taonnor-14572 | |
39 | 19 | Taonnor-14572 | -- Check all swimlanes |
40 | 37 | Taonnor-14572 | for i,swimlane in ipairs(TGU_SwimlaneList.Swimlanes) do |
41 | Taonnor-14572 | TGU_SwimlaneList.ClearPlayersFromSwimlane(swimlane) |
|
42 | 14 | Taonnor-14572 | end |
43 | 12 | Taonnor-14572 | end |
44 | Taonnor-14572 | ||
45 | Taonnor-14572 | --[[ |
|
46 | 55 | Taonnor-14572 | Sorts swimlane |
47 | Taonnor-14572 | ]]-- |
|
48 | Taonnor-14572 | function TGU_SwimlaneList.SortSwimlane(swimlane) |
|
49 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logTrace("TGU_SwimlaneList.SortSwimlane") end |
|
50 | Taonnor-14572 | ||
51 | Taonnor-14572 | -- Comparer |
|
52 | Taonnor-14572 | function compare(playerLeft, playerRight) |
|
53 | 59 | Taonnor-14572 | if (playerLeft.RelativeUltimate == playerRight.RelativeUltimate) then |
54 | Taonnor-14572 | return playerLeft.PingTag < playerRight.PingTag |
|
55 | Taonnor-14572 | else |
|
56 | Taonnor-14572 | return playerLeft.RelativeUltimate > playerRight.RelativeUltimate |
|
57 | Taonnor-14572 | end |
|
58 | 55 | Taonnor-14572 | end |
59 | Taonnor-14572 | ||
60 | Taonnor-14572 | table.sort(swimlane.Players, compare) |
|
61 | Taonnor-14572 | ||
62 | Taonnor-14572 | -- Update sorted swimlane list |
|
63 | Taonnor-14572 | for i,swimlanePlayer in ipairs(swimlane.Players) do |
|
64 | 56 | Taonnor-14572 | TGU_SwimlaneList.UpdateListRow(swimlane.SwimlaneControl:GetNamedChild("Row" .. i), swimlanePlayer) |
65 | 55 | Taonnor-14572 | end |
66 | Taonnor-14572 | end |
|
67 | Taonnor-14572 | ||
68 | Taonnor-14572 | --[[ |
|
69 | 12 | Taonnor-14572 | Updates list row |
70 | Taonnor-14572 | ]]-- |
|
71 | 55 | Taonnor-14572 | function TGU_SwimlaneList.UpdateListRow(row, player) |
72 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
73 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.UpdateListRow") |
74 | 12 | Taonnor-14572 | end |
75 | Taonnor-14572 | ||
76 | 55 | Taonnor-14572 | local playerName = player.PlayerName |
77 | Taonnor-14572 | local nameLength = string.len(playerName) |
|
78 | Taonnor-14572 | ||
79 | Taonnor-14572 | if (nameLength > 10) then |
|
80 | Taonnor-14572 | playerName = string.sub(playerName, 0, 10) .. "..." |
|
81 | Taonnor-14572 | end |
|
82 | Taonnor-14572 | ||
83 | Taonnor-14572 | row:GetNamedChild("SenderNameValueLabel"):SetText(playerName) |
|
84 | Taonnor-14572 | row:GetNamedChild("RelativeUltimateStatusBar"):SetValue(player.RelativeUltimate) |
|
85 | Taonnor-14572 | ||
86 | Taonnor-14572 | if (player.IsPlayerDead) then |
|
87 | Taonnor-14572 | -- Dead Color |
|
88 | Taonnor-14572 | row:GetNamedChild("SenderNameValueLabel"):SetColor(0.5, 0.5, 0.5, 0.8) |
|
89 | Taonnor-14572 | row:GetNamedChild("RelativeUltimateStatusBar"):SetColor(0.8, 0.03, 0.03, 0.7) |
|
90 | Taonnor-14572 | elseif (player.RelativeUltimate == 100) then |
|
91 | Taonnor-14572 | -- Ready Color |
|
92 | Taonnor-14572 | row:GetNamedChild("SenderNameValueLabel"):SetColor(1, 1, 1, 1) |
|
93 | Taonnor-14572 | row:GetNamedChild("RelativeUltimateStatusBar"):SetColor(0.03, 0.7, 0.03, 0.7) |
|
94 | Taonnor-14572 | else |
|
95 | Taonnor-14572 | -- Inprogress Color |
|
96 | Taonnor-14572 | row:GetNamedChild("SenderNameValueLabel"):SetColor(1, 1, 1, 0.8) |
|
97 | Taonnor-14572 | row:GetNamedChild("RelativeUltimateStatusBar"):SetColor(0.03, 0.03, 0.7, 0.7) |
|
98 | Taonnor-14572 | end |
|
99 | Taonnor-14572 | ||
100 | 56 | Taonnor-14572 | if (row:IsHidden()) then |
101 | Taonnor-14572 | row:SetHidden(false) |
|
102 | Taonnor-14572 | end |
|
103 | 55 | Taonnor-14572 | end |
104 | Taonnor-14572 | ||
105 | Taonnor-14572 | --[[ |
|
106 | Taonnor-14572 | Updates list player |
|
107 | Taonnor-14572 | ]]-- |
|
108 | Taonnor-14572 | function TGU_SwimlaneList.UpdatePlayer(player) |
|
109 | Taonnor-14572 | if (LOG_ACTIVE) then |
|
110 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.UpdatePlayer") |
|
111 | Taonnor-14572 | end |
|
112 | Taonnor-14572 | ||
113 | 12 | Taonnor-14572 | if (player) then |
114 | 37 | Taonnor-14572 | local swimLane = TGU_SwimlaneList.GetSwimLane(player.UltimateGroup.GroupAbilityId) |
115 | 11 | Taonnor-14572 | |
116 | 13 | Taonnor-14572 | if (swimLane) then |
117 | 55 | Taonnor-14572 | local row = TGU_SwimlaneList.GetSwimLaneRow(swimLane, player.PlayerName) |
118 | 11 | Taonnor-14572 | |
119 | 55 | Taonnor-14572 | -- Update player |
120 | 14 | Taonnor-14572 | if (row ~= nil) then |
121 | Taonnor-14572 | for i,swimlanePlayer in ipairs(swimLane.Players) do |
|
122 | Taonnor-14572 | if (swimlanePlayer.PlayerName == player.PlayerName) then |
|
123 | Taonnor-14572 | swimlanePlayer.LastMapPingTimestamp = GetTimeStamp() |
|
124 | 56 | Taonnor-14572 | swimlanePlayer.IsPlayerDead = player.IsPlayerDead |
125 | 55 | Taonnor-14572 | swimlanePlayer.RelativeUltimate = player.RelativeUltimate |
126 | 19 | Taonnor-14572 | break |
127 | 14 | Taonnor-14572 | end |
128 | Taonnor-14572 | end |
|
129 | 13 | Taonnor-14572 | else |
130 | 14 | Taonnor-14572 | -- Add new player |
131 | 13 | Taonnor-14572 | local nextFreeRow = 1 |
132 | 11 | Taonnor-14572 | |
133 | 14 | Taonnor-14572 | for i,player in ipairs(swimLane.Players) do |
134 | 13 | Taonnor-14572 | nextFreeRow = nextFreeRow + 1 |
135 | Taonnor-14572 | end |
|
136 | 11 | Taonnor-14572 | |
137 | 14 | Taonnor-14572 | if (nextFreeRow <= ROWS) then |
138 | Taonnor-14572 | if (LOG_ACTIVE) then |
|
139 | 55 | Taonnor-14572 | _logger:logDebug("TGU_SwimlaneList.UpdatePlayer, add player " .. tostring(player.PlayerName) .. " to row " .. tostring(nextFreeRow)) |
140 | 14 | Taonnor-14572 | end |
141 | Taonnor-14572 | ||
142 | Taonnor-14572 | player.LastMapPingTimestamp = GetTimeStamp() |
|
143 | Taonnor-14572 | swimLane.Players[nextFreeRow] = player |
|
144 | Taonnor-14572 | row = swimLane.SwimlaneControl:GetNamedChild("Row" .. nextFreeRow) |
|
145 | Taonnor-14572 | else |
|
146 | 55 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("TGU_SwimlaneList.UpdatePlayer, too much players for one swimlane " .. tostring(nextFreeRow)) end |
147 | 13 | Taonnor-14572 | end |
148 | Taonnor-14572 | end |
|
149 | 55 | Taonnor-14572 | |
150 | 56 | Taonnor-14572 | -- Only update if player in a row |
151 | Taonnor-14572 | if (row ~= nil) then |
|
152 | Taonnor-14572 | if (TGU_SettingsHandler.SavedVariables.IsSortingActive) then |
|
153 | Taonnor-14572 | -- Sort swimlane with all players |
|
154 | Taonnor-14572 | TGU_SwimlaneList.SortSwimlane(swimLane) |
|
155 | Taonnor-14572 | else |
|
156 | Taonnor-14572 | -- Directly update row with player |
|
157 | Taonnor-14572 | TGU_SwimlaneList.UpdateListRow(row, player) |
|
158 | Taonnor-14572 | end |
|
159 | 55 | Taonnor-14572 | end |
160 | 14 | Taonnor-14572 | else |
161 | 55 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("TGU_SwimlaneList.UpdatePlayer, swimlane not found for ultimategroup " .. tostring(ultimateGroup.GroupName)) end |
162 | 13 | Taonnor-14572 | end |
163 | 12 | Taonnor-14572 | end |
164 | Taonnor-14572 | end |
|
165 | Taonnor-14572 | ||
166 | Taonnor-14572 | --[[ |
|
167 | Taonnor-14572 | Get swimlane from current SwimLanes |
|
168 | Taonnor-14572 | ]]-- |
|
169 | 37 | Taonnor-14572 | function TGU_SwimlaneList.GetSwimLane(ultimateGroupId) |
170 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
171 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.GetSwimLane") |
172 | Taonnor-14572 | _logger:logDebug("ultimateGroupId", ultimateGroupId) |
|
173 | 12 | Taonnor-14572 | end |
174 | Taonnor-14572 | ||
175 | Taonnor-14572 | if (ultimateGroupId ~= 0) then |
|
176 | 37 | Taonnor-14572 | for i,swimLane in ipairs(TGU_SwimlaneList.Swimlanes) do |
177 | 11 | Taonnor-14572 | if (swimLane.UltimateGroupId == ultimateGroupId) then |
178 | Taonnor-14572 | return swimLane |
|
179 | Taonnor-14572 | end |
|
180 | 12 | Taonnor-14572 | end |
181 | Taonnor-14572 | ||
182 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("TGU_SwimlaneList.GetSwimLane, swimLane not found " .. tostring(ultimateGroupId)) end |
183 | 12 | Taonnor-14572 | return nil |
184 | Taonnor-14572 | else |
|
185 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.GetSwimLane, ultimateGroupId is 0") |
186 | 12 | Taonnor-14572 | return nil |
187 | Taonnor-14572 | end |
|
188 | Taonnor-14572 | end |
|
189 | Taonnor-14572 | ||
190 | Taonnor-14572 | --[[ |
|
191 | Taonnor-14572 | Get Player Row from current players in swimlane |
|
192 | Taonnor-14572 | ]]-- |
|
193 | 37 | Taonnor-14572 | function TGU_SwimlaneList.GetSwimLaneRow(swimLane, playerName) |
194 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
195 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.GetSwimLaneRow") |
196 | Taonnor-14572 | _logger:logDebug("swimLane ID", swimLane.Id) |
|
197 | 12 | Taonnor-14572 | end |
198 | Taonnor-14572 | ||
199 | Taonnor-14572 | if (swimLane) then |
|
200 | 11 | Taonnor-14572 | for i,player in ipairs(swimLane.Players) do |
201 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug(player.PlayerName .. " == " .. playerName) end |
202 | 11 | Taonnor-14572 | if (player.PlayerName == playerName) then |
203 | 14 | Taonnor-14572 | return swimLane.SwimlaneControl:GetNamedChild("Row" .. i) |
204 | 11 | Taonnor-14572 | end |
205 | 12 | Taonnor-14572 | end |
206 | Taonnor-14572 | ||
207 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("TGU_SwimlaneList.GetSwimLane, player not found " .. tostring(playerName)) end |
208 | 14 | Taonnor-14572 | return nil |
209 | 12 | Taonnor-14572 | else |
210 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.GetSwimLane, swimLane is nil") |
211 | 14 | Taonnor-14572 | return nil |
212 | 12 | Taonnor-14572 | end |
213 | Taonnor-14572 | end |
|
214 | Taonnor-14572 | ||
215 | Taonnor-14572 | --[[ |
|
216 | 14 | Taonnor-14572 | Clears all players in swimlane |
217 | Taonnor-14572 | ]]-- |
|
218 | 37 | Taonnor-14572 | function TGU_SwimlaneList.ClearPlayersFromSwimlane(swimlane) |
219 | 14 | Taonnor-14572 | if (LOG_ACTIVE) then |
220 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.ClearPlayersFromSwimlane") |
221 | Taonnor-14572 | _logger:logDebug("swimlane ID", swimlane.Id) |
|
222 | 14 | Taonnor-14572 | end |
223 | Taonnor-14572 | ||
224 | Taonnor-14572 | if (swimlane) then |
|
225 | Taonnor-14572 | for i=1, ROWS, 1 do |
|
226 | Taonnor-14572 | local row = swimlane.SwimlaneControl:GetNamedChild("Row" .. i) |
|
227 | 19 | Taonnor-14572 | local swimlanePlayer = swimlane.Players[i] |
228 | Taonnor-14572 | ||
229 | Taonnor-14572 | if (swimlanePlayer ~= nil) then |
|
230 | Taonnor-14572 | local isPlayerNotGrouped = IsUnitGrouped(swimlanePlayer.PingTag) == false |
|
231 | Taonnor-14572 | ||
232 | 37 | Taonnor-14572 | if (TGU_SwimlaneList.IsMocked) then |
233 | 19 | Taonnor-14572 | isPlayerNotGrouped = false |
234 | Taonnor-14572 | end |
|
235 | Taonnor-14572 | ||
236 | Taonnor-14572 | local isPlayerTimedOut = (GetTimeStamp() - swimlanePlayer.LastMapPingTimestamp) > TIMEOUT |
|
237 | Taonnor-14572 | local isPlayerUltimateNotCorrect = swimlane.UltimateGroupId ~= swimlanePlayer.UltimateGroup.GroupAbilityId |
|
238 | Taonnor-14572 | ||
239 | Taonnor-14572 | if (isPlayerNotGrouped or isPlayerTimedOut or isPlayerUltimateNotCorrect) then |
|
240 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("Player invalid, hide row: " .. tostring(i)) end |
241 | 19 | Taonnor-14572 | |
242 | 56 | Taonnor-14572 | table.remove(swimlane.Players, i) |
243 | 19 | Taonnor-14572 | row:SetHidden(true) |
244 | Taonnor-14572 | end |
|
245 | Taonnor-14572 | else |
|
246 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("Row empty, hide: " .. tostring(i)) end |
247 | 19 | Taonnor-14572 | row:SetHidden(true) |
248 | Taonnor-14572 | end |
|
249 | 14 | Taonnor-14572 | end |
250 | Taonnor-14572 | end |
|
251 | Taonnor-14572 | end |
|
252 | Taonnor-14572 | ||
253 | Taonnor-14572 | --[[ |
|
254 | 12 | Taonnor-14572 | SetControlMovable sets the Movable and MouseEnabled flag in UI elements |
255 | Taonnor-14572 | ]]-- |
|
256 | 37 | Taonnor-14572 | function TGU_SwimlaneList.SetControlMovable(isMovable) |
257 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
258 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.SetControlMovable") |
259 | Taonnor-14572 | _logger:logDebug("isMovable", isMovable) |
|
260 | 12 | Taonnor-14572 | end |
261 | Taonnor-14572 | ||
262 | 46 | Taonnor-14572 | _control:GetNamedChild("MovableControl"):SetHidden(isMovable == false) |
263 | 28 | Taonnor-14572 | |
264 | 46 | Taonnor-14572 | _control:SetMovable(isMovable) |
265 | Taonnor-14572 | _control:SetMouseEnabled(isMovable) |
|
266 | 12 | Taonnor-14572 | end |
267 | Taonnor-14572 | ||
268 | Taonnor-14572 | --[[ |
|
269 | 37 | Taonnor-14572 | RestorePosition sets TGU_SwimlaneList on settings position |
270 | 12 | Taonnor-14572 | ]]-- |
271 | 37 | Taonnor-14572 | function TGU_SwimlaneList.RestorePosition(posX, posY) |
272 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
273 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.RestorePosition") |
274 | Taonnor-14572 | _logger:logDebug("posX, posY", posX, posY) |
|
275 | 12 | Taonnor-14572 | end |
276 | Taonnor-14572 | ||
277 | 46 | Taonnor-14572 | _control:ClearAnchors() |
278 | Taonnor-14572 | _control:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, posX, posY) |
|
279 | 12 | Taonnor-14572 | end |
280 | Taonnor-14572 | ||
281 | Taonnor-14572 | --[[ |
|
282 | 37 | Taonnor-14572 | OnSwimlaneListMoveStop saves current TGU_SwimlaneList position to settings |
283 | 12 | Taonnor-14572 | ]]-- |
284 | 37 | Taonnor-14572 | function TGU_SwimlaneList.OnSwimlaneListMoveStop() |
285 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logTrace("TGU_SwimlaneList.OnSwimlaneListMoveStop") end |
|
286 | 12 | Taonnor-14572 | |
287 | 46 | Taonnor-14572 | local left = _control:GetLeft() |
288 | Taonnor-14572 | local top = _control:GetTop() |
|
289 | 12 | Taonnor-14572 | |
290 | 37 | Taonnor-14572 | TGU_SettingsHandler.SavedVariables.PosX = left |
291 | Taonnor-14572 | TGU_SettingsHandler.SavedVariables.PosY = top |
|
292 | 12 | Taonnor-14572 | |
293 | Taonnor-14572 | if (LOG_ACTIVE) then |
|
294 | 37 | Taonnor-14572 | _logger:logDebug("PosX, PosY", TGU_SettingsHandler.SavedVariables.PosX, TGU_SettingsHandler.SavedVariables.PosY) |
295 | 12 | Taonnor-14572 | end |
296 | Taonnor-14572 | end |
|
297 | Taonnor-14572 | ||
298 | Taonnor-14572 | --[[ |
|
299 | Taonnor-14572 | SetControlHidden sets hidden on control |
|
300 | Taonnor-14572 | ]]-- |
|
301 | 50 | Taonnor-14572 | function TGU_SwimlaneList.SetControlHidden(isHidden) |
302 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
303 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.SetControlHidden") |
304 | 50 | Taonnor-14572 | _logger:logDebug("isHidden", isHidden) |
305 | 12 | Taonnor-14572 | end |
306 | Taonnor-14572 | ||
307 | 58 | Taonnor-14572 | if (TGU_GroupHandler.IsGrouped) then |
308 | Taonnor-14572 | _control:SetHidden(isHidden) |
|
309 | Taonnor-14572 | else |
|
310 | Taonnor-14572 | _control:SetHidden(true) |
|
311 | Taonnor-14572 | end |
|
312 | 50 | Taonnor-14572 | end |
313 | Taonnor-14572 | ||
314 | Taonnor-14572 | --[[ |
|
315 | Taonnor-14572 | SetControlActive sets hidden on control |
|
316 | Taonnor-14572 | ]]-- |
|
317 | Taonnor-14572 | function TGU_SwimlaneList.SetControlActive() |
|
318 | Taonnor-14572 | if (LOG_ACTIVE) then |
|
319 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.SetControlActive") |
|
320 | Taonnor-14572 | end |
|
321 | Taonnor-14572 | ||
322 | 37 | Taonnor-14572 | local isHidden = TGU_SettingsHandler.IsSwimlaneListVisible() == false |
323 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("isHidden", isHidden) end |
|
324 | 50 | Taonnor-14572 | |
325 | 58 | Taonnor-14572 | TGU_SwimlaneList.SetControlHidden(isHidden or CurrentHudHiddenState()) |
326 | 15 | Taonnor-14572 | |
327 | 19 | Taonnor-14572 | if (isHidden) then |
328 | Taonnor-14572 | -- Start timeout timer |
|
329 | 37 | Taonnor-14572 | EVENT_MANAGER:UnregisterForUpdate(TGU_SwimlaneList.Name) |
330 | 19 | Taonnor-14572 | |
331 | 38 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TGU_GROUP_CHANGED, TGU_SwimlaneList.RefreshList) |
332 | 55 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TGU_PLAYER_DATA_CHANGED, TGU_SwimlaneList.UpdatePlayer) |
333 | 38 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TGU_MOVABLE_CHANGED, TGU_SwimlaneList.SetControlMovable) |
334 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TGU_SWIMLANE_ULTIMATE_GROUP_ID_CHANGED, TGU_SwimlaneList.SetSwimlaneUltimate) |
|
335 | 50 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TUI_HUD_HIDDEN_STATE_CHANGED, TGU_SwimlaneList.SetControlHidden) |
336 | 19 | Taonnor-14572 | else |
337 | 37 | Taonnor-14572 | TGU_SwimlaneList.SetControlMovable(TGU_SettingsHandler.SavedVariables.Movable) |
338 | Taonnor-14572 | TGU_SwimlaneList.RestorePosition(TGU_SettingsHandler.SavedVariables.PosX, TGU_SettingsHandler.SavedVariables.PosY) |
|
339 | 24 | Taonnor-14572 | |
340 | 19 | Taonnor-14572 | -- Start timeout timer |
341 | 37 | Taonnor-14572 | EVENT_MANAGER:RegisterForUpdate(TGU_SwimlaneList.Name, REFRESHRATE, TGU_SwimlaneList.RefreshList) |
342 | 19 | Taonnor-14572 | |
343 | 38 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_GROUP_CHANGED, TGU_SwimlaneList.RefreshList) |
344 | 55 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_PLAYER_DATA_CHANGED, TGU_SwimlaneList.UpdatePlayer) |
345 | 38 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_MOVABLE_CHANGED, TGU_SwimlaneList.SetControlMovable) |
346 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_SWIMLANE_ULTIMATE_GROUP_ID_CHANGED, TGU_SwimlaneList.SetSwimlaneUltimate) |
|
347 | 50 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TUI_HUD_HIDDEN_STATE_CHANGED, TGU_SwimlaneList.SetControlHidden) |
348 | 19 | Taonnor-14572 | end |
349 | 12 | Taonnor-14572 | end |
350 | Taonnor-14572 | ||
351 | Taonnor-14572 | --[[ |
|
352 | 19 | Taonnor-14572 | OnSwimlaneHeaderClicked called on header clicked |
353 | Taonnor-14572 | ]]-- |
|
354 | 37 | Taonnor-14572 | function TGU_SwimlaneList.OnSwimlaneHeaderClicked(button, swimlaneId) |
355 | 19 | Taonnor-14572 | if (LOG_ACTIVE) then |
356 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.OnSwimlaneHeaderClicked") |
357 | Taonnor-14572 | _logger:logDebug("swimlaneId", swimlaneId) |
|
358 | 19 | Taonnor-14572 | end |
359 | Taonnor-14572 | ||
360 | Taonnor-14572 | if (button ~= nil) then |
|
361 | 38 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_SET_ULTIMATE_GROUP, TGU_SwimlaneList.OnSetUltimateGroup) |
362 | Taonnor-14572 | CALLBACK_MANAGER:FireCallbacks(TGU_SHOW_ULTIMATE_GROUP_MENU, button, swimlaneId) |
|
363 | 19 | Taonnor-14572 | else |
364 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.OnSwimlaneHeaderClicked, button nil") |
365 | 19 | Taonnor-14572 | end |
366 | Taonnor-14572 | end |
|
367 | Taonnor-14572 | ||
368 | Taonnor-14572 | --[[ |
|
369 | Taonnor-14572 | OnSetUltimateGroup called on header clicked |
|
370 | Taonnor-14572 | ]]-- |
|
371 | 37 | Taonnor-14572 | function TGU_SwimlaneList.OnSetUltimateGroup(group, swimlaneId) |
372 | 19 | Taonnor-14572 | if (LOG_ACTIVE) then |
373 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.OnSetUltimateGroup") |
374 | Taonnor-14572 | _logger:logDebug("group.GroupName, swimlaneId", group.GroupName, swimlaneId) |
|
375 | 19 | Taonnor-14572 | end |
376 | Taonnor-14572 | ||
377 | 38 | Taonnor-14572 | CALLBACK_MANAGER:UnregisterCallback(TGU_SET_ULTIMATE_GROUP, TGU_SwimlaneList.OnSetUltimateGroup) |
378 | 19 | Taonnor-14572 | |
379 | Taonnor-14572 | if (group ~= nil and swimlaneId ~= nil and swimlaneId >= 1 and swimlaneId <= 6) then |
|
380 | 37 | Taonnor-14572 | TGU_SettingsHandler.SetSwimlaneUltimateGroupIdSettings(swimlaneId, group) |
381 | 19 | Taonnor-14572 | else |
382 | 37 | Taonnor-14572 | _logger:logError("TGU_UltimateGroupMenu.ShowUltimateGroupMenu, group nil or swimlaneId invalid") |
383 | 19 | Taonnor-14572 | end |
384 | Taonnor-14572 | end |
|
385 | Taonnor-14572 | ||
386 | Taonnor-14572 | --[[ |
|
387 | 14 | Taonnor-14572 | SetSwimlaneUltimate sets the swimlane header icon in base of ultimateGroupId |
388 | Taonnor-14572 | ]]-- |
|
389 | 37 | Taonnor-14572 | function TGU_SwimlaneList.SetSwimlaneUltimate(swimlaneId, ultimateGroup) |
390 | 14 | Taonnor-14572 | if (LOG_ACTIVE) then |
391 | 37 | Taonnor-14572 | _logger:logTrace("TGU_SwimlaneList.SetSwimlaneUltimate") |
392 | Taonnor-14572 | _logger:logDebug("ultimateGroup.GroupName, swimlaneId", ultimateGroup.GroupName, swimlaneId) |
|
393 | 14 | Taonnor-14572 | end |
394 | Taonnor-14572 | ||
395 | 37 | Taonnor-14572 | local swimlaneObject = TGU_SwimlaneList.Swimlanes[swimlaneId] |
396 | 19 | Taonnor-14572 | local iconControl = swimlaneObject.SwimlaneControl:GetNamedChild("Header"):GetNamedChild("SelectorButtonControl"):GetNamedChild("Icon") |
397 | 14 | Taonnor-14572 | local labelControl = swimlaneObject.SwimlaneControl:GetNamedChild("Header"):GetNamedChild("UltimateLabel") |
398 | Taonnor-14572 | ||
399 | Taonnor-14572 | if (ultimateGroup ~= nil and iconControl ~= nil and labelControl ~= nil) then |
|
400 | 15 | Taonnor-14572 | iconControl:SetTexture(GetAbilityIcon(ultimateGroup.GroupAbilityId)) |
401 | 14 | Taonnor-14572 | labelControl:SetText(ultimateGroup.GroupName) |
402 | Taonnor-14572 | ||
403 | 15 | Taonnor-14572 | swimlaneObject.UltimateGroupId = ultimateGroup.GroupAbilityId |
404 | 37 | Taonnor-14572 | TGU_SwimlaneList.ClearPlayersFromSwimlane(swimlaneObject) |
405 | 14 | Taonnor-14572 | else |
406 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.SetSwimlaneUltimateIcon, icon is " .. tostring(icon) .. ";" .. tostring(iconControl) .. ";" .. tostring(ultimateGroup)) |
407 | 14 | Taonnor-14572 | end |
408 | Taonnor-14572 | end |
|
409 | Taonnor-14572 | ||
410 | Taonnor-14572 | --[[ |
|
411 | 12 | Taonnor-14572 | CreateSwimLaneListHeaders creates swimlane list headers |
412 | Taonnor-14572 | ]]-- |
|
413 | 37 | Taonnor-14572 | function TGU_SwimlaneList.CreateSwimLaneListHeaders() |
414 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logTrace("TGU_SwimlaneList.CreateSwimLaneListHeaders") end |
|
415 | 12 | Taonnor-14572 | |
416 | 11 | Taonnor-14572 | for i=1, SWIMLANES, 1 do |
417 | 37 | Taonnor-14572 | local ultimateGroupId = TGU_SettingsHandler.SavedVariables.SwimlaneUltimateGroupIds[i] |
418 | Taonnor-14572 | local ultimateGroup = TGU_UltimateGroupHandler.GetUltimateGroupByAbilityId(ultimateGroupId) |
|
419 | 27 | Taonnor-14572 | |
420 | 28 | Taonnor-14572 | local swimlaneControlName = "Swimlane" .. tostring(i) |
421 | 46 | Taonnor-14572 | local swimlaneControl = _control:GetNamedChild(swimlaneControlName) |
422 | 28 | Taonnor-14572 | |
423 | 27 | Taonnor-14572 | -- Add button |
424 | 19 | Taonnor-14572 | local button = swimlaneControl:GetNamedChild("Header"):GetNamedChild("SelectorButtonControl"):GetNamedChild("Button") |
425 | 37 | Taonnor-14572 | button:SetHandler("OnClicked", function() TGU_SwimlaneList.OnSwimlaneHeaderClicked(button, i) end) |
426 | 27 | Taonnor-14572 | |
427 | 28 | Taonnor-14572 | local swimLane = {} |
428 | Taonnor-14572 | swimLane.Id = i |
|
429 | Taonnor-14572 | swimLane.SwimlaneControl = swimlaneControl |
|
430 | Taonnor-14572 | swimLane.Players = {} |
|
431 | Taonnor-14572 | ||
432 | 27 | Taonnor-14572 | if (ultimateGroup ~= nil) then |
433 | 14 | Taonnor-14572 | if (LOG_ACTIVE) then |
434 | 37 | Taonnor-14572 | _logger:logDebug("Create Swimlane", i) |
435 | Taonnor-14572 | _logger:logDebug("ultimateGroup.GroupName", ultimateGroup.GroupName) |
|
436 | Taonnor-14572 | _logger:logDebug("swimlaneControlName", swimlaneControlName) |
|
437 | 14 | Taonnor-14572 | end |
438 | 11 | Taonnor-14572 | |
439 | 27 | Taonnor-14572 | local icon = swimlaneControl:GetNamedChild("Header"):GetNamedChild("SelectorButtonControl"):GetNamedChild("Icon") |
440 | 28 | Taonnor-14572 | icon:SetTexture(GetAbilityIcon(ultimateGroup.GroupAbilityId)) |
441 | Taonnor-14572 | ||
442 | 27 | Taonnor-14572 | local label = swimlaneControl:GetNamedChild("Header"):GetNamedChild("UltimateLabel") |
443 | 14 | Taonnor-14572 | label:SetText(ultimateGroup.GroupName) |
444 | 11 | Taonnor-14572 | |
445 | 15 | Taonnor-14572 | swimLane.UltimateGroupId = ultimateGroup.GroupAbilityId |
446 | 11 | Taonnor-14572 | else |
447 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.CreateSwimLaneListHeaders, ultimateGroup nil.") |
448 | 11 | Taonnor-14572 | end |
449 | 28 | Taonnor-14572 | |
450 | 37 | Taonnor-14572 | TGU_SwimlaneList.CreateSwimlaneListRows(swimlaneControl) |
451 | Taonnor-14572 | TGU_SwimlaneList.Swimlanes[i] = swimLane |
|
452 | 12 | Taonnor-14572 | end |
453 | Taonnor-14572 | end |
|
454 | Taonnor-14572 | ||
455 | Taonnor-14572 | --[[ |
|
456 | Taonnor-14572 | CreateSwimlaneListRows creates swimlane lsit rows |
|
457 | Taonnor-14572 | ]]-- |
|
458 | 37 | Taonnor-14572 | function TGU_SwimlaneList.CreateSwimlaneListRows(swimlaneControl) |
459 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logTrace("TGU_SwimlaneList.CreateSwimlaneListRows") end |
|
460 | 12 | Taonnor-14572 | |
461 | 13 | Taonnor-14572 | if (swimlaneControl ~= nil) then |
462 | Taonnor-14572 | for i=1, ROWS, 1 do |
|
463 | Taonnor-14572 | local row = CreateControlFromVirtual("$(parent)Row", swimlaneControl, "GroupUltimateSwimlaneRow", i) |
|
464 | 37 | Taonnor-14572 | if (LOG_ACTIVE) then _logger:logDebug("Row created " .. row:GetName()) end |
465 | 11 | Taonnor-14572 | |
466 | 13 | Taonnor-14572 | row:SetHidden(true) -- initial not visible |
467 | 11 | Taonnor-14572 | |
468 | 56 | Taonnor-14572 | if (i == 1) then |
469 | 13 | Taonnor-14572 | row:SetAnchor(TOPLEFT, swimlaneControl, TOPLEFT, 0, 25) |
470 | 56 | Taonnor-14572 | elseif (i == 5) then -- Fix pixelbug, Why the hell ZOS?! |
471 | Taonnor-14572 | row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, 0) |
|
472 | 13 | Taonnor-14572 | else |
473 | 56 | Taonnor-14572 | row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, -1) |
474 | Taonnor-14572 | end |
|
475 | 13 | Taonnor-14572 | |
476 | Taonnor-14572 | lastRow = row |
|
477 | Taonnor-14572 | end |
|
478 | Taonnor-14572 | else |
|
479 | 37 | Taonnor-14572 | _logger:logError("TGU_SwimlaneList.CreateSwimlaneListRows, swimlaneControl nil.") |
480 | 13 | Taonnor-14572 | end |
481 | 12 | Taonnor-14572 | end |
482 | Taonnor-14572 | ||
483 | Taonnor-14572 | --[[ |
|
484 | 37 | Taonnor-14572 | Initialize initializes TGU_SwimlaneList |
485 | 12 | Taonnor-14572 | ]]-- |
486 | 37 | Taonnor-14572 | function TGU_SwimlaneList.Initialize(logger, isMocked) |
487 | 12 | Taonnor-14572 | if (LOG_ACTIVE) then |
488 | 37 | Taonnor-14572 | logger:logTrace("TGU_SwimlaneList.Initialize") |
489 | 12 | Taonnor-14572 | end |
490 | Taonnor-14572 | ||
491 | 37 | Taonnor-14572 | _logger = logger |
492 | 46 | Taonnor-14572 | _control = TGU_SwimlaneListControl |
493 | 14 | Taonnor-14572 | |
494 | 37 | Taonnor-14572 | TGU_SwimlaneList.IsMocked = isMocked |
495 | 12 | Taonnor-14572 | |
496 | 37 | Taonnor-14572 | TGU_SwimlaneList.CreateSwimLaneListHeaders() |
497 | Taonnor-14572 | ||
498 | 50 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_STYLE_CHANGED, TGU_SwimlaneList.SetControlActive) |
499 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_IS_ZONE_CHANGED, TGU_SwimlaneList.SetControlActive) |
|
500 | 58 | Taonnor-14572 | CALLBACK_MANAGER:RegisterCallback(TGU_UNIT_GROUPED_CHANGED, TGU_SwimlaneList.SetControlActive) |
501 | 11 | Taonnor-14572 | end |