local mod = StarTip:NewModule("Icons")
mod.name = "Icons"
mod.toggled = true
mod.defaultOff = true
local LibBuffer = LibStub("LibScriptableUtilsBuffer-1.0")
local LibCore = LibStub("LibScriptableLCDCore-1.0")
local LibTimer = LibStub("LibScriptableUtilsTimer-1.0")
local PluginUtils = LibStub("LibScriptablePluginUtils-1.0")
local WidgetIcon = LibStub("LibScriptableWidgetIcon-1.0")
local _G = _G
local GameTooltip = _G.GameTooltip
local StarTip = _G.StarTip
local UIParent = _G.UIParent
local textures = {}
local textures = {
[0] = "Interface\\Addons\\StarTip\\Media\\black.blp",
[1] = "Interface\\Addons\\StarTip\\Media\\white.blp",
[2] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-0.blp',
[3] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-1.blp',
[4] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-2.blp',
[5] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-3.blp',
[6] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-4.blp',
[7] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-5.blp',
[8] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-6.blp',
[9] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-7.blp',
[10] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-8.blp',
[11] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-9.blp',
[12] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-10.blp',
[13] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-11.blp',
[14] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-12.blp',
[15] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-13.blp',
[16] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-14.blp',
[17] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-15.blp',
[18] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-16.blp',
[19] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-17.blp',
[20] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-18.blp',
[21] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-19.blp',
[22] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-20.blp',
[23] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-21.blp',
[24] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-22.blp',
[25] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-23.blp',
[26] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-24.blp',
[27] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-25.blp',
[28] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-26.blp',
[29] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-27.blp',
[30] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-28.blp',
[31] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-29.blp',
[32] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-30.blp',
[33] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-31.blp',
[34] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-32.blp',
[35] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-33.blp',
[36] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-34.blp',
[37] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-35.blp',
[38] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-36.blp',
[39] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-37.blp',
[40] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-38.blp',
[41] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-39.blp',
[42] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-40.blp',
[43] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-41.blp',
[44] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-42.blp',
[45] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-43.blp',
[46] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-44.blp',
[47] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-45.blp',
[48] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-46.blp',
[49] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-47.blp',
[50] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-48.blp',
[51] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-49.blp',
[52] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-50.blp',
[53] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-51.blp',
[54] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-52.blp',
[55] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-53.blp',
[56] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-54.blp',
[57] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-55.blp',
[58] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-56.blp',
[59] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-57.blp',
[60] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-58.blp',
[61] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-59.blp',
[62] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-60.blp',
[63] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-61.blp',
[64] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-62.blp',
[65] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-63.blp',
[66] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-64.blp',
[67] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-65.blp',
[68] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-66.blp',
[69] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-67.blp',
[70] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-68.blp',
[71] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-69.blp',
[72] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-70.blp',
[73] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-71.blp',
[74] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-72.blp',
[75] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-73.blp',
[76] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-74.blp',
[77] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-75.blp',
[78] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-76.blp',
[79] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-77.blp',
[80] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-78.blp',
[81] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-79.blp',
[82] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-80.blp',
[83] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-81.blp',
[84] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-82.blp',
[85] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-83.blp',
[86] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-84.blp',
[87] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-85.blp',
[88] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-86.blp',
[89] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-87.blp',
[90] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-88.blp',
[91] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-89.blp',
[92] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-90.blp',
[93] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-91.blp',
[94] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-92.blp',
[95] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-93.blp',
[96] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-94.blp',
[97] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-95.blp',
[98] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-96.blp',
[99] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-97.blp',
[100] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-98.blp',
[101] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-99.blp',
[102] = 'Interface\\Addons\\StarTip\\Media\\gradient\\gradient-100.blp',
}
local environment = {}
local update
local options = {
}
local foo = 200
local defaults = {
profile = {
cols = 2,
rows = 1,
yres = 8,
xres = 7,
size = 15,
update = 0,
icons = {
[1] = {
["name"] = "Blob",
["enabled"] = false,
["bitmap"] = {
["row1"] = ".....|.....|.....",
["row2"] = ".....|.....|.***.",
["row3"] = ".....|.***.|*...*",
["row4"] = "..*..|.*.*.|*...*",
["row5"] = ".....|.***.|*...*",
["row6"] = ".....|.....|.***.",
["row7"] = ".....|.....|.....",
["row8"] = ".....|.....|....."
},
["speed"] = foo,
["row"] = 1,
["col"] = 1
},
[2] = {
["enabled"] = false,
["name"] = "EKG",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....",
["row2"] = ".....|....*|...*.|..*..|.*...|*....|.....|.....",
["row3"] = ".....|....*|...*.|..*..|.*...|*....|.....|.....",
["row4"] = ".....|....*|...**|..**.|.**..|**...|*....|.....",
["row5"] = ".....|....*|...**|..**.|.**..|**...|*....|.....",
["row6"] = ".....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....",
["row7"] = "*****|*****|****.|***..|**..*|*..**|..***|.****",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|....."
},
["speed"] = foo,
["row"] = 1,
["col"] = 0
},
[3] = {
["name"] = "Hearts",
["enabled"] = false,
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....",
["row2"] = ".*.*.|.....|.*.*.|.....|.....|.....",
["row3"] = "*****|.*.*.|*****|.*.*.|.*.*.|.*.*.",
["row4"] = "*****|.***.|*****|.***.|.***.|.***.",
["row5"] = ".***.|.***.|.***.|.***.|.***.|.***.",
["row6"] = ".***.|..*..|.***.|..*..|..*..|..*..",
["row7"] = "..*..|.....|..*..|.....|.....|.....",
["row8"] = ".....|.....|.....|.....|.....|....."
},
["speed"] = foo,
["row"] = 0,
["col"] = 1
},
[4] = {
["name"] = "Heartbeat",
["bitmap"] = {
["row1"] = ".....|.....",
["row2"] = ".*.*.|.*.*.",
["row3"] = "*****|*.*.*",
["row4"] = "*****|*...*",
["row5"] = ".***.|.*.*.",
["row6"] = ".***.|.*.*.",
["row7"] = "..*..|..*..",
["row8"] = ".....|....."
},
["speed"] = foo,
},
[5] = {
["name"] = "Diamonds",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|..*..|.....|.....|.....",
["row2"] = ".....|.....|.....|..*..|.*.*.|..*..|.....|.....",
["row3"] = ".....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....",
["row4"] = ".....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..",
["row5"] = ".....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....",
["row6"] = ".....|.....|.....|..*..|.*.*.|..*..|.....|.....",
["row7"] = ".....|.....|.....|.....|..*..|.....|.....|.....",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|....."
},
["speed"] = foo,
},
[6] = {
["name"] = "Rain",
["bitmap"] = {
["row1"] = "...*.|.....|.....|.*...|....*|..*..|.....|*....",
["row2"] = "*....|...*.|.....|.....|.*...|....*|..*..|.....",
["row3"] = ".....|*....|...*.|.....|.....|.*...|....*|..*..",
["row4"] = "..*..|.....|*....|...*.|.....|.....|.*...|....*",
["row5"] = "....*|..*..|.....|*....|...*.|.....|.....|.*...",
["row6"] = ".*...|....*|..*..|.....|*....|...*.|.....|.....",
["row7"] = ".....|.*...|....*|..*..|.....|*....|...*.|.....",
["row8"] = ".....|.....|.*...|....*|..*..|.....|*....|...*."
},
["speed"] = foo,
["row"] = 0,
["col"] = 0
},
[7] = {
["name"] = "Squirrel",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....",
["row2"] = ".....|.....|.....|.....|.....|.....",
["row3"] = ".....|.....|.....|.....|.....|.....",
["row4"] = "**...|.**..|..**.|...**|....*|.....",
["row5"] = "*****|*****|*****|*****|*****|*****",
["row6"] = "...**|..**.|.**..|**...|*....|.....",
["row7"] = ".....|.....|.....|.....|.....|.....",
["row8"] = ".....|.....|.....|.....|.....|....."
},
["speed"] = foo,
},
[8] = {
["enabled"] = true,
["name"] = "Health",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|}",
["row2"] = ".+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.***.|",
["row3"] = "+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|*****|",
["row4"] = "+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|*****|",
["row5"] = "+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|*****|",
["row6"] = ".+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|.***.|",
["row7"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|"
},
["speed"] = 500,
["script"] = [[
return Health(unit)
]],
["max"] = [[
return MaxHealth(unit)
]],
["min"] = [[
return 0
]],
["fg_color"] = [[
return Health(unit) / MaxHealth(unit)
]],
["row"] = 0,
["col"] = 0
},
[9] = {
["enabled"] = true,
["name"] = "Power",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|}",
["row2"] = ".+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.***.|",
["row3"] = "+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|*****|",
["row4"] = "+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|*****|",
["row5"] = "+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|*****|",
["row6"] = ".+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|.***.|",
["row7"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|"
},
["speed"] = 500,
["script"] = [[
return Power(unit)
]],
["max"] = [[
return MaxPower(unit)
]],
["min"] = [[
return 0
]],
["fg_color"] = [[
return Power(unit) / MaxPower(unit)
]],
["row"] = 0,
["col"] = 1
},
[10] = {
["enabled"] = false,
["name"] = "Clock",
["bitmap"] = {
["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|",
["row2"] = ".***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|",
["row3"] = "*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|",
["row4"] = "*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|",
["row5"] = "*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|",
["row6"] = ".***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|",
["row7"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|"
},
["speed"] = foo,
["row"] = 0,
["col"] = 0
},
[11] = {
["name"] = "Wave",
["bitmap"] = {
["row1"] = "..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**",
["row2"] = ".*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..",
["row3"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...",
["row4"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...",
["row5"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...",
["row6"] = ".....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....",
["row7"] = ".....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....",
["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|....."
},
["speed"] = foo,
},
}
}
}
local function checkUnit()
if not UnitExists(StarTip.unit) then
end
end
function mod:OnInitialize()
self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults)
StarTip:SetOptionsDisabled(options, true)
if self.db.profile.update > 0 then
self.timer = LibTimer:New("Icons", 100, true, update)
end
self.unitTimer = LibTimer:New("Icons.unitTimer", 100, true, checkUnit)
end
local function copy(tbl)
local newTbl = {}
for k, v in pairs(tbl) do
if type(v) == "table" then
v = copy(v)
end
newTbl[k] = v
end
return newTbl
end
local draw
local function createIcons()
if type(mod.icons) ~= "table" then mod.icons = {} end
for k, icon in pairs(mod.db.profile.icons) do
if icon.enabled then
local icon = WidgetIcon:New(mod.core, "icon", copy(icon), icon.row or 0, icon.col or 0, icon.layer or 0, StarTip.db.profile.errorLevel, draw)
icon:SetupChars()
tinsert(mod.icons, icon)
end
end
end
function mod:OnEnable()
self.core = LibCore:New(mod, StarTip.core.environment, "StarTip.Icons", {["StarTip.Icons"] = {}}, nil, StarTip.db.profile.errorLevel)
self.core.lcd = {LCOLS=self.db.profile.cols, LROWS=self.db.profile.rows, XRES=self.db.profile.xres, YRES=self.db.profile.yres, specialChars = {}}
self.buffer = LibBuffer:New("Icons", self.core.lcd.LCOLS * self.core.lcd.LROWS * self.core.lcd.YRES * self.core.lcd.XRES, 0, StarTip.db.profile.errorLevel)
StarTip:SetOptionsDisabled(options, false)
createIcons()
-- no need to start the timer
end
function mod:OnDisable()
StarTip:SetOptionsDisabled(options, true)
if self.timer then
self.timer:Stop()
end
if self.core then
self.core:Del()
end
end
function mod:GetOptionsbleh()
for i, icon in ipairs(self.db.profile.icons) do
options.icons.args["Icon"..i] = {
enabled = {
name = "Enabled",
type = "toggle",
get = function() return icon.enabled end,
set = function(info, val) icon.enabled = val end,
order = 1
},
speed = {
name = "Speed",
type = "input",
pattern = "%d",
get = function() return icon.speed end,
set = function(info, val) icon.speed = val end,
order = 2
},
bitmap = {
name = "Bitmap",
type = "input",
multiline = true,
width = "full",
get = function() return icon.bitmap end,
set = function(info, val) icon.bitmap = val end,
order = 3
}
}
end
return options
end
function mod:ClearIcons()
for k, widget in pairs(mod.icons) do
widget:Del()
end
wipe(mod.icons)
end
function draw(widget)
local lcd = widget.visitor.lcd
local row = widget.row
local col = widget.col
local layer = widget.layer
local n = row * lcd.YRES * lcd.LCOLS + col * lcd.XRES
local icon = widget.icon
local chr = lcd.specialChars[widget.start + widget.index]
for y = 0 , lcd.YRES - 1 do
local mask = bit.lshift(1, lcd.XRES)
for x = 0, lcd.XRES - 1 do
local n = (row * lcd.YRES + y) * lcd.LCOLS * lcd.XRES + col * lcd.XRES + x
--local n = (row + y) * lcd.LCOLS * lcd.XRES + col + x
mask = bit.rshift(mask, 1)
if bit.band(chr[y + 1], mask) == 0 then
if widget.bg_color then
mod.buffer.buffer[n] = floor(widget.bg.r * 100) + 2
else
mod.buffer.buffer[n] = 0
end
else
if widget.fg_color then
mod.buffer.buffer[n] = floor(widget.fg.r * 100) + 2
else
mod.buffer.buffer[n] = 1
end
end
end
end
update()
end
function update()
local lcd = mod.core.lcd
local text1 = format('|T%s:%d|t', textures[0], mod.db.profile.size or 10)
local buffers = {}
for row = 0, lcd.LROWS - 1 do
for col = 0, lcd.LCOLS - 1 do
for y = 0, lcd.YRES - 1 do
for x = 0, lcd.XRES - 1 do
local n = (row * lcd.YRES + y) * lcd.LCOLS * lcd.XRES + col * lcd.XRES + x
--local n = (row + y) * lcd.LCOLS * lcd.XRES + col + x
local color = mod.buffer.buffer[n] or 0
local text = format('|T%s:%d|t', textures[color] or textures[0], mod.db.profile.size or 10)
if not buffers[row * lcd.YRES + y] then
buffers[row * lcd.YRES + y] = LibBuffer:New("tmp.icon", lcd.LCOLS * lcd.XRES, text1)
end
buffers[row * lcd.YRES + y]:Replace(col * lcd.XRES + x, text)
--StarTip.leftLines[row * lcd.YRES + y]:SetText(mod.lines[row * lcd.YRES])
end
end
end
end
for row = 0, lcd.LROWS * lcd.YRES - 1 do
--buffers[row]:Replace(lcd.LCOLS, StarTip.leftLines[row + 2]:GetText() or "")
end
for row = 0, lcd.LROWS - 1 do
for col = 0, lcd.LCOLS do
for y = 0, lcd.YRES - 1 do
for x = 0, lcd.XRES - 1 do
local n = (row * lcd.YRES + y) * lcd.LCOLS * lcd.XRES + col * lcd.XRES + x
--local n = (row + y) * lcd.LCOLS * lcd.XRES + col + x
if row * lcd.YRES + y + 2 > GameTooltip:NumLines() then
GameTooltip:AddDoubleLine(' ', ' ')
end
StarTip.leftLines[row * lcd.YRES + y + 2]:SetText(buffers[row * lcd.YRES + y]:AsString())
end
end
end
end
if UnitExists(StarTip.unit) then
GameTooltip:Show()
end
for k, buffer in pairs(buffers) do
buffer:Del()
end
end
function mod:SetUnit()
first = true
for k, icon in pairs(self.icons or {}) do
icon:Start()
end
if self.timer then
self.timer:Start()
end
mod.lines = mod.lines or {}
wipe(mod.lines)
for i = 0, mod.core.lcd.LCOLS * mod.core.lcd.YRES do
mod.lines[i] = StarTip.leftLines[i + 1]:GetText()
end
self.unitTimer:Start()
end
function mod:OnHide()
for k, icon in pairs(self.icons or {}) do
icon:Stop()
end
if self.timer then
self.timer:Stop()
end
self.unitTimer:Stop()
end