Mercurial > wow > turok
comparison Turok/Modules/Timer/Progressbar.lua @ 6:a9b8b0866ece
clear out log jam
| author | Nenue |
|---|---|
| date | Sun, 21 Feb 2016 08:32:53 -0500 |
| parents | |
| children | 9400a0ff8540 |
comparison
equal
deleted
inserted
replaced
| 5:8a9a6637f082 | 6:a9b8b0866ece |
|---|---|
| 1 --- ${PACKAGE_NAME} | |
| 2 -- @file-author@ | |
| 3 -- @project-revision@ @project-hash@ | |
| 4 -- @file-revision@ @file-hash@ | |
| 5 -- Created: 1/15/2016 6:38 PM | |
| 6 local T, _G = Turok, _G | |
| 7 local GetTime, PlaySoundFile, format = GetTime, PlaySoundFile, string.format | |
| 8 local unpack, tconcat = unpack, table.concat | |
| 9 local ACTIVE, PASSIVE, HIDDEN = 2, 1, 0 | |
| 10 local mod = T.modules.TimerControl | |
| 11 --@debug@ | |
| 12 local cType, cText, cNum, cWord, cKey, cPink, cBool = cType, cText, cNum, cWord, cKey, cPink, cBool | |
| 13 local print = function(...) | |
| 14 if _G.Devian and _G.DevianDB.workspace ~= 1 then | |
| 15 _G.print('Progressbar', ...) | |
| 16 end | |
| 17 end | |
| 18 print('Peep!', ...) | |
| 19 --@end-debug@ | |
| 20 local GetPrint = function(trace) | |
| 21 if trace then | |
| 22 return print | |
| 23 else | |
| 24 return function() end | |
| 25 end | |
| 26 end | |
| 27 T.defaults.spirit.progressbar = { | |
| 28 combatFade = true, | |
| 29 alpha = 1, | |
| 30 alpha_ooc = 0, | |
| 31 alpha_ooc_passive = 0, | |
| 32 alpha_ooc_active = 1, | |
| 33 | |
| 34 width = 200, height = 24, | |
| 35 parent = 1, | |
| 36 anchor = 'CENTER', anchorTo = 'CENTER', | |
| 37 setAllPoints = true, | |
| 38 strata = 'MEDIUM', | |
| 39 | |
| 40 foreground_color = {1,0.5,0,0.5}, | |
| 41 foreground_blend = 'ADD', | |
| 42 foreground_texture = [[Interface\Addons\Turok\Media\statusbar\Minimalist.tga]], | |
| 43 background_color = {1,1,1,0.5}, | |
| 44 background_blend = 'BLEND', | |
| 45 padding = 3, | |
| 46 spacing = 1, | |
| 47 foreground_inset= 0, | |
| 48 icon = { | |
| 49 embedded = true, | |
| 50 alpha = 1, | |
| 51 alpha_ooc = 1, | |
| 52 size = 24, | |
| 53 x = -6, y = 0, | |
| 54 anchor = 'RIGHT', anchorTo = 'LEFT', | |
| 55 parent = 1, | |
| 56 }, | |
| 57 | |
| 58 -- text | |
| 59 color = {0,0,0,.5}, | |
| 60 } | |
| 61 | |
| 62 local p = mod.prototype.display.progressbar | |
| 63 p.type='display' | |
| 64 | |
| 65 p.inherits = 'TurokProgressbarTemplate' | |
| 66 p.cvars = {} | |
| 67 | |
| 68 --- Load-time config retrieval | |
| 69 p.Init = function (self) | |
| 70 local print = GetPrint(self.trace) | |
| 71 | |
| 72 print(' ', self:GetName(),'<- Progressbar.Load') | |
| 73 print(' ', self:GetHeight()) | |
| 74 | |
| 75 if self.cvars.hideIcon then | |
| 76 self.enableIcon = false | |
| 77 print('Icon hidden') | |
| 78 else | |
| 79 self.icon:Hide() | |
| 80 if self.cvars.icon then | |
| 81 print('Icon data:') | |
| 82 for k,v in pairs(self.cvars.icon) do | |
| 83 print(' ', k, '=', v) | |
| 84 end | |
| 85 print(cWord(' icon=')..cText(self.itemIcon or self.spellIcon)) | |
| 86 self.icon:SetTexture(self.itemIcon or self.spellIcon) | |
| 87 self.icon:ClearAllPoints() | |
| 88 T.SetTextureLayout(self.icon, self.cvars.icon) | |
| 89 self.enableIcon = true | |
| 90 self.icon:Show() | |
| 91 end | |
| 92 | |
| 93 end | |
| 94 | |
| 95 T.SetStatusTextures(self, self.cvars) | |
| 96 | |
| 97 _G.print('Update', self.background:GetWidth(), self.background:GetHeight()) | |
| 98 _G.print('Update', self.foreground:GetWidth(), self.foreground:GetHeight()) | |
| 99 end | |
| 100 | |
| 101 | |
| 102 --- Negotiate the config differences between different display states | |
| 103 -- Hidden - display is or should (via fade-out) be hidden | |
| 104 -- Passive - display is visible, but no timing information is processed | |
| 105 -- Active - display is visible and counting time; on expiration, it will downgrade itself to passive or hidden | |
| 106 p.SetState = function(self, newState, forcePrevious) | |
| 107 local print = GetPrint(self.trace) | |
| 108 | |
| 109 local previous = self.displayState | |
| 110 self.prevState = forcePrevious and forcePrevious or previous | |
| 111 self.displayState = newState | |
| 112 | |
| 113 local newState, previous = self.displayState, self.prevState | |
| 114 --- Transition | |
| 115 if newState ~= previous then | |
| 116 print(cText(' Transition:'), cWord(self.spellName)) | |
| 117 if newState == HIDDEN then | |
| 118 print(cText(' to HIDDEN')) | |
| 119 -- to HIDDEN | |
| 120 if previous then | |
| 121 -- has to have been ACTIVE or PASSIVE at this point | |
| 122 self.Intro:Stop() | |
| 123 if self.event then | |
| 124 self.Outro:Play() | |
| 125 else | |
| 126 self:Hide() | |
| 127 end | |
| 128 end | |
| 129 -- want to end here if HIDDEN from nil | |
| 130 else | |
| 131 -- to ACTIVE or PASSIVE | |
| 132 self.Outro:Stop() -- stop any running outro | |
| 133 | |
| 134 | |
| 135 if newState == ACTIVE then | |
| 136 | |
| 137 -- and is ACTIVE | |
| 138 self:Show() | |
| 139 end | |
| 140 | |
| 141 print(cText(' from'), cNum(previous)) | |
| 142 if previous and previous ~= HIDDEN then | |
| 143 -- from visible | |
| 144 if self.event then | |
| 145 self.refresh = true | |
| 146 self.Retro:Play() | |
| 147 end | |
| 148 else | |
| 149 if self.event then | |
| 150 self.Intro:Play() | |
| 151 else | |
| 152 self:Show() | |
| 153 end | |
| 154 end | |
| 155 end | |
| 156 else | |
| 157 if newState == ACTIVE then | |
| 158 print(cText('')) | |
| 159 -- and is ACTIVE | |
| 160 end | |
| 161 | |
| 162 if self.event and newState ~= HIDDEN then | |
| 163 self.refresh = true | |
| 164 self.Retro:Play() | |
| 165 end | |
| 166 end | |
| 167 | |
| 168 if newState ~= HIDDEN then | |
| 169 print(cText(' CVars:')) | |
| 170 local c = (newState == ACTIVE) and self.cvars.active or self.cvars.passive | |
| 171 if self.icon and c.icon then | |
| 172 print(cText(' '), cWord('desat=')..cBool(c.icon.desaturated), cWord('color=')..cNum(tconcat(c.icon.color, ', '))) | |
| 173 self.icon:SetVertexColor(unpack(c.icon.color)) | |
| 174 self.icon:SetDesaturated(c.icon.desaturated) | |
| 175 end | |
| 176 local c | |
| 177 if newState == ACTIVE then | |
| 178 self.fillState = 1 | |
| 179 c = self.cvars.active | |
| 180 else | |
| 181 self.fillState = 2 | |
| 182 c = self.cvars.passive | |
| 183 end | |
| 184 | |
| 185 if self.icon and c.icon then | |
| 186 print(cText(' '), cWord('desat=')..cBool(c.icon.desaturated), cWord('color=')..cNum(tconcat(c.icon.color, ', '))) | |
| 187 self.icon:SetVertexColor(unpack(c.icon.color)) | |
| 188 self.icon:SetDesaturated(c.icon.desaturated) | |
| 189 end | |
| 190 | |
| 191 self:UpdateAlpha(T.inCombat) | |
| 192 end | |
| 193 end | |
| 194 | |
| 195 p.Update = function (self) | |
| 196 local print = GetPrint(self.trace) | |
| 197 | |
| 198 -- Trigger business | |
| 199 -- Passive or Hidden, evaluate once | |
| 200 if self.displayState == 0 and self.prevState ~= 0 then | |
| 201 self.prevState = self.displayState -- quietly advance state | |
| 202 self.percent = 0 | |
| 203 self.valueFull = 0 | |
| 204 self.value = 0 | |
| 205 self:SetText() | |
| 206 self:SetProgress(self.percent) | |
| 207 print('go LOW') | |
| 208 elseif self.displayState == 1 and self.prevState ~= 1 then | |
| 209 self.prevState = self.displayState -- quietly advance state | |
| 210 self.valueFull = 0 | |
| 211 self.value = 0 | |
| 212 self.percent = 1 | |
| 213 self:SetText() | |
| 214 self:SetProgress(self.fill_inverse and 0 or 1) | |
| 215 print('go PASSIVE', self.percent, self.duration, self.start, self.expires) | |
| 216 elseif self.displayState == 2 then | |
| 217 if self.prevState ~= 2 or self.refresh then | |
| 218 self.prevState = self.displayState -- quietly advance state | |
| 219 self.refresh = nil | |
| 220 end | |
| 221 -- prevState is set externally | |
| 222 local time = GetTime() | |
| 223 if self.expires <= time and self.charges == self.maxCharges then | |
| 224 self.percent = 1 | |
| 225 self.duration = 0 | |
| 226 self.expires = 0 | |
| 227 self.start= 0 | |
| 228 self.valueFull = self.duration | |
| 229 self.value = self.duration | |
| 230 self.elapsed = self.duration | |
| 231 self.remaining = 0 | |
| 232 self:SetState(self.cvars.persist and self.flags.passive or self.flags.hidden) | |
| 233 else | |
| 234 self.valueFull = self.expires - time | |
| 235 self.percent = self.valueFull / self.duration | |
| 236 self.elapsed = time - self.start | |
| 237 self.remaining = self.duration - time | |
| 238 | |
| 239 self.value = floor(self.valueFull) | |
| 240 end | |
| 241 | |
| 242 --PlaySoundFile(self.cvars.sound_active) | |
| 243 self:SetText() | |
| 244 self:SetProgress(self.percent) | |
| 245 end | |
| 246 end |
