51 lines
1.5 KiB
Lua
51 lines
1.5 KiB
Lua
local fontPath = THEME:GetPathF( "Common", "normal" )
|
|||
|
|
local songs = tableslice( tableshuffle( SONGMAN:GetAllSongs() ), 100 );
|
||
|
|
local spacing_y = 24;
|
||
|
|
local num_items_to_draw = math.ceil( 480 / spacing_y );
|
||
|
|
local num_padding_items = (num_items_to_draw/2)+2;
|
||
|
|
local seconds_per_item = 0.1
|
||
|
|
local begin_fading_out_seconds = (#songs + num_padding_items * 2) * seconds_per_item;
|
||
|
|
|
||
|
|
local t = LoadFallbackB();
|
||
|
|
t[#t+1] = Def.ActorFrame {
|
||
|
|
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;);
|
||
|
|
BeginCommand=function(self)
|
||
|
|
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", begin_fading_out_seconds );
|
||
|
|
end;
|
||
|
|
LoadActor("bg") .. {
|
||
|
|
InitCommand=cmd();
|
||
|
|
};
|
||
|
|
LoadActor("char left") .. {
|
||
|
|
InitCommand=cmd(x,-250+4;y,50+4;);
|
||
|
|
};
|
||
|
|
LoadActor("char right") .. {
|
||
|
|
InitCommand=cmd(x,250+10;y,50+7;);
|
||
|
|
};
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
local t2 = Def.ActorScroller {
|
||
|
|
NumItemsToDraw = num_items_to_draw;
|
||
|
|
SecondsPerItem = seconds_per_item;
|
||
|
|
TransformFunction = function( self, offset, itemIndex, numItems )
|
||
|
|
self:y( offset*spacing_y )
|
||
|
|
end;
|
||
|
|
BeginCommand = cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scrollwithpadding,num_padding_items,num_padding_items);
|
||
|
|
}
|
||
|
|
|
||
|
|
for i=1,#songs do
|
||
|
|
local song = songs[i];
|
||
|
|
local c = SONGMAN:GetSongColor( song )
|
||
|
|
local text = Def.BitmapText {
|
||
|
|
_Level = 1;
|
||
|
|
File = fontPath;
|
||
|
|
InitCommand = cmd(settext,song:GetDisplayFullTitle();diffuse,c;strokecolor,color("#575100");shadowlength,0;);
|
||
|
|
}
|
||
|
|
|
||
|
|
table.insert( t2, Def.ActorFrame { text } )
|
||
|
|
end
|
||
|
|
|
||
|
|
t[#t+1] = t2;
|
||
|
|
|
||
|
|
return t;
|