function GraphDisplay( pn ) local t = Def.ActorFrame { Def.GraphDisplay { InitCommand=cmd(Load,"GraphDisplay";); BeginCommand=function(self) local ss = SCREENMAN:GetTopScreen():GetStageStats(); self:Set( ss, ss:GetPlayerStageStats(pn) ); self:player( pn ); end }; }; return t; end function ComboGraph( pn ) local t = Def.ActorFrame { Def.ComboGraph { InitCommand=cmd(Load,"ComboGraph";); BeginCommand=function(self) local ss = SCREENMAN:GetTopScreen():GetStageStats(); self:Set( ss, ss:GetPlayerStageStats(pn) ); self:player( pn ); end }; }; return t; end local t = LoadFallbackB(); t[#t+1] = StandardDecorationFromFileOptional("StageDisplay","StageDisplay"); if ShowStandardDecoration("GraphDisplay") then for pn in ivalues(GAMESTATE:GetHumanPlayers()) do t[#t+1] = StandardDecorationFromTable( "GraphDisplay" .. ToEnumShortString(pn), GraphDisplay(pn) ); end end if ShowStandardDecoration("ComboGraph") then for pn in ivalues(GAMESTATE:GetHumanPlayers()) do t[#t+1] = StandardDecorationFromTable( "ComboGraph" .. ToEnumShortString(pn), ComboGraph(pn) ); end end if ShowStandardDecoration("StepsDisplay") then for pn in ivalues(PlayerNumber) do local t2 = Def.StepsDisplay { InitCommand=cmd(Load,"StepsDisplayEvaluation",pn;SetFromGameState,pn;); }; t[#t+1] = StandardDecorationFromTable( "StepsDisplay" .. ToEnumShortString(pn), t2 ); end end for pn in ivalues(PlayerNumber) do local MetricsName = "StageAward" .. PlayerNumberToString(pn); t[#t+1] = LoadActor( THEME:GetPathG(Var "LoadingScreen", "StageAward"), pn ) .. { InitCommand=function(self) self:player(pn); self:name(MetricsName); ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen"); end; BeginCommand=cmd(playcommand,"Set"); SetCommand=function(self) local tStats = THEME:GetMetric(Var "LoadingScreen", "Summary") and STATSMAN:GetAccumPlayedStageStats() or STATSMAN:GetCurStageStats(); tStats = tStats:GetPlayerStageStats(pn); if tStats:GetStageAward() then self:settext( THEME:GetString( "StageAward", ToEnumShortString( tStats:GetStageAward() ) ) ); else self:settext( "" ); end end; }; end for pn in ivalues(PlayerNumber) do local MetricsName = "PeakComboAward" .. PlayerNumberToString(pn); t[#t+1] = LoadActor( THEME:GetPathG(Var "LoadingScreen", "PeakComboAward"), pn ) .. { InitCommand=function(self) self:player(pn); self:name(MetricsName); ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen"); end; BeginCommand=cmd(playcommand,"Set"); SetCommand=function(self) local tStats = THEME:GetMetric(Var "LoadingScreen", "Summary") and STATSMAN:GetAccumPlayedStageStats() or STATSMAN:GetCurStageStats(); tStats = tStats:GetPlayerStageStats(pn); if tStats:GetPeakComboAward() then self:settext( THEME:GetString( "PeakComboAward", ToEnumShortString( tStats:GetPeakComboAward() ) ) ); else self:settext( "" ); end end; }; end t[#t+1] = StandardDecorationFromFileOptional("LifeDifficulty","LifeDifficulty"); t[#t+1] = StandardDecorationFromFileOptional("TimingDifficulty","TimingDifficulty"); t[#t+1] = StandardDecorationFromFileOptional("GameType","GameType"); return t