Mercurial > wow > icu
comparison ICU.lua @ 1:6af2d0a0c537
Added support for disabling certain instances (based on Zone, need testing).
Cleaned up options.
| author | Xiiph |
|---|---|
| date | Sat, 05 Feb 2011 20:27:14 +0100 |
| parents | 98c6f55e6619 |
| children | e883b490ff93 |
comparison
equal
deleted
inserted
replaced
| 0:98c6f55e6619 | 1:6af2d0a0c537 |
|---|---|
| 40 checkAfterFinish = true, | 40 checkAfterFinish = true, |
| 41 advertiseICU = true, | 41 advertiseICU = true, |
| 42 noFoodMessage = L["Well Fed reminder!"], | 42 noFoodMessage = L["Well Fed reminder!"], |
| 43 noFlaskMessage = L["Flask reminder!"], | 43 noFlaskMessage = L["Flask reminder!"], |
| 44 lowFlaskDurationMessage = L["Your Flask runs out in less than 10 minutes!"], | 44 lowFlaskDurationMessage = L["Your Flask runs out in less than 10 minutes!"], |
| 45 disabledZones = {}, | |
| 45 } | 46 } |
| 46 } | 47 } |
| 47 | 48 |
| 48 function icu:OnInitialize() | 49 function icu:OnInitialize() |
| 49 self.db = LibStub("AceDB-3.0"):New("icuDB", defaults, true) | 50 self.db = LibStub("AceDB-3.0"):New("icuDB", defaults, true) |
| 59 | 60 |
| 60 AceConfig:RegisterOptionsTable("ICU", self.options, {"icu"}) | 61 AceConfig:RegisterOptionsTable("ICU", self.options, {"icu"}) |
| 61 | 62 |
| 62 AceConfigDialog:AddToBlizOptions("ICU", nil, nil, "general") | 63 AceConfigDialog:AddToBlizOptions("ICU", nil, nil, "general") |
| 63 AceConfigDialog:AddToBlizOptions("ICU", "Profiles","ICU","profile") | 64 AceConfigDialog:AddToBlizOptions("ICU", "Profiles","ICU","profile") |
| 65 AceConfigDialog:AddToBlizOptions("ICU", "Whispers","ICU","messages") | |
| 66 AceConfigDialog:AddToBlizOptions("ICU", "Disabled Zones","ICU","zones") | |
| 64 end | 67 end |
| 65 | 68 |
| 66 function icu:refreshConfig() | 69 function icu:refreshConfig() |
| 67 --print("ICU: Config refreshing ..."); | 70 --print("ICU: Config refreshing ..."); |
| 68 | 71 |
| 181 name = L["Check after readycheck"], | 184 name = L["Check after readycheck"], |
| 182 desc = L["Don't check buffs until ready check has finished (or timed out)"], | 185 desc = L["Don't check buffs until ready check has finished (or timed out)"], |
| 183 set = function(o,v,...) self.db.profile.checkAfterFinish = v end, | 186 set = function(o,v,...) self.db.profile.checkAfterFinish = v end, |
| 184 get = function() return self.db.profile.checkAfterFinish end, | 187 get = function() return self.db.profile.checkAfterFinish end, |
| 185 }, | 188 }, |
| 186 noFlaskMessage = { | 189 }, |
| 187 type = 'input', | 190 }, |
| 188 name = L["Flask reminder"], | 191 messages = { |
| 189 desc = L["Message whispered to raiders missing a cataclysm flask"], | 192 name = L["Messages"], |
| 190 set = function(o,v,...) self.db.profile.noFlaskMessage = v end, | 193 type = 'group', |
| 191 get = function() return self.db.profile.noFlaskMessage end, | 194 args = { |
| 192 }, | 195 noFlaskMessage = { |
| 193 lowFlaskDurationMessage = { | 196 type = 'input', |
| 194 type = 'input', | 197 width = 'double', |
| 195 name = L["Flask expiration"], | 198 name = L["Flask reminder"], |
| 196 desc = L["Message whispered to raiders with less than 10 minutes left on their flask"], | 199 desc = L["Message whispered to raiders missing a cataclysm flask"], |
| 197 set = function(o,v,...) self.db.profile.lowFlaskDurationMessage = v end, | 200 set = function(o,v,...) self.db.profile.noFlaskMessage = v end, |
| 198 get = function() return self.db.profile.lowFlaskDurationMessage end, | 201 get = function() return self.db.profile.noFlaskMessage end, |
| 199 }, | 202 }, |
| 200 noFoodMessage = { | 203 lowFlaskDurationMessage = { |
| 201 type = 'input', | 204 type = 'input', |
| 202 name = L["Food reminder"], | 205 width = 'double', |
| 203 desc = L["Message whispered to raiders missing the well-fed buff"], | 206 name = L["Flask expiration"], |
| 204 set = function(o,v,...) self.db.profile.noFoodMessage = v end, | 207 desc = L["Message whispered to raiders with less than 10 minutes left on their flask"], |
| 205 get = function() return self.db.profile.noFoodMessage end, | 208 set = function(o,v,...) self.db.profile.lowFlaskDurationMessage = v end, |
| 206 }, | 209 get = function() return self.db.profile.lowFlaskDurationMessage end, |
| 207 | 210 }, |
| 211 noFoodMessage = { | |
| 212 type = 'input', | |
| 213 width = 'double', | |
| 214 name = L["Food reminder"], | |
| 215 desc = L["Message whispered to raiders missing the well-fed buff"], | |
| 216 set = function(o,v,...) self.db.profile.noFoodMessage = v end, | |
| 217 get = function() return self.db.profile.noFoodMessage end, | |
| 218 }, | |
| 219 }, | |
| 220 }, | |
| 221 zones = { | |
| 222 name = L["Disabled Zones"], | |
| 223 type = 'group', | |
| 224 set = function(i,v) self.db.profile.disabledZones[i[#i]] = v end, | |
| 225 get = function(i) return self.db.profile.disabledZones[i[#i]] end, | |
| 226 args = { | |
| 227 help = { | |
| 228 type = 'description', | |
| 229 name = L['Toggle ICU automatic checking |cffcc0000off|r in the selected zones.'], | |
| 230 width = 'full', | |
| 231 order = 0, | |
| 232 }, | |
| 233 bwd = { | |
| 234 type = 'toggle', | |
| 235 name = L["Blackwing Descent"], | |
| 236 width = 'double', | |
| 237 }, | |
| 238 bot = { | |
| 239 type = 'toggle', | |
| 240 name = L["Bastion of Twilight"], | |
| 241 width = 'double', | |
| 242 }, | |
| 243 tfw = { | |
| 244 type = 'toggle', | |
| 245 name = L["Throne of the Four Winds"], | |
| 246 width = 'double', | |
| 247 }, | |
| 248 bh = { | |
| 249 type = 'toggle', | |
| 250 name = L["Baradin Hold"], | |
| 251 width = 'double', | |
| 252 }, | |
| 208 } | 253 } |
| 209 }, | 254 }, |
| 210 profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db), | 255 profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db), |
| 211 }, | 256 }, |
| 212 } | 257 } |
| 213 return options | 258 return options |
| 214 end | 259 end |
| 215 | 260 |
| 216 function icu:inspectRaid(silent) | 261 function icu:inspectRaid(silent,automatic) |
| 262 -- Check if any zones have been disabled | |
| 263 if #self.db.profile.disabledZones > 0 and automatic then | |
| 264 local currentZone = GetRealZoneText(); | |
| 265 | |
| 266 for i = 1, #self.db.profile.disabledZones do | |
| 267 if currentZone == self.db.profile.disabledZones[i] then return true end | |
| 268 end | |
| 269 end | |
| 270 | |
| 217 -- Not in a raid group | 271 -- Not in a raid group |
| 218 local icuAd = ""; | 272 local icuAd = ""; |
| 219 | 273 |
| 220 if GetNumRaidMembers() == 0 then | 274 if GetNumRaidMembers() == 0 then |
| 221 return true | 275 return true |
| 324 icu:UnregisterEvent("READY_CHECK"); | 378 icu:UnregisterEvent("READY_CHECK"); |
| 325 return true; | 379 return true; |
| 326 end | 380 end |
| 327 | 381 |
| 328 if not self.db.profile.checkAfterFinish then | 382 if not self.db.profile.checkAfterFinish then |
| 329 self:inspectRaid(); | 383 self:inspectRaid(nil,true); |
| 330 else | 384 else |
| 331 self:ScheduleTimer("READY_CHECK_FINISHED", 30); | 385 self:ScheduleTimer("READY_CHECK_FINISHED", 30); |
| 332 self:RegisterEvent("READY_CHECK_FINISHED"); | 386 self:RegisterEvent("READY_CHECK_FINISHED"); |
| 333 end | 387 end |
| 334 end | 388 end |
| 335 | 389 |
| 336 function icu:READY_CHECK_FINISHED() | 390 function icu:READY_CHECK_FINISHED() |
| 337 --print("Ready check finish!"); | 391 --print("Ready check finish!"); |
| 338 self:UnregisterEvent("READY_CHECK_FINISHED"); | 392 self:UnregisterEvent("READY_CHECK_FINISHED"); |
| 339 self:CancelAllTimers(); | 393 self:CancelAllTimers(); |
| 340 self:inspectRaid(); | 394 self:inspectRaid(nil,true); |
| 341 end | 395 end |
| 342 | 396 |
| 343 function icu:filterChat(self, event, msg) | 397 function icu:getDB() |
| 344 if msg == self.db.profile.noFoodMessage or msg == self.db.profile.noFlaskMessage or msg == self.db.profile.lowFlaskDurationMessage or msg == L["ICU"]..": "..self.db.profile.noFoodMessage or msg == L["ICU"]..": "..self.db.profile.noFlaskMessage or msg == L["ICU"]..": "..self.db.profile.lowFlaskDurationMessage then return true end | 398 return self.db; |
| 345 end | 399 end |
| 346 ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER_ICU_INFORM", icu:filterChat) | 400 |
| 401 function filterChat(self, event, msg) | |
| 402 local db = icu:getDB(); | |
| 403 if msg == db.profile.noFoodMessage or msg == db.profile.noFlaskMessage or msg == db.profile.lowFlaskDurationMessage or msg == L["ICU"]..": "..db.profile.noFoodMessage or msg == L["ICU"]..": "..db.profile.noFlaskMessage or msg == L["ICU"]..": "..db.profile.lowFlaskDurationMessage then return true end | |
| 404 end | |
| 405 ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER_ICU_INFORM", filterChat) | |
| 347 | 406 |
| 348 icu:RegisterEvent("READY_CHECK"); | 407 icu:RegisterEvent("READY_CHECK"); |
| 349 | 408 |
| 350 --@do-not-package@ | 409 --@do-not-package@ |
| 351 function icu:test(cond) | 410 function icu:test(cond) |
