Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Main Controller Script
- local nodeManager = require("nodeManager")
- local buttonManager = require("buttonManager")
- local stateManager = require("stateManager")
- local networkManager = require("networkManager")
- -- Variables
- local PROTOCOL = "mobFarm"
- local LOCAL_ID = "controller"
- local monitor = peripheral.find("monitor")
- if not monitor then error("Monitor not found!") end
- if not rednet.isOpen() then error("Rednet is not open! Check the modem.") end
- -- Configuration
- monitor.setTextScale(0.5)
- monitor.clear()
- -- Host controller
- rednet.host(PROTOCOL, LOCAL_ID)
- -- Initialization
- nodeManager.initNodes() -- Initialize node structure
- stateManager.loadNodeStates(nodeManager.getNodes()) -- Load saved node states
- networkManager.initNetwork(PROTOCOL, LOCAL_ID) -- Initialize network
- -- Main Loop
- parallel.waitForAll(
- networkManager.handleIncomingMessages, -- Receive and process messages
- nodeManager.validateNodeStates, -- Ensure nodes match expected states
- buttonManager.handleMouseClicks, -- Handle monitor clicks for buttons
- function()
- -- Monitor update loop
- while true do
- buttonManager.drawButtons(monitor, nodeManager.getNodes()) -- Refresh monitor UI
- sleep(1)
- end
- end,
- function()
- -- Controller commands loop
- while true do
- write("> ")
- local input = read()
- if input == "update" then
- networkManager.initiateUpdate(nodeManager.getNodes())
- else
- print("Unknown command. Available commands: update")
- end
- end
- end
- )
Advertisement
Add Comment
Please, Sign In to add comment