local druid = require("druid.druid")
local const = require("druid.const")


function init(self)
	self.druid = druid.new(self)

	self.texts = {
		self.druid:new_text("text_scale", nil, const.TEXT_ADJUST.DOWNSCALE),
		self.druid:new_text("text_trim", nil, const.TEXT_ADJUST.TRIM),
		self.druid:new_text("text_no_adjust", nil, const.TEXT_ADJUST.NO_ADJUST),
		self.druid:new_text("text_scale_limited", nil, const.TEXT_ADJUST.DOWNSCALE_LIMITED)
			:set_minimal_scale(0.5),
		self.druid:new_text("text_scroll", nil, const.TEXT_ADJUST.SCROLL),
		self.druid:new_text("text_scroll_scale", nil, const.TEXT_ADJUST.SCALE_THEN_SCROLL)
			:set_minimal_scale(0.5)
	}

	local initial_texts = {}
	local text_sizes = {}
	for _, text in pairs(self.texts) do
		initial_texts[text] = text.last_value
		text_sizes[text] = 0
	end


	timer.delay(0.25, true, function()
		for _, text in pairs(self.texts) do
			local text_string = string.sub(initial_texts[text], 1, text_sizes[text])
			text_sizes[text] = text_sizes[text] + 1

			if text_sizes[text] > #initial_texts[text] then
				text_sizes[text] = 0
			end

			text:set_to(text_string)
		end
	end)
end


function final(self)
	self.druid:final()
end


function update(self, dt)
	self.druid:update(dt)
end


function on_message(self, message_id, message, sender)
	self.druid:on_message(message_id, message, sender)
end


function on_input(self, action_id, action)
	return self.druid:on_input(action_id, action)
end
