From 555ab6217cb66c35fe6150b6a37e3a0405cafd70 Mon Sep 17 00:00:00 2001 From: Robert Jelic <36573031+NoryiE@users.noreply.github.com> Date: Wed, 24 May 2023 20:12:12 +0200 Subject: [PATCH] Image Palette Fix used wrong keys for palettes (color strings instead of 0-15) --- Basalt/objects/BaseFrame.lua | 21 +++++++++++---------- Basalt/objects/Image.lua | 6 +++--- Basalt/objects/MonitorFrame.lua | 19 ------------------- 3 files changed, 14 insertions(+), 32 deletions(-) diff --git a/Basalt/objects/BaseFrame.lua b/Basalt/objects/BaseFrame.lua index dc0f0ac..f04985d 100644 --- a/Basalt/objects/BaseFrame.lua +++ b/Basalt/objects/BaseFrame.lua @@ -57,19 +57,20 @@ return function(name, basalt) return self:setOffset(nil, newYOffset) end, - setPalette = function(self, col, ...) + setPalette = function(self, col, ...) if(self==basalt.getActiveFrame())then if(type(col)=="string")then - colorTheme[col] = ... - termObject.setPaletteColor(type(col)=="number" and col or colors[col], ...) + local col = colors[col] + colorTheme[math.log(col, 2)] = ... + termObject.setPaletteColor(col, ...) elseif(type(col)=="table")then for k,v in pairs(col)do colorTheme[k] = v if(type(v)=="number")then - termObject.setPaletteColor(type(k)=="number" and k or colors[k], v) + termObject.setPaletteColor(2 ^ k, v) else local r,g,b = table.unpack(v) - termObject.setPaletteColor(type(k)=="number" and k or colors[k], r,g,b) + termObject.setPaletteColor(2 ^ k, r,g,b) end end end @@ -105,10 +106,10 @@ return function(name, basalt) end for k,v in pairs(colorTheme)do if(type(v)=="number")then - termObject.setPaletteColor(type(k)=="number" and k or colors[k], v) + termObject.setPaletteColor(k ^ 2, v) else local r,g,b = table.unpack(v) - termObject.setPaletteColor(type(k)=="number" and k or colors[k], r,g,b) + termObject.setPaletteColor(k ^ 2, r,g,b) end end basalt.setMainFrame(self) @@ -197,7 +198,7 @@ return function(name, basalt) end, } - for k,v in pairs({mouse_click={"mouseHandler", true},mouse_up={"mouseUpHandler", false},mouse_drag={"dragHandler", false},mouse_scroll={"scrollHandler", true},mouse_hover={"hoverHandler", false}})do + for _,v in pairs({mouse_click={"mouseHandler", true},mouse_up={"mouseUpHandler", false},mouse_drag={"dragHandler", false},mouse_scroll={"scrollHandler", true},mouse_hover={"hoverHandler", false}})do object[v[1]] = function(self, btn, x, y, ...) if(base[v[1]](self, btn, x, y, ...))then basalt.setActiveFrame(self) @@ -205,7 +206,7 @@ return function(name, basalt) end end - for k,v in pairs({"drawBackgroundBox", "drawForegroundBox", "drawTextBox"})do + for _,v in pairs({"drawBackgroundBox", "drawForegroundBox", "drawTextBox"})do object[v] = function(self, x, y, width, height, symbol) local obx, oby = self:getPosition() local w, h = self:getSize() @@ -215,7 +216,7 @@ return function(name, basalt) end end - for k,v in pairs({"setBG", "setFG", "setText"}) do + for _,v in pairs({"setBG", "setFG", "setText"}) do object[v] = function(self, x, y, str) local obx, oby = self:getPosition() local w, h = self:getSize() diff --git a/Basalt/objects/Image.lua b/Basalt/objects/Image.lua index 115aa02..3f68d45 100644 --- a/Basalt/objects/Image.lua +++ b/Basalt/objects/Image.lua @@ -26,19 +26,19 @@ return function(name, basalt) local p = {} for k,v in pairs(colors)do if(type(v)=="number")then - p[k] = {term.nativePaletteColor(v)} + p[math.log(v, 2)] = {term.nativePaletteColor(v)} end end local globalPalette = bimgLibrary.getMetadata("palette") if(globalPalette~=nil)then for k,v in pairs(globalPalette)do - p[k] = tonumber(v) + p[k] = v end end local localPalette = bimgFrame.getFrameData("palette") if(localPalette~=nil)then for k,v in pairs(localPalette)do - p[k] = tonumber(v) + p[k] = v end end return p diff --git a/Basalt/objects/MonitorFrame.lua b/Basalt/objects/MonitorFrame.lua index 1da103c..5b8c621 100644 --- a/Basalt/objects/MonitorFrame.lua +++ b/Basalt/objects/MonitorFrame.lua @@ -48,25 +48,6 @@ return function(name, basalt) base.render(self) end end, - - show = function(self) - base:getBase().show(self) - basalt.setActiveFrame(self) - for k,v in pairs(colors)do - if(type(v)=="number")then - termObject.setPaletteColor(v, colors.packRGB(term.nativePaletteColor((v)))) - end - end - for k,v in pairs(colorTheme)do - if(type(v)=="number")then - termObject.setPaletteColor(type(k)=="number" and k or colors[k], v) - else - local r,g,b = table.unpack(v) - termObject.setPaletteColor(type(k)=="number" and k or colors[k], r,g,b) - end - end - return self - end, } object.mouseHandler = function(self, btn, x, y, isMon, monitor, ...)