view ObjectiveTracker/Schema.lua @ 37:e84d645c8ab8

- revised the tracker update function to build its complete data list up front and use the values as points of comparison for determining possible out of place blocks, which will be iterated over afterward to remove what wasn't re-used - also entailed revising the exact role of global event handlers and function hooks, limiting their directions of communication so one doesn't end up calling the other multiple or inifinity times - schema handling polish
author Nenue
date Mon, 18 Apr 2016 07:56:23 -0400
parents 69d03f8e293e
children 1f8f9cc3d956
line wrap: on
line source
--- ${PACKAGE_NAME}
-- @file-author@
-- @project-revision@ @project-hash@
-- @file-revision@ @file-hash@
-- Created: 4/15/2016 11:36 PM

local B = select(2,...).frame
local T = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
local setmetatable, type, rawset = setmetatable, type, rawset
local print = B.print('Tracker')
local lprint = B.print('Layout')
local oprint = B.print('Objectives')
T.defaults.Schema = setmetatable({}, {
  __newindex = function(schemas,layerName, layerTable)
    -- tracker/block/line
    if type(layerTable) == 'table' then

      print('adding layer', layerName)
      for k,v in pairs(layerTable) do
        print('  incorporated schema', k)
        if type(v) == 'table' and k ~= 'default' then
          setmetatable(v, {
            __index = function(schemaTable, key)
              print('  substituting default "'..tostring(schemas[layerName].default[key])..'" for |cFF00FFFF', layerName..'|r.|cFF0088FF'..k..'|r.'..key)
              return schemas[layerName].default[key]
            end
          })
        end
      end
      rawset(schemas, layerName, setmetatable(layerTable, {
        __newindex = function(layerTable, schemaName, schemaTable)
          -- schema table
          if type(schemaTable) == 'table' then
            print('adding schema', schemaName, 'to', layerName, 'layers')


            rawset(layerTable, schemaName, setmetatable(schemaTable, {
              __index = function(schemaTable, key)
                print('  substituting default "'..tostring(schemas[layerName].default[key])..'" for |cFF00FFFF', layerName..'|r.|cFF0088FF'..schemaName..'|r.'..key)
                rawset(schemaTable, key, schemas[layerName].default[key])
                return schemas[layerName].default[key]
              end
            }))
          end
        end,
      }))
    end
  end
})

T.defaults.Schema.tracker = {
  default = {
    headerbg = {'VERTICAL', 1, 1, 0.5, 0.5, 1, 1, 0.5, 0},
    headerFont = {[[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 14, 'OUTLINE'},
    blockSpacing = 1,
  }
}
T.defaults.Schema.block = {
  default = {
    titleColor = {1, 0.7, 0, 1},
    titlebg = {'HORIZONTAL', 1, 0, .7, 0,    1, 0, .7, .125},
    textbg = {'HORIZONTAL', 0, 0, 0, 0,      0, 0, 0, 0.4 },
    selectionbg = {'HORIZONTAL', 1, 1, 1, 0, 1, 1, 1, 0.225},
    titleFont = {[[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Bold.ttf]], 16, 'OUTLINE'},
    textFont = {[[Interface\Addons\SharedMedia_MyMedia\font\ArchivoNarrow-Regular.ttf]], 16, 'OUTLINE'},
    titleIndent = 4,
    titleSpacing = 3,
    selectionIndent = 5,
    textIndent = 3,
    textSpacing = 3,
    rewardSize = 24,
  },
  achievement = {
    titleColor = {0, 0.7, 1, 1},
  },
  achievement_account = {
    titleColor = {.35, 0.7, 1, 1},
  },
  daily = {
    titleColor = {0, 0.7, 1, 1},
    titlebg = {'HORIZONTAL', 0, .7, 1, .25,  0, 1, .7, .125},
    textbg = {'HORIZONTAL', 0, .7, 1, .075,    0, 1, .7, .1},
  },
  weekly = {
    titleColor = {.25, 0.7, 1, 1},
    titlebg = {'HORIZONTAL', 0, .35, .7, .25,   0, .35, .7, .125},
    textbg = {'HORIZONTAL', 0, .35, .7, .1,     0, .35, .7, .075 },
  },
  account = {
    titlebg = {'HORIZONTAL', .1, .1, .1, .25, .1, .1, .1, .125},
    textbg = {'HORIZONTAL', .1, .1, .1, 0.4, .1, .1, .1, .085 },
  },
  -- alliance
  faction_1 = {
    titlebg = {'HORIZONTAL', .2, .4, 1, 0.4, .2, .4, 1, .085 },
    textbg = {'HORIZONTAL', .2, .4, 1, 0.4, .2, .4, 1, .085 },
  },
  -- horde
  faction_2 = {
    titlebg = {'HORIZONTAL', .6, 0, 0.4, 0.4,  .6, 0, 0.4, .085 },
    textbg = {'HORIZONTAL', .6, 0, 0.4, 0.4,   .6, 0, 0.4, .085 },
  }
}
T.defaults.Schema.line = {
  default  = {
    textColor = {.5,.75,1},
    textSpacing = 3,
    textIndent = 3,
  },
  completed = {
    textColor = {0, 1, 0}
  },
  failed = {
    textColor = {1,0,0 }
  },
  autocomplete = {
    textColor = {0,1,0 }
  },
  objectColor = {
    textColor = {0,1,1}
  },
  monster = {
    textColor = {1,1,0}
  },
  item = {
    textColor = {1,.25,.5}
  }
}
T.defaults.Schema.widget = {
  progressbar = {

  },
  timer = {

  }
}