Merge pull request #1521 from ListenerJubatus/5_1-new

Theme fixes
This commit is contained in:
ListenerJubatus
2017-08-08 12:45:25 -06:00
committed by GitHub
15 changed files with 224 additions and 47 deletions
@@ -85,6 +85,7 @@ local stepmania_credits= {
"Kaox", -- pump/default noteskin
-- Add Graphics/CreditsLogo name.png and change your entry to a table like this to look super pro.
{logo= "kyzentun", name= "Kyzentun"}, -- new lua bindings, theme documentation
"Lirodon", -- Lambda default theme on 5.1
"Mad Matt", -- new lua bindings
"Matt McCutchen", -- minor fix for some dance pads on linux
"MrThatKid", -- nitg modifiers
@@ -0,0 +1 @@
ScreenLogo background

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

@@ -3,7 +3,7 @@
-- todo: make a more metrics-bound version of this screen anyways for beginner accessibility.
-- todo: accommodate EvaluationSummary too
local t = LoadFallbackB()
local t = Def.ActorFrame {};
-- A very useful table...
local eval_lines = {
@@ -150,45 +150,6 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do
end;
}
end
-- Primary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65);diffuse,ColorMidTone(PlayerColor(p));zoom,1;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "primary")):diffusealpha(0):sleep(0.5):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:decelerate(0.3):diffusealpha(0)
end;
}
-- Secondary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+30;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "secondary")):diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1):decelerate(0.3):diffusealpha(0)
end;
}
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "Common Condensed",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+56;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1),
OnCommand=function(self)
local record = STATSMAN:GetCurStageStats():GetPlayerStageStats(p):GetPersonalHighScoreIndex()
local hasPersonalRecord = record ~= -1
self:visible(hasPersonalRecord);
local text = string.format(THEME:GetString("ScreenEvaluation", "PersonalRecord"), record+1)
self:settext(text)
self:diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1):decelerate(0.3):diffusealpha(0)
end;
}
-- Letter grade and associated parts.
eval_parts[#eval_parts+1] = Def.ActorFrame{
@@ -235,6 +196,46 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do
OffCommand=cmd(decelerate,0.3;diffusealpha,0);
}
}
-- Primary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65);diffuse,ColorMidTone(PlayerColor(p));zoom,1;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "primary")):diffusealpha(0):sleep(0.5):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:decelerate(0.3):diffusealpha(0)
end;
}
-- Secondary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+30;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "secondary")):diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1):decelerate(0.3):diffusealpha(0)
end;
}
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "Common Condensed",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+56;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1),
OnCommand=function(self)
local record = STATSMAN:GetCurStageStats():GetPlayerStageStats(p):GetPersonalHighScoreIndex()
local hasPersonalRecord = record ~= -1
self:visible(hasPersonalRecord);
local text = string.format(THEME:GetString("ScreenEvaluation", "PersonalRecord"), record+1)
self:settext(text)
self:diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1):decelerate(0.3):diffusealpha(0)
end;
}
end
t[#t+1] = eval_parts
@@ -0,0 +1,164 @@
-- ...So I realize that I completely ignored almost each and every
-- metrics-bound element this screen could use, but it's okay, right?
-- todo: make a more metrics-bound version of this screen anyways for beginner accessibility.
-- todo: accommodate EvaluationSummary too
local t = Def.ActorFrame {};
-- A very useful table...
local eval_lines = {
"W1",
"W2",
"W3",
"W4",
"W5",
"Miss",
"Held",
"MaxCombo"
}
-- And a function to make even better use out of the table.
local function GetJLineValue(line, pl)
if line == "Held" then
return STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(pl):GetHoldNoteScores("HoldNoteScore_Held")
elseif line == "MaxCombo" then
return STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(pl):MaxCombo()
else
return STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(pl):GetTapNoteScores("TapNoteScore_" .. line)
end
return "???"
end
-- You know what, we'll deal with getting the overall scores with a function too.
local function GetPlScore(pl, scoretype)
local primary_score = STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(pl):GetScore()
local secondary_score = FormatPercentScore(STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(pl):GetPercentDancePoints())
if PREFSMAN:GetPreference("PercentageScoring") then
primary_score, secondary_score = secondary_score, primary_score
end
if scoretype == "primary" then
return primary_score
else
return secondary_score
end
end
-- Each line's text, and associated decorations.
for i, v in ipairs(eval_lines) do
local spacing = 38*i
local cur_line = "JudgmentLine_" .. v
t[#t+1] = Def.ActorFrame{
InitCommand=cmd(x,_screen.cx;y,(_screen.cy/1.6)+(spacing)),
OffCommand=function(self)
self:sleep(0.06 * i):decelerate(0.1):diffusealpha(0)
end;
Def.Quad {
InitCommand=cmd(zoomto,400,36;diffuse,JudgmentLineToColor(cur_line);fadeleft,0.5;faderight,0.5;);
OnCommand=function(self)
self:diffusealpha(0):sleep(0.1 * i):decelerate(0.9):diffusealpha(1)
end;
};
Def.BitmapText {
Font = "_roboto condensed Bold 48px",
InitCommand=cmd(zoom,0.6;diffuse,color("#000000");settext,string.upper(JudgmentLineToLocalizedString(cur_line)));
OnCommand=function(self)
self:diffusealpha(0):sleep(0.1 * i):decelerate(0.9):diffusealpha(0.6)
end;
}
}
end
-- #################################################
-- Time to deal with all of the player stats. ALL OF THEM.
local eval_parts = Def.ActorFrame {}
for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do
-- Some things to help positioning
local step_count_offs = string.find(p, "P1") and -150 or 150
local grade_parts_offs = string.find(p, "P1") and -320 or 320
local p_grade = STATSMAN:GetAccumPlayedStageStats():GetPlayerStageStats(p):GetGrade()
-- Step counts.
for i, v in ipairs(eval_lines) do
local spacing = 38*i
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(x,_screen.cx + step_count_offs;y,(_screen.cy/1.6)+(spacing);diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;diffusealpha,1.0;shadowlength,1),
OnCommand=function(self)
self:settext(GetJLineValue(v, p))
if string.find(p, "P1") then
self:horizalign(right)
else
self:horizalign(left)
end
self:diffusealpha(0):sleep(0.1 * i):decelerate(0.9):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1 * i):decelerate(0.3):diffusealpha(0)
end;
}
end
-- Letter grade and associated parts.
eval_parts[#eval_parts+1] = Def.ActorFrame{
InitCommand=cmd(x,_screen.cx + grade_parts_offs;y,_screen.cy/1.91),
--Containers. todo: replace with, erm... not quads
Def.Quad {
InitCommand=cmd(zoomto,190,115;diffuse,ColorMidTone(PlayerColor(p))),
OnCommand=function(self)
self:diffusealpha(0):decelerate(0.4):diffusealpha(0.5)
end,
OffCommand=cmd(decelerate,0.3;diffusealpha,0)
},
Def.Quad {
InitCommand=cmd(y,120;zoomto,190,120;diffuse,color("#fce1a1");),
OnCommand=function(self)
self:diffusealpha(0):decelerate(0.4):diffusealpha(0.3)
end,
OffCommand=cmd(decelerate,0.3;diffusealpha,0)
},
LoadActor(THEME:GetPathG("GradeDisplay", "Grade " .. p_grade)) .. {
InitCommand=cmd(zoom,0.75;);
OnCommand=function(self)
self:diffusealpha(0):zoom(1):sleep(0.63):decelerate(0.4):zoom(0.75):diffusealpha(1)
end;
OffCommand=cmd(decelerate,0.3;diffusealpha,0);
},
}
-- Primary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65);diffuse,ColorMidTone(PlayerColor(p));zoom,1;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "primary")):diffusealpha(0):sleep(0.5):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:decelerate(0.3):diffusealpha(0)
end;
}
-- Secondary score.
eval_parts[#eval_parts+1] = Def.BitmapText {
Font = "_overpass 36px",
InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+30;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1),
OnCommand=function(self)
self:settext(GetPlScore(p, "secondary")):diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1)
end;
OffCommand=function(self)
self:sleep(0.1):decelerate(0.3):diffusealpha(0)
end;
}
end
t[#t+1] = eval_parts
return t;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

+2 -2
View File
@@ -42,8 +42,8 @@ ModeIconColors = {
Normal = color("#339FF2"),
Rave = color("#6BFF90"),
Nonstop = color("#FF66AB"),
Oni = color("#6C58C1"),
Endless = color("#6040A7"),
Oni = color("#FF714D"),
Endless = color("#6A62CA"),
}
GameColor = {
+12 -2
View File
@@ -201,6 +201,11 @@ ShowHeader=false
ShowFooter=false
ShowHelp=false
[ScreenCredits]
ShowHeader=false
ShowFooter=false
ShowHelp=false
[ScreenHighScores]
Fallback="ScreenWithMenuElements"
ShowFooter=false
@@ -573,7 +578,7 @@ SongTimeY=SCREEN_CENTER_Y-78+2
SongTimeOnCommand=horizalign,left;zoom,1.0;diffuse,color("#DFE2E9")
ShowBPMDisplay=true
BPMDisplayX=SCREEN_CENTER_X-179-66
BPMDisplayX=SCREEN_CENTER_X-179-63
BPMDisplayY=SCREEN_CENTER_Y-78+2
BPMDisplayOnCommand=horizalign,right;zoom,1.0;
@@ -1026,6 +1031,11 @@ LifeDifficultyOffCommand=decelerate,0.3;diffusealpha,0;
#
StageDisplayUseShortString=false
[ScreenEvaluationSummary]
ShowTimingDifficulty=false
ShowLifeDifficulty=false
StageDisplayUseShortString=false
[ScreenGameOver]
ShowHeader=false
ShowFooter=false
@@ -1117,7 +1127,7 @@ SongTimeY=SCREEN_CENTER_Y-78+2
SongTimeOnCommand=horizalign,left;zoom,1.0;diffuse,color("#DFE2E9")
#
ShowBPMDisplay=true
BPMDisplayX=SCREEN_CENTER_X-179-66
BPMDisplayX=SCREEN_CENTER_X-179-63
BPMDisplayY=SCREEN_CENTER_Y-78+2
BPMDisplayOnCommand=horizalign,right;zoom,1.0;
#
+3 -3
View File
@@ -4,14 +4,14 @@ Lambda (formerly FiftyOne) is a modern, high-definition theme for StepMania 5.x.
Progress
-----------
I'd say it's about 96% done now; just needs a bit more fit and finish if needed. Feel free to contribute and make pull requests.
As of August 8, 2017, Lambda has been declared feature complete, and has been added to the StepMania source tree in its 5_1-new branch. Our priority right now is finding any possible bugs, performing final fit and finish tweaks, and possibly adding new sounds and music. This repository will continue to be updated with changes made to the "official" version in the StepMania source tree, and vice versa, so feel free to contribute on either repository.
Source code
-----------
Inkscape SVG source code is available for the majority of graphics created in the _src folder on the repository used to develop it, located at https://github.com/ListenerJubatus/smtheme-fiftyOne. Some of the original mockups are also included for reference, although they are meant primarily for reference purposes due to changes in the theme's style since these mockups (such as the removal of rounded corners and increased use of chamfered edges and diamond motifs).
Inkscape SVG source code is available for the majority of graphics created in the _src folder on the repository used to develop it, located at <https://github.com/ListenerJubatus/smtheme-fiftyOne> Some of the original mockups are also included for reference, although they are meant primarily for reference purposes due to changes in the theme's style since these mockups (such as the removal of rounded corners and increased use of chamfered edges and diamond motifs).
The main fonts are the current version of Roboto and Noto Sans <https://www.google.com/design/spec/resources/roboto-noto-fonts.html>, and Open Sans (although, preferably, Noto Sans should eventually be used in any location Open Sans is currently used). Certain accents make use of the font Overpass. <http://overpassfont.org/>
The main fonts are the current version of Roboto and Noto Sans <https://www.google.com/design/spec/resources/roboto-noto-fonts.html>, and Open Sans (although, preferably, Noto Sans should eventually be used in any location Open Sans is currently used). Certain accents make use of the fonts Overpass <http://overpassfont.org/> and Zeroes <http://www.dafont.com/zero-threes.font>
License