235 lines
8.1 KiB
Lua
235 lines
8.1 KiB
Lua
local t = LoadFallbackB();
|
|
|
|
-- Legacy StepMania 4 Function
|
|
local function StepsDisplay(pn)
|
|
local function set(self, player)
|
|
self:SetFromGameState( player );
|
|
end
|
|
|
|
local t = Def.StepsDisplay {
|
|
InitCommand=cmd(Load,"StepsDisplay",GAMESTATE:GetPlayerState(pn););
|
|
};
|
|
|
|
if pn == PLAYER_1 then
|
|
t.CurrentStepsP1ChangedMessageCommand=function(self) set(self, pn); end;
|
|
t.CurrentTrailP1ChangedMessageCommand=function(self) set(self, pn); end;
|
|
else
|
|
t.CurrentStepsP2ChangedMessageCommand=function(self) set(self, pn); end;
|
|
t.CurrentTrailP2ChangedMessageCommand=function(self) set(self, pn); end;
|
|
end
|
|
|
|
return t;
|
|
end
|
|
t[#t+1] = StandardDecorationFromFileOptional("AlternateHelpDisplay","AlternateHelpDisplay");
|
|
|
|
local function PercentScore(pn)
|
|
local t = LoadFont("Common normal")..{
|
|
InitCommand=cmd(zoom,0.625;shadowlength,1);
|
|
BeginCommand=cmd(playcommand,"Set");
|
|
SetCommand=function(self)
|
|
local SongOrCourse, StepsOrTrail;
|
|
if GAMESTATE:IsCourseMode() then
|
|
SongOrCourse = GAMESTATE:GetCurrentCourse();
|
|
StepsOrTrail = GAMESTATE:GetCurrentTrail(pn);
|
|
else
|
|
SongOrCourse = GAMESTATE:GetCurrentSong();
|
|
StepsOrTrail = GAMESTATE:GetCurrentSteps(pn);
|
|
end;
|
|
|
|
local profile, scorelist;
|
|
local text = "";
|
|
if SongOrCourse and StepsOrTrail then
|
|
local st = StepsOrTrail:GetStepsType();
|
|
local diff = StepsOrTrail:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:diffuse(CustomDifficultyToColor(cd));
|
|
self:shadowcolor(CustomDifficultyToDarkColor(cd));
|
|
|
|
if PROFILEMAN:IsPersistentProfile(pn) then
|
|
-- player profile
|
|
profile = PROFILEMAN:GetProfile(pn);
|
|
else
|
|
-- machine profile
|
|
profile = PROFILEMAN:GetMachineProfile();
|
|
end;
|
|
|
|
scorelist = profile:GetHighScoreList(SongOrCourse,StepsOrTrail);
|
|
assert(scorelist)
|
|
local scores = scorelist:GetHighScores();
|
|
local topscore = scores[1];
|
|
if topscore then
|
|
text = string.format("%.2f%%", topscore:GetPercentDP()*100.0);
|
|
-- 100% hack
|
|
if text == "100.00%" then
|
|
text = "100%";
|
|
end;
|
|
else
|
|
text = string.format("%.2f%%", 0);
|
|
end;
|
|
else
|
|
text = "";
|
|
end;
|
|
self:settext(text);
|
|
end;
|
|
CurrentSongChangesMessageCommand=cmd(playcommand,"Set");
|
|
};
|
|
|
|
if pn == PLAYER_1 then
|
|
t.CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set");
|
|
t.CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set");
|
|
else
|
|
t.CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set");
|
|
t.CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set");
|
|
end
|
|
|
|
return t;
|
|
end
|
|
|
|
-- Legacy StepMania 4 Function
|
|
for pn in ivalues(PlayerNumber) do
|
|
local MetricsName = "StepsDisplay" .. PlayerNumberToString(pn);
|
|
t[#t+1] = StepsDisplay(pn) .. {
|
|
InitCommand=function(self) self:player(pn); self:name(MetricsName); ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen"); end;
|
|
PlayerJoinedMessageCommand=function(self, params)
|
|
if params.Player == pn then
|
|
self:visible(true);
|
|
(cmd(zoom,0;bounceend,0.3;zoom,1))(self);
|
|
end;
|
|
end;
|
|
PlayerUnjoinedMessageCommand=function(self, params)
|
|
if params.Player == pn then
|
|
self:visible(true);
|
|
(cmd(bouncebegin,0.3;zoom,0))(self);
|
|
end;
|
|
end;
|
|
};
|
|
if ShowStandardDecoration("PercentScore"..ToEnumShortString(pn)) then
|
|
t[#t+1] = StandardDecorationFromTable("PercentScore"..ToEnumShortString(pn), PercentScore(pn));
|
|
end;
|
|
end
|
|
|
|
t[#t+1] = StandardDecorationFromFileOptional("BannerFrame","BannerFrame");
|
|
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("SongTime","SongTime") .. {
|
|
SetCommand=function(self)
|
|
local curSelection = nil;
|
|
local length = 0.0;
|
|
if GAMESTATE:IsCourseMode() then
|
|
curSelection = GAMESTATE:GetCurrentCourse();
|
|
self:playcommand("Reset");
|
|
if curSelection then
|
|
local trail = GAMESTATE:GetCurrentTrail(GAMESTATE:GetMasterPlayerNumber());
|
|
if trail then
|
|
length = TrailUtil.GetTotalSeconds(trail);
|
|
else
|
|
length = 0.0;
|
|
end;
|
|
else
|
|
length = 0.0;
|
|
end;
|
|
else
|
|
curSelection = GAMESTATE:GetCurrentSong();
|
|
self:playcommand("Reset");
|
|
if curSelection then
|
|
length = curSelection:MusicLengthSeconds();
|
|
if curSelection:IsLong() then
|
|
self:playcommand("Long");
|
|
elseif curSelection:IsMarathon() then
|
|
self:playcommand("Marathon");
|
|
else
|
|
self:playcommand("Reset");
|
|
end
|
|
else
|
|
length = 0.0;
|
|
self:playcommand("Reset");
|
|
end;
|
|
end;
|
|
self:settext( SecondsToMSS(length) );
|
|
end;
|
|
CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
|
|
CurrentCourseChangedMessageCommand=cmd(playcommand,"Set");
|
|
CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set");
|
|
CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set");
|
|
}
|
|
|
|
if not GAMESTATE:IsCourseMode() then
|
|
t[#t+1] = StandardDecorationFromFileOptional("NewSong","NewSong") .. {
|
|
-- ShowCommand=THEME:GetMetric(Var "LoadingScreen", "NewSongShowCommand" );
|
|
-- HideCommand=THEME:GetMetric(Var "LoadingScreen", "NewSongHideCommand" );
|
|
InitCommand=cmd(playcommand,"Set");
|
|
BeginCommand=cmd(playcommand,"Set");
|
|
CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
|
|
SetCommand=function(self)
|
|
-- local pTargetProfile;
|
|
local sSong;
|
|
-- Start!
|
|
if GAMESTATE:GetCurrentSong() then
|
|
if PROFILEMAN:IsSongNew(GAMESTATE:GetCurrentSong()) then
|
|
self:playcommand("Show");
|
|
else
|
|
self:playcommand("Hide");
|
|
end
|
|
else
|
|
self:playcommand("Hide");
|
|
end
|
|
end;
|
|
};
|
|
t[#t+1] = StandardDecorationFromFileOptional("StageDisplay","StageDisplay");
|
|
end;
|
|
if GAMESTATE:IsCourseMode() then
|
|
t[#t+1] = StandardDecorationFromFileOptional("NumCourseSongs","NumCourseSongs")..{
|
|
InitCommand=cmd(horizalign,right);
|
|
SetCommand=function(self)
|
|
local curSelection= nil;
|
|
local sAppend = "";
|
|
if GAMESTATE:IsCourseMode() then
|
|
curSelection = GAMESTATE:GetCurrentCourse();
|
|
if curSelection then
|
|
sAppend = (curSelection:GetEstimatedNumStages() == 1) and "Stage" or "Stages";
|
|
self:visible(true);
|
|
self:settext( curSelection:GetEstimatedNumStages() .. " " .. sAppend);
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
else
|
|
self:visible(false);
|
|
end;
|
|
end;
|
|
CurrentCourseChangedMessageCommand=cmd(playcommand,"Set");
|
|
};
|
|
end
|
|
t[#t+1] = StandardDecorationFromFileOptional("DifficultyDisplay","DifficultyDisplay");
|
|
t[#t+1] = StandardDecorationFromFileOptional("SortOrder","SortOrderText") .. {
|
|
BeginCommand=cmd(playcommand,"Set");
|
|
SortOrderChangedMessageCommand=cmd(playcommand,"Set";);
|
|
SetCommand=function(self)
|
|
local s = SortOrderToLocalizedString( GAMESTATE:GetSortOrder() );
|
|
self:settext( s );
|
|
self:playcommand("Sort");
|
|
end;
|
|
};
|
|
t[#t+1] = StandardDecorationFromFileOptional("SortOrderFrame","SortOrderFrame") .. {
|
|
--[[ BeginCommand=cmd(playcommand,"Set");
|
|
SortOrderChangedMessageCommand=cmd(playcommand,"Set";);
|
|
SetCommand=function(self)
|
|
local s = SortOrderToLocalizedString( GAMESTATE:GetSortOrder() );
|
|
self:settext( s );
|
|
self:playcommand("Sort");
|
|
end; --]]
|
|
};
|
|
t[#t+1] = StandardDecorationFromFileOptional("SongOptionsFrame","SongOptionsFrame") .. {
|
|
ShowPressStartForOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsFrameShowCommand");
|
|
ShowEnteringOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsFrameEnterCommand");
|
|
HidePressStartForOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsFrameHideCommand");
|
|
};
|
|
t[#t+1] = StandardDecorationFromFileOptional("SongOptions","SongOptionsText") .. {
|
|
ShowPressStartForOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsShowCommand");
|
|
ShowEnteringOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsEnterCommand");
|
|
HidePressStartForOptionsCommand=THEME:GetMetric(Var "LoadingScreen","SongOptionsHideCommand");
|
|
};
|
|
return t |