418 lines
16 KiB
Lua
418 lines
16 KiB
Lua
local curStage = GAMESTATE:GetCurrentStage();
|
|
local curStageIndex = GAMESTATE:GetCurrentStageIndex();
|
|
local t = LoadFallbackB();
|
|
|
|
local function PercentScore(pn)
|
|
local t = LoadFont("_overpass Score")..{
|
|
InitCommand=cmd(zoom,1;diffuse,Color("Black");diffusealpha,0.75);
|
|
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);
|
|
|
|
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;
|
|
CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
|
|
CurrentCourseChangedMessageCommand=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
|
|
|
|
-- Genre/Artist data
|
|
t[#t+1] = LoadActor(THEME:GetPathG("ScreenSelectMusic", "info pane")) .. {
|
|
InitCommand=cmd(horizalign,center;x,SCREEN_CENTER_X-228;y,SCREEN_CENTER_Y-75;zoom,1);
|
|
OnCommand=function(self)
|
|
self:diffuse(ColorMidTone(StageToColor(curStage)));
|
|
self:zoomx(0):diffusealpha(0):decelerate(0.3):zoomx(1):diffusealpha(1);
|
|
end;
|
|
OffCommand=function(self)
|
|
self:sleep(0.3):decelerate(0.15):zoomx(0):diffusealpha(0);
|
|
end;
|
|
};
|
|
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(x,SCREEN_CENTER_X-330+6-138;draworder,126);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.3;diffusealpha,1);
|
|
OffCommand=cmd(smooth,0.3;diffusealpha,0);
|
|
-- Length
|
|
StandardDecorationFromFileOptional("SongTime","SongTime") .. {
|
|
SetCommand=function(self)
|
|
local curSelection = nil;
|
|
local length = 0.0;
|
|
if GAMESTATE:IsCourseMode() then
|
|
curSelection = GAMESTATE:GetCurrentCourse();
|
|
self:queuecommand("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:queuecommand("Reset");
|
|
if curSelection then
|
|
length = curSelection:MusicLengthSeconds();
|
|
if curSelection:IsLong() then
|
|
self:queuecommand("Long");
|
|
elseif curSelection:IsMarathon() then
|
|
self:queuecommand("Marathon");
|
|
else
|
|
self:queuecommand("Reset");
|
|
end
|
|
else
|
|
length = 0.0;
|
|
self:queuecommand("Reset");
|
|
end;
|
|
end;
|
|
self:settext( SecondsToMSS(length) );
|
|
end;
|
|
CurrentSongChangedMessageCommand=cmd(queuecommand,"Set");
|
|
CurrentCourseChangedMessageCommand=cmd(queuecommand,"Set");
|
|
CurrentTrailP1ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
CurrentTrailP2ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
};
|
|
};
|
|
|
|
-- Course count and type
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(x,SCREEN_CENTER_X-200;draworder,126);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.3;diffusealpha,1);
|
|
OffCommand=cmd(smooth,0.2;diffusealpha,0);
|
|
LoadFont("Common Condensed") .. {
|
|
InitCommand=cmd(horizalign,right;zoom,1.0;y,SCREEN_CENTER_Y-78+2;maxwidth,180;diffuse,color("#DFE2E9");visible,GAMESTATE:IsCourseMode());
|
|
CurrentCourseChangedMessageCommand=cmd(queuecommand,"Set");
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local course = GAMESTATE:GetCurrentCourse();
|
|
if course then
|
|
self:settext(course:GetEstimatedNumStages() .. " songs");
|
|
self:queuecommand("Refresh");
|
|
else
|
|
self:settext("");
|
|
self:queuecommand("Refresh");
|
|
end
|
|
end;
|
|
};
|
|
};
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(x,SCREEN_CENTER_X+5;draworder,126);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.3;diffusealpha,1);
|
|
OffCommand=cmd(smooth,0.2;diffusealpha,0);
|
|
LoadFont("Common Condensed") .. {
|
|
InitCommand=cmd(horizalign,right;zoom,1.0;y,SCREEN_CENTER_Y-78+2;maxwidth,180;diffuse,color("#DFE2E9");visible,GAMESTATE:IsCourseMode());
|
|
CurrentCourseChangedMessageCommand=cmd(queuecommand,"Set");
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local course = GAMESTATE:GetCurrentCourse();
|
|
if course then
|
|
self:settext(CourseTypeToLocalizedString(course:GetCourseType()));
|
|
self:queuecommand("Refresh");
|
|
else
|
|
self:settext("");
|
|
self:queuecommand("Refresh");
|
|
end
|
|
end;
|
|
};
|
|
};
|
|
|
|
|
|
if not GAMESTATE:IsCourseMode() then
|
|
|
|
-- P1 Difficulty Pane
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,center;x,SCREEN_CENTER_X-210-32;y,SCREEN_CENTER_Y+230+8);
|
|
OnCommand=cmd(zoomy,0.8;diffusealpha,0;smooth,0.4;diffusealpha,1;zoomy,1);
|
|
PlayerJoinedMessageCommand=function(self,param)
|
|
if param.Player == PLAYER_1 then
|
|
(cmd(visible,true;diffusealpha,0;linear,0.3;diffusealpha,1))(self);
|
|
end;
|
|
end;
|
|
OffCommand=cmd(decelerate,0.3;zoomy,0.8;diffusealpha,0);
|
|
LoadActor(THEME:GetPathG("ScreenSelectMusic", "pane background")) .. {
|
|
CurrentStepsP1ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;decelerate,0.3;diffusealpha,1);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if local stepsP1 ~= nil then
|
|
local st = stepsP1:GetStepsType();
|
|
local diff = stepsP1:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:finishtweening():linear(0.2):diffuse(ColorLightTone(CustomDifficultyToColor(cd)));
|
|
else
|
|
self:diffuse(color("#666666"));
|
|
end
|
|
else
|
|
self:diffuse(color("#666666"));
|
|
end
|
|
end
|
|
};
|
|
LoadFont("StepsDisplay meter") .. {
|
|
InitCommand=cmd(zoom,1.25;diffuse,color("#000000");addx,-143;addy,13);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP1ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP1 ~= nil then
|
|
local st = stepsP1:GetStepsType();
|
|
local diff = stepsP1:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(stepsP1:GetMeter())
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
LoadFont("Common Italic Condensed") .. {
|
|
InitCommand=cmd(uppercase,true;zoom,1;addy,-40;addx,-143;diffuse,color("#000000");maxwidth,115);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP1ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP1 ~= nil then
|
|
local st = stepsP1:GetStepsType();
|
|
local diff = stepsP1:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(THEME:GetString("CustomDifficulty",ToEnumShortString(diff)));
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
LoadFont("Common Normal") .. {
|
|
InitCommand=cmd(uppercase,true;zoom,0.75;addy,-20;addx,-143;diffuse,color("#000000");maxwidth,130);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP1ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP1 ~= nil then
|
|
local st = stepsP1:GetStepsType();
|
|
local diff = stepsP1:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(THEME:GetString("StepsType",ToEnumShortString(st)));
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
};
|
|
|
|
-- P2 Difficulty Pane
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,center;x,SCREEN_CENTER_X+210+32;y,SCREEN_CENTER_Y+230+8);
|
|
OnCommand=cmd(zoomy,0.8;diffusealpha,0;smooth,0.4;diffusealpha,1;zoomy,1);
|
|
PlayerJoinedMessageCommand=function(self,param)
|
|
if param.Player == PLAYER_2 then
|
|
(cmd(visible,true;diffusealpha,0;linear,0.3;diffusealpha,1))(self);
|
|
end;
|
|
end;
|
|
OffCommand=cmd(decelerate,0.3;zoomy,0.8;diffusealpha,0);
|
|
LoadActor(THEME:GetPathG("ScreenSelectMusic", "pane background")) .. {
|
|
InitCommand=cmd(zoomx,-1);
|
|
CurrentStepsP2ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;decelerate,0.3;diffusealpha,1);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP2 = GAMESTATE:GetCurrentSteps(PLAYER_2)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP2 ~= nil then
|
|
local st = stepsP2:GetStepsType();
|
|
local diff = stepsP2:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:finishtweening():linear(0.2):diffuse(ColorLightTone(CustomDifficultyToColor(cd)));
|
|
else
|
|
self:diffuse(color("#666666"));
|
|
end
|
|
else
|
|
self:diffuse(color("#666666"));
|
|
end
|
|
end
|
|
};
|
|
LoadFont("StepsDisplay meter") .. {
|
|
InitCommand=cmd(zoom,1.25;diffuse,color("#000000");addx,143;addy,13);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP2ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP2 = GAMESTATE:GetCurrentSteps(PLAYER_2)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP2 ~= nil then
|
|
local st = stepsP2:GetStepsType();
|
|
local diff = stepsP2:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(stepsP2:GetMeter())
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
LoadFont("Common Italic Condensed") .. {
|
|
InitCommand=cmd(uppercase,true;zoom,1;addy,-40;addx,143;diffuse,color("#000000");maxwidth,115);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP2ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP2 = GAMESTATE:GetCurrentSteps(PLAYER_2)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP2 ~= nil then
|
|
local st = stepsP2:GetStepsType();
|
|
local diff = stepsP2:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(THEME:GetString("CustomDifficulty",ToEnumShortString(diff)));
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
LoadFont("Common Normal") .. {
|
|
InitCommand=cmd(uppercase,true;zoom,0.75;addy,-20;addx,143;diffuse,color("#000000");maxwidth,130);
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.2;diffusealpha,0.75);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
CurrentStepsP2ChangedMessageCommand=cmd(queuecommand,"Set");
|
|
PlayerJoinedMessageCommand=cmd(queuecommand,"Set";diffusealpha,0;linear,0.3;diffusealpha,0.75);
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
local stepsP2 = GAMESTATE:GetCurrentSteps(PLAYER_2)
|
|
local song = GAMESTATE:GetCurrentSong();
|
|
if song then
|
|
if stepsP2 ~= nil then
|
|
local st = stepsP2:GetStepsType();
|
|
local diff = stepsP2:GetDifficulty();
|
|
local courseType = GAMESTATE:IsCourseMode() and SongOrCourse:GetCourseType() or nil;
|
|
local cd = GetCustomDifficulty(st, diff, courseType);
|
|
self:settext(THEME:GetString("StepsType",ToEnumShortString(st)));
|
|
else
|
|
self:settext("")
|
|
end
|
|
else
|
|
self:settext("")
|
|
end
|
|
end
|
|
};
|
|
};
|
|
|
|
t[#t+1] = StandardDecorationFromFileOptional("PaneDisplayTextP1","PaneDisplayTextP1");
|
|
t[#t+1] = StandardDecorationFromFileOptional("PaneDisplayTextP2","PaneDisplayTextP2");
|
|
|
|
t[#t+1] = StandardDecorationFromTable("PercentScore"..ToEnumShortString(PLAYER_1), PercentScore(PLAYER_1));
|
|
t[#t+1] = StandardDecorationFromTable("PercentScore"..ToEnumShortString(PLAYER_2), PercentScore(PLAYER_2));
|
|
|
|
|
|
end;
|
|
|
|
-- BPMDisplay
|
|
t[#t+1] = Def.ActorFrame {
|
|
InitCommand=cmd(draworder,126;visible,not GAMESTATE:IsCourseMode());
|
|
OnCommand=cmd(diffusealpha,0;smooth,0.3;diffusealpha,1);
|
|
OffCommand=cmd(linear,0.3;diffusealpha,0);
|
|
LoadFont("Common Condensed") .. {
|
|
InitCommand=cmd(horizalign,right;x,SCREEN_CENTER_X-198+69-66;y,SCREEN_CENTER_Y-78+2;diffuse,color("#512232");horizalign,right;visible,not GAMESTATE:IsCourseMode());
|
|
OnCommand=cmd(queuecommand,"Set");
|
|
ChangedLanguageDisplayMessageCommand=cmd(queuecommand,"Set");
|
|
SetCommand=function(self)
|
|
self:settext("BPM"):diffuse(ColorLightTone(StageToColor(curStage)));
|
|
end;
|
|
};
|
|
StandardDecorationFromFileOptional("BPMDisplay","BPMDisplay");
|
|
};
|
|
|
|
|
|
return t; |