Files
itgmania212121/Themes/_fallback/BGAnimations/ScreenNameEntryTraditional underlay/default.lua
T

290 lines
9.2 KiB
Lua

function MakeScoreList(StagesAgo)
local c;
local Stats;
local PlayerStats = { }
local children = {
LoadActor( "difficulty cap 9x1" ) .. {
Name="DifficultyP1";
InitCommand = cmd(x,-66;pause;halign,1);
OnCommand=cmd(zoomx,0;sleep,0.3;bounceend,0.3;zoomx,1);
OffCommand=cmd(bouncebegin,0.1;zoomx,0);
};
LoadActor( "difficulty cap 9x1" ) .. {
Name="DifficultyP2";
InitCommand = cmd(x,66;pause;halign,1;zoomx,0);
OnCommand=cmd(zoomx,0;sleep,0.3;bounceend,0.3;zoomx,-1);
OffCommand=cmd(bouncebegin,0.1;zoomx,0);
};
LoadActor( "banner mask" ) .. {
Name="BannerMask";
InitCommand=cmd(clearzbuffer,true;zwrite,true;blend,"BlendMode_NoEffect");
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,1);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
Def.Sprite {
Name = "Banner";
InitCommand = cmd(setsize,300,100;zoom,0.5;ztest,true);
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,0.5);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
LoadActor( "banner frame" ) .. {
Name="BannerFrame";
OnCommand=cmd(zoom,0;bounceend,0.3;zoom,1);
OffCommand=cmd(bouncebegin,0.3;zoom,0);
};
LoadActor( "side score frame" ) .. {
Name="ScoreFrameP1";
InitCommand=cmd();
OnCommand=cmd(x,-266;addx,-250;diffusealpha,1;decelerate,0.3;addx,250);
OffCommand=cmd(linear,0.3;addx,-150;diffusealpha,0);
};
LoadActor( "side score frame" ) .. {
Name="ScoreFrameP2";
InitCommand=cmd(zoomx,-1);
OnCommand=cmd(x,266;addx,250;diffusealpha,1;decelerate,0.3;addx,-250);
OffCommand=cmd(linear,0.3;addx,150;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="PlayerScoreP1";
InitCommand=cmd(x,-135;diffuse,color("#fdf991");shadowlength,0;zoom,0.6);
OnCommand=cmd(x,-135;addx,50;zoom,0;diffusealpha,0;sleep,0.1;accelerate,0.3;addx,-50;diffusealpha,1;zoom,0.6);
OffCommand=cmd(linear,0.3;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="PlayerScoreP2";
InitCommand=cmd(x,135;diffuse,color("#abfe8e");shadowlength,0;zoom,0.6);
OnCommand=cmd(x,135;addx,-50;zoom,0;diffusealpha,0;sleep,0.1;accelerate,0.3;addx,50;diffusealpha,1;zoom,0.6);
OffCommand=cmd(linear,0.3;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="MachineBestP1";
InitCommand=cmd(diffuse,color("#ffffff");shadowlength,0;zoom,0.5);
OnCommand=cmd(x,-250;addx,-250;diffusealpha,1;decelerate,0.3;addx,250);
OffCommand=cmd(linear,0.3;addx,-150;diffusealpha,0);
};
LoadFont( "Common Normal" ) .. {
-- LoadFont( "_regra bold 30px" ) .. {
Name="MachineBestP2";
InitCommand=cmd(diffuse,color("#ffffff");shadowlength,0;zoom,0.5);
OnCommand=cmd(x,250;addx,250;diffusealpha,1;decelerate,0.3;addx,-250);
OffCommand=cmd(linear,0.3;addx,150;diffusealpha,0);
};
};
return Def.ActorFrame {
children = children;
InitCommand = function(self)
c = self:GetChildren();
c.PlayerScore = {};
c.PlayerScore[PLAYER_1] = c.PlayerScoreP1;
c.PlayerScore[PLAYER_2] = c.PlayerScoreP2;
c.MachineBest = {};
c.MachineBest[PLAYER_1] = c.MachineBestP1;
c.MachineBest[PLAYER_2] = c.MachineBestP2;
c.ScoreFrame = {};
c.ScoreFrame[PLAYER_1] = c.ScoreFrameP1;
c.ScoreFrame[PLAYER_2] = c.ScoreFrameP2;
c.Difficulty = {};
c.Difficulty[PLAYER_1] = c.DifficultyP1;
c.Difficulty[PLAYER_2] = c.DifficultyP2;
end;
BeginCommand = function(self)
Stats = STATSMAN:GetPlayedStageStats(StagesAgo);
if not Stats then
self:visible(false);
return;
end;
self:visible(true);
PlayerStats[PLAYER_1] = Stats:GetPlayerStageStats(PLAYER_1);
PlayerStats[PLAYER_2] = Stats:GetPlayerStageStats(PLAYER_2);
local Current;
local CurrentPart = {}
if GAMESTATE:IsCourseMode() then
Current = GAMESTATE:GetCurrentCourse();
CurrentPart[PLAYER_1] = GAMESTATE:GetCurrentTrail( PLAYER_1 );
CurrentPart[PLAYER_2] = GAMESTATE:GetCurrentTrail( PLAYER_2 );
else
Current = Stats:GetPlayedSongs()[1];
CurrentPart[PLAYER_1] = PlayerStats[PLAYER_1]:GetPlayedSteps()[1];
CurrentPart[PLAYER_2] = PlayerStats[PLAYER_2]:GetPlayedSteps()[1];
end
assert(Current);
local sBannerPath = Current:GetBannerPath() or THEME:GetPathG("Common","fallback banner");
c.Banner:LoadBanner( sBannerPath );
for pn in ivalues(PlayerNumber) do
local visible = GAMESTATE:IsHumanPlayer(pn) and CurrentPart[pn] ~= nil; -- was present for this song
c.MachineBest[pn]:visible( visible );
c.PlayerScore[pn]:visible( visible );
c.ScoreFrame[pn]:visible( visible );
c.Difficulty[pn]:visible( visible );
local MachineProfile = PROFILEMAN:GetMachineProfile();
if visible then
assert(CurrentPart[pn]);
-- c.Difficulty[pn]:SetDifficultyAndStepsTypeFrame( CurrentPart[pn] );
local hsl = MachineProfile:GetHighScoreList( Current, CurrentPart[pn] );
assert( hsl );
-- Find the first high score that isn't one that we're entering now.
local HighScores = hsl:GetHighScores();
local hs;
for h in ivalues(HighScores) do
if not hs and not h:IsFillInMarker() then
hs = h;
end
end
if hs then
local fMachineScore = hs:GetPercentDP() or 0;
local sName = hs:GetName() or "";
local sText = sName .. " " .. FormatPercentScore( fMachineScore );
c.MachineBest[pn]:settext( sText );
else
c.ScoreFrame[pn]:visible( false );
end
local fPlayerScore = PlayerStats[pn]:GetPercentDancePoints();
local sText = FormatPercentScore( fPlayerScore );
c.PlayerScore[pn]:settext( sText );
local colors = {
[PLAYER_1] = color("#fdf991"),
[PLAYER_2] = color("#abfe8e"),
};
if Stats:PlayerHasHighScore(pn) then
colors = {
[PLAYER_1] = color("#feef01"),
[PLAYER_2] = color("#0ffc03"),
};
end
c.PlayerScore[pn]:diffuse(colors[pn]);
end;
end;
end;
};
end
local children = {
LoadActor( "center frame" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+9);
OnCommand=cmd(fadetop,0.3; croptop,1; linear,0.5; croptop,-0.3);
OffCommand=cmd(linear,0.5; croptop,1);
};
LoadActor( "line" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;SetWidth,336;y,SCREEN_CENTER_Y+65;fadeleft,0.3; faderight,0.3);
OnCommand=cmd(cropleft,.5;cropright,.5;
sleep,0.2;
linear,0.3;
cropleft,-.2;cropright,-.2);
OffCommand=cmd(linear,0.3;cropleft,.5;cropright,.5);
};
};
for i = 1,5 do
children[#children+1] =
MakeScoreList(i) .. {
Name="Row" .. tostring(i);
InitCommand=cmd(x,SCREEN_CENTER_X);
};
end
--[[ children[#children+1] =
LoadActor( THEME:GetPathB("","_shared underlay") ) .. { OnCommand=cmd(); }; --]]
children[#children+1] = LoadActor( "keyboard" ) .. {
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+80);
BeginCommand = cmd(visible,SCREENMAN:GetTopScreen():GetAnyEntering());
};
for pn in ivalues(PlayerNumber) do
local FrameX = pn == PLAYER_1 and (SCREEN_CENTER_X-265) or (SCREEN_CENTER_X+267);
local P1 = pn == PLAYER_1 and 1 or -1;
children[#children+1] = LoadActor( "name frame" ) .. {
InitCommand=cmd(y,SCREEN_CENTER_Y+119;
zoomx,pn == PLAYER_1 and 1.0 or -1.0);
BeginCommand=cmd(visible,SCREENMAN:GetTopScreen():GetEnteringName(pn));
OnCommand=cmd(finishtweening;x,FrameX;addx,-200*P1;zoom,0;bounceend,0.3;zoom,1;addx,200*P1);
OffCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0;addx,-200*P1);
};
children[#children+1] = LoadFont( "Common Normal" ) .. {
-- children[#children+1] = LoadFont( "_regra bold 30px" ) .. {
Name="PlayerText";
InitCommand=cmd(x,pn == PLAYER_1 and (SCREEN_CENTER_X-WideScale(310,330)) or (SCREEN_CENTER_X+WideScale(198,204));
halign,0;
y,SCREEN_CENTER_Y+115;shadowlength,0;zoom,1);
BeginCommand=cmd(visible,SCREENMAN:GetTopScreen():GetEnteringName(pn));
OnCommand=cmd(finishtweening;diffusealpha,0;sleep,0.1;linear,0.3;diffusealpha,1);
OffCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0;addx,-200*P1);
EntryChangedMessageCommand=function(self,params)
if params.PlayerNumber ~= pn then
return;
end;
self:settext( params.Text );
end;
};
end;
return Def.ActorFrame {
children = children;
BeginCommand = function(self)
local StagesPlayed = STATSMAN:GetStagesPlayed();
local c = self:GetChildren();
local fYCenter = SCREEN_CENTER_Y-60;
local fYMinSpacing = 44;
local fYMaxSpacing = 70;
local fYSpacing = scale(StagesPlayed, 4, 5, fYMaxSpacing, fYMinSpacing);
fYSpacing = clamp(fYSpacing, fYMinSpacing, fYMaxSpacing);
fYSpacing = fYSpacing + math.mod(fYSpacing, 2); -- even
fYSpacing = -fYSpacing;
local fYStart = fYSpacing*(StagesPlayed-1)/2;
local fYEnd = -fYSpacing*(StagesPlayed-1)/2;
for i = 1,StagesPlayed do
local Name = "Row" .. tostring(i);
local row = c[Name];
assert(row);
local fY = fYCenter + fYEnd + (i-1)*fYSpacing;
row:y( fY );
end
local Timer = SCREENMAN:GetTopScreen():GetChild("Timer");
if not SCREENMAN:GetTopScreen():GetAnyEntering() then
Timer:setseconds(5);
Timer:silent(true);
else
Timer:setseconds(25);
Timer:silent(false);
end
end;
OnCommand = function(self)
local StagesPlayed = STATSMAN:GetStagesPlayed();
local c = self:GetChildren();
for i = 1,StagesPlayed do
local Name = "Row" .. tostring(i);
local row = c[Name];
assert(row);
row:hibernate(0.3+(i/StagesPlayed)*0.3);
end
end;
};