Quantcast
--[[
##############################################################################
_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
        ___\///////////___________\///___________\/////////_____\///////////_#
##############################################################################
S U P E R - V I L L A I N - U I   By: Munglunch                              #
##############################################################################
##########################################################
LOCALIZED LUA FUNCTIONS
##########################################################
]]--
--[[ GLOBALS ]]--
local _G = _G;
local select  = _G.select;
local pairs   = _G.pairs;
local ipairs  = _G.ipairs;
local type    = _G.type;
local string  = _G.string;
local math    = _G.math;
local table   = _G.table;
local GetTime = _G.GetTime;
--[[ STRING METHODS ]]--
local format = string.format;
--[[ MATH METHODS ]]--
local floor = math.floor;  -- Basic
--[[ TABLE METHODS ]]--
local twipe, tsort = table.wipe, table.sort;
--[[
##########################################################
GET ADDON DATA
##########################################################
]]--
local SuperVillain, L = unpack(select(2, ...));
local LSM = LibStub("LibSharedMedia-3.0")
--[[
##########################################################
LOCALIZED GLOBALS
##########################################################
]]--
local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT
local UNIT_NAME_FONT = _G.UNIT_NAME_FONT
local DAMAGE_TEXT_FONT = _G.DAMAGE_TEXT_FONT
local SVUI_CLASS_COLORS = _G.SVUI_CLASS_COLORS
local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS
--[[
##########################################################
PRE VARS/FUNCTIONS
##########################################################
]]--
local function SetFont(fontObject, font, fontSize, fontOutline, fontAlpha, color, shadowColor, offsetX, offsetY)
  if not font then return end;
  fontObject:SetFont(font,fontSize,fontOutline);
  if fontAlpha then
    fontObject:SetAlpha(fontAlpha)
  end;
  if color and type(color) == "table" then
    fontObject:SetTextColor(unpack(color))
  end;
  if shadowColor and type(shadowColor) == "table" then
    fontObject:SetShadowColor(unpack(shadowColor))
  end;
  if offsetX and offsetY then
    fontObject:SetShadowOffset(offsetX,offsetY)
  end;
end;
--[[
##########################################################
CORE FUNCTIONS
##########################################################
]]--
function SuperVillain:MediaUpdate()
  self.Media.color.default  = SuperVillain.db.media.colors.default
  self.Media.color.special  = SuperVillain.db.media.colors.special
  self.Media.bg.pattern     = LSM:Fetch("background", SuperVillain.db.media.textures.pattern)
  self.Media.bg.comic       = LSM:Fetch("background", SuperVillain.db.media.textures.comic)
  self.Media.bg.unitlarge   = LSM:Fetch("background", SuperVillain.db.media.textures.unitlarge)
  self.Media.bg.unitsmall   = LSM:Fetch("background", SuperVillain.db.media.textures.unitsmall)

  local cColor1 = self.Media.color.special
    local cColor2 = self.Media.color.default
    local r1,g1,b1 = cColor1[1], cColor1[2], cColor1[3]
    local r2,g2,b2 = cColor2[1], cColor2[2], cColor2[3]

    self.Media.gradient.special = {"VERTICAL",r1,g1,b1,r2,g2,b2}

    self.Registry:RunCallbacks()
end

function SuperVillain:RefreshSystemFonts()
  local fontsize = self.db.media.fonts.size
  local unicodesize = self.db.media.fonts.unicodeSize

  local NUMBER_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.number);
  local GIANT_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.giant);
  STANDARD_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.default);
  UNIT_NAME_FONT = LSM:Fetch("font", self.db.media.fonts.name);
  DAMAGE_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.combat);
  NAMEPLATE_FONT = STANDARD_TEXT_FONT
  CHAT_FONT_HEIGHTS = {8,9,10,11,12,13,14,15,16,17,18,19,20}
  UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT = fontsize

  SetFont(GameFont_Gigantic, GIANT_TEXT_FONT, fontsize*3, "THICKOUTLINE", 32)
  SetFont(SystemFont_Shadow_Huge1, GIANT_TEXT_FONT, fontsize*1.8, "OUTLINE")
  SetFont(SystemFont_OutlineThick_Huge2, GIANT_TEXT_FONT, fontsize*1.8, "THICKOUTLINE")

  SetFont(QuestFont_Large, UNIT_NAME_FONT, fontsize+4)
  SetFont(ZoneTextString, UNIT_NAME_FONT, fontsize*4.2, "OUTLINE")
  SetFont(SubZoneTextString, UNIT_NAME_FONT, fontsize*3.2, "OUTLINE")
  SetFont(PVPInfoTextString, UNIT_NAME_FONT, fontsize*1.9, "OUTLINE")
  SetFont(PVPArenaTextString, UNIT_NAME_FONT, fontsize*1.9, "OUTLINE")
  SetFont(SystemFont_Shadow_Outline_Huge2, UNIT_NAME_FONT, fontsize*1.8, "OUTLINE")

  SetFont(NumberFont_OutlineThick_Mono_Small, NUMBER_TEXT_FONT, fontsize, "OUTLINE")
  SetFont(NumberFont_Outline_Huge, NUMBER_TEXT_FONT, fontsize*2, "THICKOUTLINE", 28)
  SetFont(NumberFont_Outline_Large, NUMBER_TEXT_FONT, fontsize+4, "OUTLINE")
  SetFont(NumberFont_Outline_Med, NUMBER_TEXT_FONT, fontsize+2, "OUTLINE")
  SetFont(NumberFontNormal, NUMBER_TEXT_FONT, fontsize, "OUTLINE")

  SetFont(GameFontHighlight, STANDARD_TEXT_FONT, fontsize)
  SetFont(GameFontWhite, STANDARD_TEXT_FONT, fontsize, 'OUTLINE', 1, {1,1,1})
  SetFont(GameFontWhiteSmall, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {1,1,1})
  SetFont(GameFontBlack, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {0,0,0})
  SetFont(GameFontBlackSmall, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {0,0,0})
  SetFont(GameFontNormal, STANDARD_TEXT_FONT, fontsize)
  SetFont(QuestFont, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Large, STANDARD_TEXT_FONT, fontsize+2)
  SetFont(GameFontNormalMed3, STANDARD_TEXT_FONT, fontsize+1)
  SetFont(SystemFont_Med1, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Med3, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Outline_Small, STANDARD_TEXT_FONT, fontsize, "OUTLINE")
  SetFont(SystemFont_Shadow_Large, STANDARD_TEXT_FONT, fontsize+2)
  SetFont(SystemFont_Shadow_Med1, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Shadow_Med3, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Shadow_Small, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Small, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_Normal, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_Small, STANDARD_TEXT_FONT, fontsize-2)
  SetFont(FriendsFont_Large, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_UserText, STANDARD_TEXT_FONT, fontsize)

  SetFont(SystemFont_Shadow_Huge3, DAMAGE_TEXT_FONT, 200, "THICKOUTLINE")
  SetFont(CombatTextFont, DAMAGE_TEXT_FONT, 200, "THICKOUTLINE")

  local UNICODE_FONT = self.Media.font.roboto;

  SetFont(GameTooltipHeader, UNICODE_FONT, unicodesize+2)
  SetFont(Tooltip_Med, UNICODE_FONT, unicodesize)
  SetFont(Tooltip_Small, UNICODE_FONT, unicodesize)
  SetFont(GameFontNormalSmall, UNICODE_FONT, unicodesize)
  SetFont(GameFontHighlightSmall, UNICODE_FONT, unicodesize)
  SetFont(NumberFont_Shadow_Med, UNICODE_FONT, unicodesize)
  SetFont(NumberFont_Shadow_Small, UNICODE_FONT, unicodesize)
  SetFont(SystemFont_Tiny, UNICODE_FONT, unicodesize)

  self:UpdateFontTemplates()
end;

function SuperVillain:RefreshAllSystemMedia()
  local fontsize = self.db.media.fonts.size
  local unicodesize = self.db.media.fonts.unicodeSize

  local NUMBER_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.number);
  local GIANT_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.giant);
  STANDARD_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.default);
  UNIT_NAME_FONT = LSM:Fetch("font", self.db.media.fonts.name);
  DAMAGE_TEXT_FONT = LSM:Fetch("font", self.db.media.fonts.combat);
  NAMEPLATE_FONT = STANDARD_TEXT_FONT
  CHAT_FONT_HEIGHTS = {8,9,10,11,12,13,14,15,16,17,18,19,20}
  UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT = fontsize

  SetFont(GameFont_Gigantic, GIANT_TEXT_FONT, fontsize*3, "THICKOUTLINE", 32)
  SetFont(SystemFont_Shadow_Huge1, GIANT_TEXT_FONT, fontsize*1.8, "OUTLINE")
  SetFont(SystemFont_OutlineThick_Huge2, GIANT_TEXT_FONT, fontsize*1.8, "THICKOUTLINE")

  SetFont(QuestFont_Large, UNIT_NAME_FONT, fontsize+4)
  SetFont(ZoneTextString, UNIT_NAME_FONT, fontsize*4.2, "OUTLINE")
  SetFont(SubZoneTextString, UNIT_NAME_FONT, fontsize*3.2, "OUTLINE")
  SetFont(PVPInfoTextString, UNIT_NAME_FONT, fontsize*1.9, "OUTLINE")
  SetFont(PVPArenaTextString, UNIT_NAME_FONT, fontsize*1.9, "OUTLINE")
  SetFont(SystemFont_Shadow_Outline_Huge2, UNIT_NAME_FONT, fontsize*1.8, "OUTLINE")

  SetFont(NumberFont_OutlineThick_Mono_Small, NUMBER_TEXT_FONT, fontsize, "OUTLINE")
  SetFont(NumberFont_Outline_Huge, NUMBER_TEXT_FONT, fontsize*2, "THICKOUTLINE", 28)
  SetFont(NumberFont_Outline_Large, NUMBER_TEXT_FONT, fontsize+4, "OUTLINE")
  SetFont(NumberFont_Outline_Med, NUMBER_TEXT_FONT, fontsize+2, "OUTLINE")
  SetFont(NumberFontNormal, NUMBER_TEXT_FONT, fontsize, "OUTLINE")

  SetFont(GameFontHighlight, STANDARD_TEXT_FONT, fontsize)
  SetFont(GameFontWhite, STANDARD_TEXT_FONT, fontsize, 'OUTLINE', 1, {1,1,1})
  SetFont(GameFontWhiteSmall, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {1,1,1})
  SetFont(GameFontBlack, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {0,0,0})
  SetFont(GameFontBlackSmall, STANDARD_TEXT_FONT, fontsize, 'NONE', 1, {0,0,0})
  SetFont(GameFontNormal, STANDARD_TEXT_FONT, fontsize)
  SetFont(QuestFont, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Large, STANDARD_TEXT_FONT, fontsize+2)
  SetFont(GameFontNormalMed3, STANDARD_TEXT_FONT, fontsize+1)
  SetFont(SystemFont_Med1, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Med3, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Outline_Small, STANDARD_TEXT_FONT, fontsize, "OUTLINE")
  SetFont(SystemFont_Shadow_Large, STANDARD_TEXT_FONT, fontsize+2)
  SetFont(SystemFont_Shadow_Med1, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Shadow_Med3, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Shadow_Small, STANDARD_TEXT_FONT, fontsize)
  SetFont(SystemFont_Small, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_Normal, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_Small, STANDARD_TEXT_FONT, fontsize-2)
  SetFont(FriendsFont_Large, STANDARD_TEXT_FONT, fontsize)
  SetFont(FriendsFont_UserText, STANDARD_TEXT_FONT, fontsize)

  SetFont(SystemFont_Shadow_Huge3, DAMAGE_TEXT_FONT, 200, "THICKOUTLINE")
  SetFont(CombatTextFont, DAMAGE_TEXT_FONT, 200, "THICKOUTLINE")

  local UNICODE_FONT = self.Media.font.roboto;

  SetFont(GameTooltipHeader, UNICODE_FONT, unicodesize+2)
  SetFont(Tooltip_Med, UNICODE_FONT, unicodesize)
  SetFont(Tooltip_Small, UNICODE_FONT, unicodesize)
  SetFont(GameFontNormalSmall, UNICODE_FONT, unicodesize)
  SetFont(GameFontHighlightSmall, UNICODE_FONT, unicodesize)
  SetFont(NumberFont_Shadow_Med, UNICODE_FONT, unicodesize)
  SetFont(NumberFont_Shadow_Small, UNICODE_FONT, unicodesize)
  SetFont(SystemFont_Tiny, UNICODE_FONT, unicodesize)

  self:MediaUpdate()
end;