diff --git a/display.lua b/display.lua index cbacda3..4201e78 100644 --- a/display.lua +++ b/display.lua @@ -38,6 +38,14 @@ end -- DRAWING FUNCTIONS --------------------------------------------- +function display.drawDisconnectButton() + local oldterm = term.redirect(mon) + paintutils.drawFilledBox(20, 17, 28, 19, colors.red) + mon.setCursorPos(21, 18) + mon.write("CLOSE") + term.redirect(oldterm) +end + function display.drawIrisStatus() mon.setCursorPos(1, 19) mon.setBackgroundColor(colors.black) @@ -206,6 +214,13 @@ function display.showConnected(destName, destAddr) mon.write(" ") end + -- Draw disconnect button + local oldterm = term.redirect(mon) + paintutils.drawFilledBox(20, 17, 28, 19, colors.red) + mon.setCursorPos(21, 18) + mon.write("CLOSE") + term.redirect(oldterm) + display.drawIrisStatus() end diff --git a/startup.lua b/startup.lua index 245c4a1..8c8368c 100644 --- a/startup.lua +++ b/startup.lua @@ -98,12 +98,15 @@ local function ParaDisconnect() local dx, dy = 0, 0 _, _, dx, dy = os.pullEvent("monitor_touch") - if (dx ~= 0) and (dy ~= 0) then + -- Only disconnect if clicking the disconnect button (bottom-right corner) + if dy >= 17 and dy <= 19 and dx >= 20 and dx <= 28 then gate.disconnectStargate() redstone.setOutput("top", false) utils.log("Manual disconnect triggered") + return 1 end - return 1 + -- Return nothing to keep waiting if clicked elsewhere + return nil end local function EntityRead() @@ -263,6 +266,7 @@ local function MonitorRemoteIris() mon.setCursorPos(3, 10) mon.write("Connection unsafe") display.drawIrisStatus() + display.drawDisconnectButton() else display.showConnected(destAddressname, destAddress) end @@ -586,6 +590,7 @@ local function handleOutgoingDial() mon.setCursorPos(3, 10) mon.write("Connection unsafe") display.drawIrisStatus() + display.drawDisconnectButton() else -- Remote iris is open or no iris present display.showConnected(destAddressname, destAddress)