It now looks a lot like button.lua.
OC4P6P36KEBO2FIYTKXUQOP6VSQRFONDCLSZDGN7ZNYN23UMNH7AC WYTWSZR3D6HIXT43YUIOFYSYWE66XOKYG25OQIQAO3LEFS62GDAQC LEE7TNZMRETHPOO52OJGLN6X6VMORXZO2SM3VVTU336NFZ4DKCYQC LR4HHCRHSRNJHD625BE5ERN73NBHLWI2IHMFUFCB3Y2AGEDFSXSAC W4EQ6IW4KVNJDAN32RUK7BLGWJB3TKZIE27PLIIGU5ARJPBMVS6QC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC JV27LDDKKY57IEBWGBFPSHEARMOEGLBYGBJD27PDPTNWWYXA4T6AC PUXFYOQ4VNORZQANT2QRXQDFSPWXRTRFMEVMPWL4LWMAPSOSC3EQC ZOGPQR4SBN6CHYKE2SZOYNXN3XDFOBXUFNQCZ53DAQSRKP7DZKPQC QIG72BFJB2ZXK6APGH3K4MFHXBSJDV6VIZFY32G6LBP5P5T4BN6QC NVZTMKERX3NCKNKRYOTAHNVT7CDVHQW3KMVLH35USH5D3TCIQOXQC ZM7NOBRMD5HHA35Y4JDC76EOA2RD4KQOQCPURXYKXA6ABMKOJIGQC IP4LD33DQFWQ4654YPNJRKQ3CNYSHRZPX6U6ZPY7OLE744XX3MEQC VAVXKWZVOFJGWHCWYLTPDKSKKMSJEBKXNKXUW3T6IZAC3HE6HOIQC FIUQJVL2MCC4VKKX7JBT6377TWIGPTUC5NXMUABV5JILB3ZDWZFAC BQTHWI4ATNV7Q7K2Y3BV2MVFUNVNQGAU3QU6EZ54LATEREOKC6CQC UEG224LHBOPWSKOVXTKVAUEL47HET566LJF7ZSWVKMMLBSJWUHFAC LGIEVJE6W72DAIY7NEWDIMPSI6K5GR2M4BREPQ4TYFWCZYGA6MHQC select_settings_slider = function(x,y, mouse_button)local result = falseif on_slider(Settings_font_slider, x,y) thenSelected_slider = Settings_font_slider.nameresult = trueendfor color,slider in pairs(Settings_foreground_sliders) doif on_slider(slider, x,y) thenSelected_slider = slider.nameresult = trueendendfor color,slider in pairs(Settings_background_sliders) doif on_slider(slider, x,y) thenSelected_slider = slider.nameresult = trueendendreturn resultend
update_any_sliders = function(x,y)if Selected_slider == Settings_font_slider.name thenupdate_font_settings(slider_value(Settings_font_slider, x))return trueendfor color,slider in pairs(Settings_foreground_sliders) doif Selected_slider == slider.name thenForeground_color[color] = slider_value(slider, x)return trueendendfor color,slider in pairs(Settings_background_sliders) doif Selected_slider == slider.name thenBackground_color[color] = slider_value(slider, x)return trueendendend
mouse_press_consumed_by_any_slider = function(State, x, y)for name, slider in pairs(State.slider_handlers) doif on_slider(slider, x,y) thenState.selected_slider = name -- used by update across frames; slider_handlers is recreated every framereturn trueendendend
update_sliders = function(State, x)for name, slider in pairs(State.slider_handlers) doif State.selected_slider == name thenslider.update(slider_value(slider, x))breakendendend
slider = function(State, name, params)draw_slider(params)State.slider_handlers[name] = paramsend
local prev = Settings_font_sliderSettings_foreground_sliders = {r = {name='fg/r',
local prev = Global_state.slider_handlers.fontfor _,color in ipairs{'r', 'g', 'b'} doslider(Global_state, 'fg/'..color, {fg=Normal_color,
value=Foreground_color.r,},g = {name='fg/g',x0=prev.x0, x1=prev.x1,y0=y+15,w=prev.w, h=prev.h,lo=0, hi=1,value=Foreground_color.g,},b = {name='fg/b',x0=prev.x0, x1=prev.x1,y0=y+30,w=prev.w, h=prev.h,lo=0, hi=1,value=Foreground_color.b,},}App.color(Normal_color)draw_slider(Settings_foreground_sliders.r)draw_slider(Settings_foreground_sliders.g)draw_slider(Settings_foreground_sliders.b)y = y+50
value=Foreground_color[color],update=function(v) Foreground_color[color] = v end,})y = y+15endy = y+5
value=Background_color.g},b = {name='bg/b',x0 = prev.x0, x1=prev.x1,y0 = y+30,w=prev.w, h=prev.h,lo = 0, hi=1,value = Background_color.b},}App.color(Normal_color)draw_slider(Settings_background_sliders.r)draw_slider(Settings_background_sliders.g)draw_slider(Settings_background_sliders.b)
value=Background_color[color],update=function(v) Background_color[color] = v end,})y = y+15end
if Selected_slider thenupdate_any_sliders(App.mouse_x(), App.mouse_y())end-- main area
update_sliders(Global_state, App.mouse_x())-- == main area