local ecs = require("ECSAPI")
local event = require("event")
local gpu = require("component").gpu
local unicode = require("unicode")
local keyboard = require("keyboard")

local str,freq,speed,scale,bg,fg

-- gpu.setResolution(gpu.maxResolution())
-- ecs.prepareToExit()

local data = ecs.universalWindow("auto", "auto", 30, ecs.windowColors.background, true,
	{"EmptyLine"},
	{"CenterText", 0x880000, "Бегущая строка"},
	{"EmptyLine"},
	{"CenterText", 0x000000, "Для выхода из программы"},
	{"CenterText", 0x000000, "удерживайте Enter"},
	{"EmptyLine"},
	{"Input", 0x262626, 0x880000, "Программист за работой, не мешай, сука!"},
	{"Color", "Цвет фона", 0x000000},
	{"Color", "Цвет текста", 0xFFFFFF},
	{"Slider", 0x262626, 0x880000, 1, 100, 1, "Масштаб: ", "%"},
    {"Slider", 0x262626, 0x880000, 1, 100, 40, "Скорость: ", "/100 FPS"},
	{"EmptyLine"},
	{"Button", {0xbbbbbb, 0xffffff, "OK"}, {0x999999, 0xffffff, "Отмена"}}
)

-- ecs.error(table.unpack(data))
if data[6] == "OK" then
	str = data[1] or "Где текст, сука?"
	bg = tonumber(data[2]) or 0x000000
	fg = tonumber(data[3]) or 0xFFFFFF
	scale = tonumber(data[4])/100 or 0.1
	speed = tonumber(data[5])/100 or 0.4
	freq = 5
else
	return
end

local xOld, yOld = gpu.getResolution()
ecs.setScale(scale)
local xSize, ySize = gpu.getResolution()
gpu.setBackground(bg)
gpu.setForeground(fg)
gpu.fill(1, 1, xSize, ySize, " ")

str = " " .. str .. string.rep(" ", freq)

while true do
	str = unicode.sub(str, 2, -1) .. unicode.sub(str, 1, 1)
	gpu.set(math.ceil(xSize / 2 - unicode.len(str) / 2), math.ceil(ySize / 2), str)
	
	if keyboard.isKeyDown(28) then
		gpu.setResolution(xOld, yOld)
		ecs.prepareToExit()
		return
	end

	local e = event.pull(speed)
	if e == "key_down" or e == "touch" then return end
end











