diff Turok/Init.lua @ 6:a9b8b0866ece

clear out log jam
author Nenue
date Sun, 21 Feb 2016 08:32:53 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Turok/Init.lua	Sun Feb 21 08:32:53 2016 -0500
@@ -0,0 +1,287 @@
+--- ${PACKAGE_NAME}
+-- @file-author@
+-- @project-revision@ @project-hash@
+-- @file-revision@ @file-hash@
+-- Created: 12/28/2015 6:40 AM
+--- Core load sequence goes here.
+--@debug@
+local ADDON, TurokEnv = ...
+local _G = _G
+--@end-debug@
+--GLOBALS: Turok, LibStub, GetAddOnMetadata
+local setmetatable, rawset, rawget, pairs, type, unpack, tostring, tinsert = setmetatable, rawset, rawget, pairs, type, unpack, tostring, table.insert
+Turok = LibStub("AceAddon-3.0"):NewAddon('Turok', 'AceEvent-3.0', 'AceTimer-3.0', 'AceConsole-3.0')
+Turok:SetDefaultModuleState(true)
+TurokEnv.Addon = Turok
+TurokEnv.LSM = LibStub("LibSharedMedia-3.0")
+TurokEnv.LGIST = LibStub("LibGroupInSpecT-1.1")
+local T = Turok
+--@debug@
+local print = function(...)
+  if _G.Devian and _G.DevianDB.workspace ~= 1 then
+    _G.print('DB', ...)
+  end
+end
+local cTypes = { ['function'] = 'FF9922', ['table'] = '00FFAA', ['number'] = '77FF00', ['string'] = '00AAFF', ['hl'] = 'FF0088',  ['field'] = '00FFFF',
+  ['boolean'] = 'CC88FF', ['false'] = 'FF7700', ['true'] = '44FF66', ['nil'] = 'FFFF00',}
+
+local Debuggers = {
+  cType = function(s) return '|cFF' .. tostring(cTypes[type(s)]) .. tostring(s) .. '|r' end,
+  cText = function(s) return '|cFF'..cTypes.string..tostring(s)..'|r' end,
+  cNum  = function(n) return '|cFF'..cTypes.number .. tostring(n) .. '|r' end,
+  cWord = function(w) return '|cFF'..cTypes.table .. tostring(w) .. '|r' end,
+  cKey  = function(k) return '|cFF'..cTypes.field .. tostring(k) .. '|r' end,
+  cPink = function(s) return '|cFF'..cTypes.hl .. tostring(s) .. '|r' end,
+  cBool = function(s) return '|cFF'..cTypes[tostring((not not s))] .. tostring(s) .. '|r' end,
+}
+for fname, func in pairs(Debuggers) do
+  _G[fname] = func
+end
+local cType, cText, cNum, cWord, cKey, cPink, cBool = cType, cText, cNum, cWord, cKey, cPink, cBool
+--@end-debug@
+
+T.db = {}
+T.versionString = GetAddOnMetadata("Turok", "Version")
+
+function T:OnModuleCreated(mod)
+  if mod.events then
+    print('Module', unpack(mod.events))
+  end
+end
+--- RegisterEvent embedded to module tables
+function T:RegisterCallback(event, func, ...)
+  if not T.dispatchQueue[event] then
+    T.dispatchQueue[event] = {}
+  end
+
+  if not T.dispatchQueue[event][T.ID] then
+    T.dispatchQueue[event][T.ID] = T:GetName()
+  end
+
+  if (type(func) == 'function') then
+    if type(T[event]) == 'function' then
+      local oldfunc = T[event]
+      T[event] = function(...)
+        oldfunc(...)
+        return func(...)
+      end
+    else
+      T[event] = func
+    end
+  end
+  --@debug@
+  print(cText('Adding listener for'), cKey(self:GetName()), cText('on'), cKey(event))--@end-debug@
+end
+
+--- Default settings base
+T.defaults = {
+  char = {},
+
+  lefttext = {
+    parent = 2, -- in an overlay frame
+    anchor = 'LEFT',
+    anchorTo = 'LEFT',
+    size = 18,
+    x = 5, y = 0,
+    justifyH = 'LEFT',
+    justifyV = 'MIDDLE',
+  },
+
+  righttext = {
+    parent = 2, -- in an overlay frame
+    anchor = 'RIGHT',
+    anchorTo = 'RIGHT',
+    x = -5,
+    y = 0,
+    size = 18,
+    justifyH = 'RIGHT',
+    justifyV = 'MIDDLE',
+  },
+
+  alpha = 1,
+  alpha_ooc = 1,
+  alpha_fade_in = 0.2,
+  alpha_fade_out = 0.2,
+  border_color = {0,0,0,1},
+
+  background_color = {0,.0,0,1},
+  background_blend = 'BLEND',
+
+  foreground_texture = [[Interface\Addons\Turok\Media\statusbar\Minimalist.tga]],
+  foreground_color = {0,.475,.95,1},
+  foreground_blend = 'BLEND',
+
+  foreground_inset = 0,
+  padding = 2,
+  spacing = 0,
+  fill_direction = 'RIGHT',
+
+  anchor = 'CENTER', parent = 'UIParent', anchorTo = 'CENTER',
+  x = 0, y = 0,
+  inset = -3,
+  width = 250,
+  height = 100,
+  strata = 'LOW',
+  font = "Interface\\Addons\\Turok\\Media\\font\\ArchivoNarrow-Regular.ttf",
+  size = 14,
+  text_color = {1, 1, 1, 1},
+  justifyH = 'LEFT',
+  outline = 'OUTLINE',
+  combatFade = true,
+
+  battle_noise_start = [[Interface\Addons\Turok\Media\sound\Low_Beep-Public_D-136_hifi.mp3]],
+  battle_noise_end = [[Interface\Addons\Turok\Media\sound\Electro_-S_Bainbr-7955_hifi.mp3]],
+}
+
+
+T.events = {
+  'PLAY_MOVIE',
+  'PLAYER_TARGET_CHANGED',
+  'PLAYER_FOCUS_CHANGED',
+  'PLAYER_EQUIPMENT_CHANGED',
+  'PLAYER_REGEN_DISABLED',
+  'PLAYER_REGEN_ENABLED',
+  'SPELL_UDPATE_COOLDOWN',
+  'SPELL_UPDATE_USABLE',
+  'UNIT_AURA',
+  'UNIT_PET',
+  'UNIT_POWER_FREQUENT',
+  'UNIT_SPELL_HASTE',
+  'UNIT_SPELLCAST_SENT',
+  'UNIT_SPELLCAST_START',
+  'UNIT_SPELLCAST_DELAYED',
+  'UNIT_SPELLCAST_STOP',
+  'UNIT_SPELLCAST_CHANNEL_START',
+  'UNIT_SPELLCAST_CHANNEL_UPDATE',
+  'UNIT_SPELLCAST_CHANNEL_STOP',
+  'UNIT_SPELLCAST_FAILED',
+  'UNIT_SPELLCAST_INTERRUPTED',
+  'UNIT_SPELLCAST_INTERRUPTIBLE',
+  'UNIT_SPELLCAST_SUCCEEDED',
+  'UNIT_SPELLCAST_UNINTERRUPTIBLE',
+}
+T.previousSpec = {}
+T.talents = { {}, {}}
+T.changedTalents = {{}, {} }
+T.talentInfo = {}
+T.auras = {}
+T.spells = {}
+T.spellevent = {}
+T.channeling = {}
+T.casting = {}
+T.sent = {}
+T.prototype = {}
+T.spellBook = {}
+T.equipped = {}
+
+--- player-restricted unit info and text representations
+T.player = {}
+T.playertext = {}
+T.pet = {}
+
+--- holds non-restricted unit information
+T.unit = {
+  player = {},
+  target = {},
+  focus = {},
+  pet = {},
+}
+
+-- index of frames with conditional visual properties
+T.control_regions = {}
+
+-- index of frames generated by the lua
+T.frames = {}
+
+-- units
+T.units = {}
+T.unitsBySlot = {}
+setmetatable(T.unitsBySlot, {__mode="v"})
+
+
+
+T.TrueVal = function (self,k)
+  return rawget(self,k)
+end
+--- Sets an index hierarchy for db vars and propagates config dialog info
+T.LinkTable = function (over, under, pname, cname)
+  local mt = {
+    __index = function(t,k)
+      if type(over[k]) ~= nil then
+        --t[k] = over[k]
+        --@debug@
+        --print('up-referencing '.. STACK_COLOR2 .. pname ..'|r.'.. STACK_COLOR3.. tostring(k)..'|r -> '.. STACK_COLOR3.. pname ..'.' .. cname .. '|r.'..STACK_COLORN.. tostring(k) ..'|r', over[k])--@end-debug@
+      end
+      return over[k]
+    end,
+    __newindex = function (t, k, v)
+      rawset(t,k,v)
+      if type(v) == 'table' then
+        --@debug@
+        --print('parenting '.. STACK_COLOR2.. pname ..'|r to created table '.. STACK_COLOR3.. cname ..'|r')--@end-debug@
+        T.LinkTable(under, v, pname, k)
+      end
+    end
+  }
+  --under.TrueVal = T.TrueVal
+  setmetatable(under, mt)
+  for k, v in  pairs(under) do
+    if type(v) == 'table' then
+      --@debug@
+      --print('linking '..STACK_COLOR1.. pname ..'|r to '..STACK_COLOR2.. cname ..'|r')--@end-debug@
+      T.LinkTable(under, v, pname ..'.'.. cname, k)
+    end
+  end
+end
+
+
+--- Merges values of table B into table A, and copies over nested values of tables matching the keywords list
+local masked = {name = true, virtual = true}
+T.Config_Push = function(cvars, push , root, rkey)
+  local results = {}
+  root = root or cvars
+  for k, v in pairs(push) do
+    if not masked[k] then
+      if type(v) == 'table' and v ~= root then
+        cvars[k] = {}
+        T.Config_Push(cvars[k], v, root)
+      else
+        print('  |cFFFF0088B|r  ', tostring(rkey)..'.'..cKey(k))
+        cvars[k] = v
+        tinsert(results, '  |cFFFF0088B|r  '.. tostring(rkey)..'.'..cKey(k))
+      end
+    end
+  end
+  return cvars, results
+end
+T.Config_Merge = function(cvars, merge, root, rkey)
+  local diff = {}
+  root = root or cvars
+  rkey = rkey or '0'
+  for k, v in pairs(merge) do
+    if masked[k] or cvars[k] then
+      tinsert(diff, '  |cFF00FF00A|r  '.. tostring(rkey)..'.'..cWord(k))
+      print('  |cFF00FF00A|r  ', tostring(rkey)..'.'..cText(k), '=', cvars[k])
+      --cvars[k] = cvars[k]
+    else
+      if type(v) == 'table' then
+        if type(cvars[k]) == 'nil' then
+          cvars[k] = {}
+        end
+        if type(cvars[k]) == 'table' then
+          print('  |cFFFFFF00A+B|r  '.. tostring(rkey)..'.'..cWord(k))
+          cvars[k] = T.Config_Merge(cvars[k], v, root, tostring(rkey)..'.'..tostring(k))
+        end
+      elseif cvars[k] == nil then
+        tinsert(diff, '  |cFFFF0088B|r  '.. tostring(rkey)..'.'..cKey(k))
+        print('  |cFFFF0088B|r  ', tostring(rkey)..'.'..cKey(k))
+        cvars[k] = v
+      else
+        tinsert(diff, '  |cFF00FF00A|r  '.. tostring(rkey)..'.'..cWord(k))
+        print('  |cFF00FF00A|r  ', tostring(rkey)..'.'..cWord(k))
+        --cvars[k] = cvars[k]
+      end
+    end
+  end
+  return cvars, diff
+end
\ No newline at end of file