From bd332405159811aa73ec97426540715b4b1f6d52 Mon Sep 17 00:00:00 2001 From: Mikayla Fischler Date: Tue, 5 Jul 2022 12:46:31 -0400 Subject: [PATCH] #62 modifing color palette --- coordinator/renderer.lua | 32 ++++++++++++++++++++++++++------ coordinator/ui/style.lua | 15 ++++++++++++++- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/coordinator/renderer.lua b/coordinator/renderer.lua index 8a3df7b..cc4f0df 100644 --- a/coordinator/renderer.lua +++ b/coordinator/renderer.lua @@ -5,6 +5,7 @@ local core = require("graphics.core") local main_view = require("coordinator.ui.layout.main_view") local unit_view = require("coordinator.ui.layout.unit_view") +local style = require("coordinator.ui.style") local renderer = {} @@ -21,12 +22,29 @@ local ui = { } -- reset a display to the "default", but set text scale to 0.5 -local function _reset_display(monitor) +---@param monitor table monitor +---@param recolor? boolean override default color palette +local function _reset_display(monitor, recolor) monitor.setTextScale(0.5) monitor.setTextColor(colors.white) monitor.setBackgroundColor(colors.black) monitor.clear() monitor.setCursorPos(1, 1) + + if recolor then + -- set overridden colors + for i = 1, #style.colors do + monitor.setPaletteColor(style.colors[i].c, style.colors[i].hex) + end + else + -- reset all colors + for _, val in colors do + -- colors api has constants and functions, just get color constants + if type(val) == "number" then + monitor.setPaletteColor(val, term.nativePaletteColor(val)) + end + end + end end -- link to the monitor peripherals @@ -36,13 +54,14 @@ function renderer.set_displays(monitors) end -- reset all displays in use by the renderer -function renderer.reset() +---@param recolor? boolean true to use color palette from style +function renderer.reset(recolor) -- reset primary monitor - _reset_display(engine.monitors.primary) + _reset_display(engine.monitors.primary, recolor) -- reset unit displays for _, monitor in pairs(engine.monitors.unit_displays) do - _reset_display(monitor) + _reset_display(monitor, recolor) end end @@ -69,13 +88,14 @@ function renderer.start_ui() end -- close out the UI -function renderer.close_ui() +---@param recolor? boolean true to restore to color palette from style +function renderer.close_ui(recolor) -- clear root UI elements ui.main_layout = nil ui.unit_layouts = {} -- reset displays - renderer.reset() + renderer.reset(recolor) -- re-draw dmesg engine.dmesg_window.setVisible(true) diff --git a/coordinator/ui/style.lua b/coordinator/ui/style.lua index 772a0a7..400c6db 100644 --- a/coordinator/ui/style.lua +++ b/coordinator/ui/style.lua @@ -5,11 +5,24 @@ local style = {} local cpair = core.graphics.cpair --- MAIN LAYOUT -- +-- GLOBAL -- style.root = cpair(colors.black, colors.lightGray) style.header = cpair(colors.white, colors.gray) +style.colors = { + { + c = colors.green, + hex = 0x7ed788 + }, + { + c = colors.lightGray, + hex = 0xcacaca + } +} + +-- MAIN LAYOUT -- + style.reactor = { -- reactor states states = {