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