local t = LoadFallbackB();
local t = Def.ActorFrame {};

t[#t+1] = Def.ActorFrame {
  InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+36);
    Def.ActorFrame { -- Gradient for difficulty list
	Def.Quad {
		InitCommand=cmd(vertalign,top;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT*0.35;draworder,-2;diffuse,color("#11161c");diffusebottomedge,color("#070b11");fadeleft,0.2;faderight,0.2;diffusealpha,0;visible,not GAMESTATE:IsCourseMode(););
		OnCommand=cmd(smooth,0.5;diffusealpha,1;);
		OffCommand=cmd(sleep,0.4;smooth,0.5;diffusealpha,0;);
	};
    };
};

-- Song Title/Artist Info
t[#t+1] = LoadFont("_ubuntu Bold 24px") .. { 
          InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;horizalign,center;horizalign,center;shadowlength,1;shadowcolor,color("#000000");diffuse,color("#BFC8DD");zoom,0.75;); 
          CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); 
          CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); 
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
		  OffCommand=cmd(accelerate,0.2;diffusealpha,0;);
          SetCommand=function(self) 
               local song = GAMESTATE:GetCurrentSong() or GAMESTATE:GetCurrentCourse(); 
               if song then 
                    self:settext(song:GetDisplayFullTitle()); 
                    self:playcommand("Refresh");
				else
					self:settext("");
					self:playcommand("Refresh"); 	
               end 
          end; 
};

t[#t+1] = LoadFont("Common Normal") .. { 
          InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+20;maxwidth,SCREEN_WIDTH;horizalign,center;shadowlength,1;shadowcolor,color("#000000");diffuse,color("#BFC8DD");zoom,0.75;); 
		  OffCommand=cmd(accelerate,0.2;diffusealpha,0;);
          CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); 
          CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); 
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
          SetCommand=function(self) 
               local song = GAMESTATE:GetCurrentSong(); 
               if song then 
                    self:settext(song:GetDisplayArtist()); 
                    self:playcommand("Refresh");
				else
					self:settext("");
					self:playcommand("Refresh"); 	
               end 
          end; 
};

t[#t+1] = LoadActor("p1panedisplay") .. {
	InitCommand=cmd(x,SCREEN_CENTER_X-224;y,SCREEN_CENTER_Y+120;diffusealpha,0;);
	OnCommand=cmd(player,PLAYER_1;smooth,0.3;diffusealpha,1;);
	OffCommand=cmd(sleep,0.4;smooth,0.4;zoomy,0);
	PlayerJoinedMessageCommand=cmd(smooth,0.3;diffusealpha,1;);
};

t[#t+1] = LoadActor("p2panedisplay") .. {
	InitCommand=cmd(x,SCREEN_CENTER_X+224;y,SCREEN_CENTER_Y+120;diffusealpha,0;);
	OnCommand=cmd(player,PLAYER_2;smooth,0.3;diffusealpha,1;);
	OffCommand=cmd(sleep,0.4;smooth,0.4;zoomy,0);
	PlayerJoinedMessageCommand=cmd(smooth,0.3;diffusealpha,1;);
};

t[#t+1] = LoadActor("_centerarc") .. {
	InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-163;diffusealpha,0;zoomx,0.8;zoomy,0.6;);
	OnCommand=cmd(smooth,0.3;diffusealpha,1;zoomx,1;zoomy,1;);
	OffCommand=cmd(sleep,0.4;smooth,0.3;diffusealpha,0;zoomx,0.8;zoomy,0.6);
};

t[#t+1] = StandardDecorationFromFileOptional("PaneDisplayTextP1","PaneDisplayTextP1");
t[#t+1] = StandardDecorationFromFileOptional("PaneDisplayTextP2","PaneDisplayTextP2");
t[#t+1] = StandardDecorationFromFileOptional("DifficultyList","DifficultyList");
t[#t+1] = StandardDecorationFromFileOptional("CourseContentsList","CourseContentsList");
t[#t+1] = StandardDecorationFromFileOptional("BPMDisplay","BPMDisplay");
t[#t+1] = StandardDecorationFromFileOptional("BPMLabel","BPMLabel");
t[#t+1] = StandardDecorationFromFileOptional("Header","Header");
t[#t+1] = StandardDecorationFromFileOptional("Footer","Footer");
t[#t+1] = StandardDecorationFromFileOptional("AlternateHelpDisplay","AlternateHelpDisplay");


return t