diff --git a/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua b/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua index 0b86935da..2fd1379f6 100644 --- a/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua +++ b/src/main/resources/assets/hbm/disks/pwrangler/usr/bin/PWRangler.lua @@ -3,7 +3,23 @@ local event = require "event" local gpu = component.gpu local call = component.invoke -colorGradient = {0x00FF00, 0x6BEE00, 0x95DB00, 0xB0C800, 0xC5B400, 0xD79F00, 0xE68700, 0xF46900, 0xFC4700, 0xFF0000} +local function lerp(a, b, t) + return a + (b - a) * t +end + +local function gradient(startColor, endColor, steps) + local colors = {} + for i = 0, steps-1 do + local t = i / (steps-1) + local r = math.floor(lerp((startColor >> 16) & 0xFF, (endColor >> 16) & 0xFF, t)) + local g = math.floor(lerp((startColor >> 8) & 0xFF, (endColor >> 8) & 0xFF, t)) + local b = math.floor(lerp(startColor & 0xFF, endColor & 0xFF, t)) + table.insert(colors, (r << 16) | (g << 8) | b) + end + return colors +end + +colorGradient = gradient(0x00FF00, 0xFF0000, 10) coreHeatESTOP = true coolantLossESTOP = true @@ -57,13 +73,11 @@ end buttons = {} -buttons[1] = newButton(61, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+1) end) -buttons[2] = newButton(68, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+5) end) -buttons[3] = newButton(75, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+10) end) - -buttons[4] = newButton(61, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-1) end) -buttons[5] = newButton(68, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-5) end) -buttons[6] = newButton(75, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-10) end) +local deltas = {1,5,10} -- This is very bad. We need new buttons +for i, d in ipairs(deltas) do + buttons[i] = newButton(61+(i-1)*7, 6, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")+d) end) + buttons[i+3] = newButton(61+(i-1)*7, 9, 6, 2, 0xFFFFFF, 0xAAAAAA, function() component.proxy(pwrController).setLevel(call(pwrController, "getLevel")-d) end) +end buttons[7] = newButton(82, 6, 11, 5, 0xFF0000, 0xAA0000, function() component.proxy(pwrController).setLevel(100) end) buttons[8] = newButton(94, 6, 12, 2, 0x00FF00, 0x00AA00, function() coreHeatESTOP = not coreHeatESTOP if coreHeatESTOP == true then buttons[8].colorUp = 0x00FF00 buttons[8].colorDown = 0x00AA00 else buttons[8].colorUp = 0xFF0000 buttons[8].colorDown = 0xAA0000 end end) @@ -165,11 +179,9 @@ gpu.fill(99,15,7,1,"█") --HotDelta gpu.set(66,19,"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃") -gpu.fill(66,22,19,1,"█") -gpu.fill(66,24,19,1,"█") -gpu.fill(66,26,19,1,"█") -gpu.fill(66,28,19,1,"█") -gpu.fill(66,30,19,1,"█") +for (y=22,30,2) do + gpu.fill(66,y,19,1,"█") +end gpu.set(66,32,"┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃") gpu.setForeground(0xAAAAAA) @@ -213,11 +225,9 @@ while (runSig == true) do gpu.setBackground(0xFFFFFF) gpu.setForeground(0xFFFFFF) - gpu.fill(66,22,19,1,"█") - gpu.fill(66,24,19,1,"█") - gpu.fill(66,26,19,1,"█") - gpu.fill(66,28,19,1,"█") - gpu.fill(66,30,19,1,"█") + for (y = 22, 30, 2) do + gpu.fill(66,y,19,1,"█") + end gpu.fill(92,15,6,5,"█") gpu.fill(92,32,6,5,"█") @@ -242,8 +252,8 @@ while (runSig == true) do gpu.fill(92,32+(5-coldCoolantLevel//25600),6,coldCoolantLevel//25600, "█") gpu.setForeground(0x000000) - gpu.set(66,22,tostring(fullCoreHeat)) - gpu.set(66,24,tostring(fullHullHeat)) + gpu.set(66,22,tostring(fullCoreHeat)) -- What the heck? This is too declarative! + gpu.set(66,24,tostring(fullHullHeat)) -- Will fix that garbage later :P gpu.set(66,26,tostring(call(pwrController, "getFlux"))) gpu.set(66,28,tostring(coldCoolantLevel)) gpu.set(66,30,tostring(hotCoolantLevel)) @@ -271,4 +281,4 @@ end event.ignore("touch", buttonPress) event.ignore("drop", buttonRelease) -gpu.fill(1,1,160,160," ") \ No newline at end of file +gpu.fill(1,1,160,160," ")