local Randomizer = require 'tetris.randomizers.randomizer'

local EXRandomizer = Randomizer:extend()

function EXRandomizer:initialize()
	self.history = {"S", "Z", "S", "Z"}
end

function EXRandomizer:generatePiece()
	local shapes = {"I", "J", "L", "O", "S", "T", "Z"}
	for i = 1, 6 do
		local x = math.random(7)
		if not inHistory(shapes[x], self.history) or i == 6 then
			return self:updateHistory(shapes[x])
		end
	end
end

function EXRandomizer:updateHistory(shape)
	table.remove(self.history, 1)
	table.insert(self.history, shape)
	return shape
end

function inHistory(piece, history)
	for idx, entry in pairs(history) do
		if entry == piece then
			return true
		end
	end
	return false
end

return EXRandomizer
