-- mining_menu.lua
local settings = {
lang = "de",
length = 10,
width = 1,
depth = 10,
autoRefuel = true,
autoDump = true
}
local function loadSettings()
if fs.exists("mining_config") then
local f = fs.open("mining_config", "r")
settings = textutils.unserialize(f.readAll())
f.close()
end
end
local function saveSettings()
local f = fs.open("mining_config", "w")
f.write(textutils.serialize(settings))
f.close()
end
local texts = {
["de"] = {
start = "Start",
settings = "Einstellungen",
language = "Sprache",
length = "Länge",
width = "Breite",
depth = "Tiefe",
refuel = "Autom. Auftanken",
dump = "In Truhe ablegen",
back = "Zurück",
run = "Mining gestartet..."},
["en"] = {
start = "Start",
settings = "Settings",
language = "Language",
length = "Length",
width = "Width",
depth = "Depth",
refuel = "Auto Refuel",
dump = "Dump to Chest",
back = "Back",
run = "Mining started..."
}
}
local function readNumber(prompt)
print(prompt)
local input = read()
return tonumber(input) or 1
end
local function toggleOption(key)
settings[key] = not settings[key]
end
local function selectLanguage()
print("1 - Deutsch")
print("2 - English")
local choice = read()
if choice == "1" then settings.lang = "de"
elseif choice == "2" then settings.lang = "en"
end
end
local function showSettings()
local t = texts[settings.lang]
while true do
term.clear()
print("=== " .. t.settings .. " ===")
print("1 - " .. t.length .. ": " .. settings.length)
print("2 - " .. t.width .. ": " .. settings.width)
print("3 - " .. t.depth .. ": " .. settings.depth)
print("4 - " .. t.refuel .. ": " .. tostring(settings.autoRefuel))
print("5 - " .. t.dump .. ": " .. tostring(settings.autoDump))
print("6 - " .. t.back)
local choice = read()
if choice == "1" then settings.length = readNumber(t.length)
elseif choice == "2" then settings.width = readNumber(t.width)
elseif choice == "3" then settings.depth = readNumber(t.depth)
elseif choice == "4" then toggleOption("autoRefuel")
elseif choice == "5" then toggleOption("autoDump")
elseif choice == "6" then return
end
saveSettings()
end
end
local function refuelIfNeeded()
if turtle.getFuelLevel() < 100 and settings.autoRefuel then
for i = 1, 16 do
turtle.select(i)
if turtle.refuel(0) then
turtle.refuel()
break
end
end
end
end
local function dumpInventory()
if not settings.autoDump then return end
for i = 1, 16 do
turtle.select(i)
turtle.drop()
end
end
local function mine()
local t = texts[settings.lang]
term.clear()
print(t.run)
for w = 1, settings.width do
for l = 1, settings.length do
refuelIfNeeded()
while turtle.detect() do turtle.dig() end
turtle.forward()
end
if w < settings.width then
if w % 2 == 1 then
turtle.turnRight()
while turtle.detect() do turtle.dig() end
turtle.forward()
turtle.turnRight()
else
turtle.turnLeft()
while turtle.detect() do turtle.dig() end
turtle.forward()
turtle.turnLeft()
end
end
end
for d = 1, settings.depth - 1 do
turtle.digDown()
turtle.down()
mine()
end
for _ = 1, settings.depth - 1 do
turtle.up()
end
dumpInventory()
end
local function mainMenu()
loadSettings()
while true do
local t = texts[settings.lang]
term.clear()
print("=== Mining Turtle ===")
print("1 - " .. t.start)
print("2 - " .. t.settings)
print("3 - " .. t.language)
local choice = read()
if choice == "1" then mine()
elseif choice == "2" then showSettings()
elseif choice == "3" then selectLanguage()
end
end
end
Comments