local showUI = true local function getTextY(line) return 15 + 25 * line end local function addLineToTextBox(box, text, color) color = color or {1, 1, 1} box.lines = box.lines or {} box.lines[#box.lines + 1] = {text=text, color=color} local font = love.graphics.getFont() local width = font:getWidth(text) local boxWidth = box.width or 0 if width > boxWidth then box.width = width end end local function drawTextBox(box, x, y, margin, padding) x = x or 0 y = y or 0 margin = margin or 10 padding = padding or 3 local font = love.graphics.getFont() local lineHeight = font:getHeight() + padding love.graphics.setColor(0, 0, 0, 0.5) love.graphics.rectangle("fill", x, y, box.width + margin * 2, #box.lines * lineHeight - padding + margin * 2) love.graphics.setColor(1, 1, 1) for index, line in ipairs(box.lines) do love.graphics.setColor(line.color) love.graphics.print(line.text, x + margin, y + margin + (index - 1) * lineHeight) end end function love.draw2() local width, height = love.graphics.getDimensions() -- Set background love.graphics.setBackgroundColor(0, 0, 0) love.graphics.setColor(1, 1, 1) -- Draw camera feed if BotState.camfeed then local imageWidth = BotState.camfeed:getWidth() local imageHeight = BotState.camfeed:getHeight() local scaleWidth = width / imageWidth local scaleHeight = height / imageHeight local scale = math.min(scaleWidth, scaleHeight) local scaledWidth = imageWidth * scale local scaledHeight = imageHeight * scale love.graphics.setShader(CamShader) love.graphics.draw(BotState.camfeed, (width - scaledWidth) / 2, (height - scaledHeight) / 2, 0, scale, scale ) love.graphics.setShader(nil) end local textbox = {} if UIState.showUI then -- Draw time local time if BotState.lastMessage == 0 then time = "Never" else time = math.floor(love.timer.getTime() - BotState.lastMessage) .. "s ago" end addLineToTextBox(textbox, "Last message received: " .. time) -- Draw cpu battery local color = {1, 1, 1} if BotState.cpuBatteryCorrected == nil or BotState.cpuBatteryCorrected <= 3 then color = {1, 0, 0} end addLineToTextBox(textbox, "CPU Batt: ".. formatSafe("%.02f (%.02f) V", BotState.cpuBattery, BotState.cpuBatteryCorrected), color) -- Draw servo battery local color = {1, 1, 1} if BotState.servoBatteryCorrected == nil or BotState.servoBatteryCorrected <= 3 then color = {1, 0, 0} end addLineToTextBox(textbox, "Servo Batt: ".. formatSafe("%.02f (%.02f) V", BotState.servoBattery, BotState.servoBatteryCorrected), color) -- Draw latency love.graphics.setColor(1, 1, 1) addLineToTextBox(textbox, "Latency: ".. Ping.latency) drawTextBox(textbox) end end