-- https://git.l--n.de/justuswolff/cc_housebuild/raw/branch/main/src/main.lua if not _G["turtle"] then error("This program only runs on turtles!") end local turtle = _G["turtle"] print("House building system") print("JUFS Technologies (c) 2026 (Justus Wolff)") print("fuel: "..tostring(turtle.getFuelLevel()).."/"..tostring(turtle.getFuelLimit())) function term.setcol(fc, bc) term.setTextColor(fc) term.setBackgroundColor(bc) end local function reset() term.setcol(colors.white, colors.black) term.clear() term.setCursorPos(1,1) end local function incline() local _,y = term.getCursorPos() term.setCursorPos(1,y+1) end local function selopt(options, title) local selected = 1 while true do reset() term.setcol(colors.black, colors.white) term.write(title) for i,v in pairs(options) do incline() if i == selected then term.setcol(colors.black, colors.blue) else term.setcol(colors.white, colors.black) end term.write(v) end local event,key = os.pullEvent("key") if keys.getName(key) == "w" and selected ~= 1 then selected = selected - 1 end if keys.getName(key) == "s" and selected ~= #options then selected = selected + 1 end if keys.getName(key) == "enter" then return selected end end end local function integritycheck() if not fs.exists("designs") then fs.makeDir("designs") end end local function posasstring(...) local positions = {...} local out = "" for _,v in pairs(positions) do out = out .. tostring(v) .. ":" end return out end local function newdesign() local buf = {} local dimensions = { x = 8, z = 8, y = 1 } local currentfloor = 1 while true do -- render buf reset() for x=1,dimensions["x"],1 do for z=1,dimensions["z"],1 do local currentbuf = buf[posasstring(x, currentfloor, z)] if currentbuf then term.setCursorPos(x, z) term.blit(" ", colors.toBlit(colors.white), colors.toBlit(colors.white)) else term.setCursorPos(x, z) term.blit("\127", colors.toBlit(colors.gray), colors.toBlit(colors.black)) end end end -- user input local event = table.pack(os.pullEvent()) if (event[1] == "mouse_click" or event[1] == "mouse_drag") and event[3] > 0 and event[3] <= dimensions["x"] and event[4] > 0 and event[4] <= dimensions["z"] then if event[2] == 1 then -- left button, set buf[posasstring(event[3], currentfloor, event[4])] = true end if event[2] == 2 then -- right button, erase buf[posasstring(event[3], currentfloor, event[4])] = false end end end end while true do integritycheck() local action = selopt({ "New Design", "Print Design" }, "Select Action") if action == 1 then newdesign() end end