local TurtleTestingController = require("controller.turtle_testing_controller")
local AudioTestingController = require("controller.audio_testing_controller")
local ExcavationController = require("controller.excavation_controller")
local AudioController = require("controller.audio_controller")

local controllers = {
	TurtleTestingController:Create(),
	AudioTestingController:Create(),
	ExcavationController:Create(),
	AudioController:Create(),
}

print("Multiple controllers are available:")
print("1: Turtle Testing Mode")
print("2: Audio Testing Mode")
print("3: Volume Excavation")
print("4: Play Bangarang")

local choice = 0
while choice < 1 or choice > #controllers do
	print("Choose a controller by entering its number:")
	choice = tonumber(io.read()) or 0
end

controllers[choice]:Run()

-- TODO: When refueling but chest is missing, wait there until the user puts a chest with fuel
-- TODO: Improve error handling: Don't abort the program in all cases,
--       but wait until the user fixes the issue (e.g. places a chest)

-- TODO: Add shortcuts for the volume excavation:
--       - Tunnel forward 3x2 or 3x3 with specified length
--       - Excavate downwards (quarry) in a square, specify side length
-- TODO: Add controller to build rooms with walls of a specified material
-- TODO: Add a stair building mode (specify side length, min 2x2)
-- TODO: Add configurable trash_list with items that won't be picked up
