Manual iris control
This commit is contained in:
28
display.lua
28
display.lua
@ -48,6 +48,26 @@ function display.drawDisconnectButton()
|
||||
term.redirect(oldterm)
|
||||
end
|
||||
|
||||
function display.drawIrisButtons()
|
||||
if not config.irisEnabled then
|
||||
return
|
||||
end
|
||||
|
||||
local oldterm = term.redirect(mon)
|
||||
|
||||
-- Open iris button (green)
|
||||
paintutils.drawFilledBox(2, 17, 9, 19, colors.green)
|
||||
mon.setCursorPos(3, 18)
|
||||
mon.write("OPEN")
|
||||
|
||||
-- Close iris button (red)
|
||||
paintutils.drawFilledBox(11, 17, 18, 19, colors.red)
|
||||
mon.setCursorPos(12, 18)
|
||||
mon.write("CLOSE")
|
||||
|
||||
term.redirect(oldterm)
|
||||
end
|
||||
|
||||
function display.drawIrisStatus()
|
||||
mon.setCursorPos(1, 19)
|
||||
mon.setBackgroundColor(colors.black)
|
||||
@ -118,6 +138,7 @@ function display.screenWrite(list, fcount, fy)
|
||||
paintutils.drawFilledBox(23, 17, 28, 19, colors.red)
|
||||
mon.setCursorPos(24, 18)
|
||||
mon.write("Back")
|
||||
display.drawIrisButtons()
|
||||
term.redirect(oldterm)
|
||||
|
||||
return fcount, fy
|
||||
@ -157,6 +178,7 @@ function display.selectionTabs()
|
||||
mon.setCursorPos(24, 18)
|
||||
mon.write("Back")
|
||||
|
||||
display.drawIrisButtons()
|
||||
display.drawIrisStatus()
|
||||
term.redirect(oldterm)
|
||||
end
|
||||
@ -194,6 +216,9 @@ function display.showIncoming(addressName, addressString, allowed, reason)
|
||||
mon.setCursorPos(1, 7)
|
||||
mon.write(addressString)
|
||||
end
|
||||
|
||||
display.drawIrisButtons()
|
||||
display.drawIrisStatus()
|
||||
end
|
||||
|
||||
function display.showEntity(entityType, entityName, allowed)
|
||||
@ -253,6 +278,7 @@ function display.showConnected(destName, destAddr)
|
||||
paintutils.drawFilledBox(20, 17, 28, 19, colors.red)
|
||||
mon.setCursorPos(21, 18)
|
||||
mon.write("CLOSE")
|
||||
display.drawIrisButtons()
|
||||
term.redirect(oldterm)
|
||||
|
||||
display.drawIrisStatus()
|
||||
@ -265,6 +291,7 @@ function display.showMainMenu()
|
||||
mon.setCursorPos(9, 1)
|
||||
mon.setBackgroundColor(colors.red)
|
||||
mon.write("press to start")
|
||||
display.drawIrisButtons()
|
||||
display.drawIrisStatus()
|
||||
end
|
||||
|
||||
@ -313,6 +340,7 @@ function display.showPasswordPrompt()
|
||||
mon.setCursorPos(18, 17)
|
||||
mon.write("OK")
|
||||
|
||||
display.drawIrisButtons()
|
||||
term.redirect(oldterm)
|
||||
display.drawIrisStatus()
|
||||
end
|
||||
|
||||
36
handlers.lua
36
handlers.lua
@ -97,6 +97,40 @@ function handlers.handlePasswordInput()
|
||||
return password
|
||||
end
|
||||
|
||||
---------------------------------------------
|
||||
-- IRIS BUTTON HANDLER
|
||||
---------------------------------------------
|
||||
|
||||
function handlers.handleIrisButtons(eventType, side, x, y)
|
||||
-- Only process if not entering password (password handler has higher priority)
|
||||
if state.enteringPassword then
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Only process if iris is enabled
|
||||
if not config.irisEnabled then
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Check if clicking iris buttons (bottom-left area)
|
||||
if y >= 17 and y <= 19 then
|
||||
-- Open button (2-9)
|
||||
if x >= 2 and x <= 9 then
|
||||
utils.openIris()
|
||||
display.drawIrisStatus()
|
||||
return "iris_opened"
|
||||
end
|
||||
-- Close button (11-18)
|
||||
if x >= 11 and x <= 18 then
|
||||
utils.closeIris()
|
||||
display.drawIrisStatus()
|
||||
return "iris_closed"
|
||||
end
|
||||
end
|
||||
|
||||
return nil -- Not an iris button click
|
||||
end
|
||||
|
||||
---------------------------------------------
|
||||
-- DISCONNECT BUTTON HANDLER
|
||||
---------------------------------------------
|
||||
@ -169,6 +203,7 @@ end
|
||||
|
||||
function handlers.handleMessage(eventType, side, message)
|
||||
state.lastReceivedMessage = message
|
||||
utils.debug("Message Received: " .. message)
|
||||
return "message_received"
|
||||
end
|
||||
|
||||
@ -200,6 +235,7 @@ function handlers.setupConnectionHandlers()
|
||||
-- Clear any existing handlers
|
||||
events.clearHandlers()
|
||||
-- Register all handlers with their priorities
|
||||
events.registerHandler("monitor_touch", handlers.handleIrisButtons, events.PRIORITY.DISCONNECT_BUTTON) -- Same priority as disconnect
|
||||
events.registerHandler("monitor_touch", handlers.handleDisconnectButton, events.PRIORITY.DISCONNECT_BUTTON)
|
||||
events.registerHandler("monitor_touch", handlers.handleDefaultClick, events.PRIORITY.DEFAULT) -- Lowest priority - returns coordinates
|
||||
events.registerHandler("stargate_incoming_wormhole", handlers.handleActivation, events.PRIORITY.ACTIVATION)
|
||||
|
||||
Reference in New Issue
Block a user