local zX = 12
local zY = 6
local t = Def.ActorFrame { FOV=90;
};
for idx, diff in pairs(Difficulty) do -- 0, Difficulty_Beginner
	t[#t+1] = Def.ActorFrame {
	Def.Quad {
		InitCommand=cmd(zoomto,zX,zY;diffuse,DarkColor(DifficultyColor(diff)));
		ShowCommand=cmd(stoptweening;linear,0.1;diffusealpha,1;y,0;);
		HideCommand=cmd(stoptweening;linear,0.1;diffusealpha,0.25;y,4;);
		BeginCommand=cmd(x,16*idx);

		SetCommand=function(self)
			local song = GAMESTATE:GetCurrentSong();
			if not song then
				self:playcommand("Hide");
				return;
			end;
			local st = GAMESTATE:GetCurrentStyle():GetStepsType();
			local bHasStepsTypeAndDifficulty =
				song and song:HasStepsTypeAndDifficulty( st, diff );
--~ 			local difficulty = song:GetOneSteps( st, diff ):GetMeter();
			self:playcommand( bHasStepsTypeAndDifficulty and "Show" or "Hide" );
		end;
		CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
	};
	Def.Quad {
		InitCommand=cmd(zoomto,zX-2,zY-2;diffuse,DifficultyColor(diff);diffusetopedge,LightColor( DifficultyColor(diff) ) );
		ShowCommand=cmd(stoptweening;linear,0.1;diffusealpha,1;y,0;);
		HideCommand=cmd(stoptweening;linear,0.1;diffusealpha,0.25;y,4;);
		BeginCommand=cmd(x,16*idx);

		SetCommand=function(self)
			local song = GAMESTATE:GetCurrentSong();
			if not song then
				self:playcommand("Hide");
				return;
			end;
			local st = GAMESTATE:GetCurrentStyle():GetStepsType()
			local bHasStepsTypeAndDifficulty =
				song and song:HasStepsTypeAndDifficulty( st, diff );
--~ 			local difficulty = song:GetOneSteps( st, diff ):GetMeter();
			self:playcommand( bHasStepsTypeAndDifficulty and "Show" or "Hide" );
		end;
		CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
	};
	};
end

return t;
