From 79e4e672d2b16f246fa790719f4297451c43ad3f Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Wed, 9 Jun 2010 13:06:47 -0500 Subject: [PATCH] various system direction stuff from midi --- .../BGAnimations/ScreenTitleMenu underlay.lua | 1 + .../ScreenSelectMusic CourseContentsList.lua | 15 +++-- .../default.lua | 40 +++++++++++++ .../ScreenWithMenuElements StageDisplay.lua | 55 +++++++++++------- Themes/default/metrics.ini | 10 +++- .../ScreenSelectMusic DifficultyDisplay.psd | Bin 0 -> 75718 bytes 6 files changed, 91 insertions(+), 30 deletions(-) create mode 100644 Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua create mode 100644 Themes/default/~res/ScreenSelectMusic DifficultyDisplay.psd diff --git a/Themes/default/BGAnimations/ScreenTitleMenu underlay.lua b/Themes/default/BGAnimations/ScreenTitleMenu underlay.lua index e14dacf3cb..2f805742e1 100644 --- a/Themes/default/BGAnimations/ScreenTitleMenu underlay.lua +++ b/Themes/default/BGAnimations/ScreenTitleMenu underlay.lua @@ -7,5 +7,6 @@ t[#t+1] = StandardDecorationFromFileOptional("CurrentGametype","CurrentGametype" t[#t+1] = StandardDecorationFromFileOptional("LifeDifficulty","LifeDifficulty"); t[#t+1] = StandardDecorationFromFileOptional("TimingDifficulty","TimingDifficulty"); t[#t+1] = StandardDecorationFromFileOptional("NetworkStatus","NetworkStatus"); +t[#t+1] = StandardDecorationFromFileOptional("SystemDirection","SystemDirection"); return t \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua b/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua index 1ad53c26fb..f1287177db 100644 --- a/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua +++ b/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua @@ -8,9 +8,12 @@ return Def.CourseContentsList { HideCommand=cmd(linear,0.3;zoomy,0); SetCommand=function(self) self:SetFromGameState(); + self:PositionItems(); + self:SetTransformFromHeight(44); self:SetCurrentAndDestinationItem(0); +-- self:SetDestinationItem( self:GetNumItems()-2 ); self:SetLoop(false); - self:SetMask(270,44); + self:SetMask(270,0); end; CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set"); CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set"); @@ -34,7 +37,7 @@ return Def.CourseContentsList { }; Def.TextBanner { - InitCommand=cmd(x,-96;y,1;Load,"TextBanner";SetFromString,"", "", "", "", "", ""); + InitCommand=cmd(x,-128;y,1;Load,"TextBanner";SetFromString,"", "", "", "", "", ""); SetSongCommand=function(self, params) if params.Song then if GAMESTATE:GetCurrentCourse():GetDisplayFullTitle() == "Abomination" then @@ -65,17 +68,17 @@ return Def.CourseContentsList { end; }; - LoadFont("CourseEntryDisplay","number") .. { - InitCommand=cmd(x,-114-8;y,-12;shadowlength,1); +--[[ LoadFont("CourseEntryDisplay","number") .. { + InitCommand=cmd(x,114+8;y,-12;shadowlength,1); SetSongCommand=function(self, params) self:settext(string.format("#%i", params.Number)); (cmd(finishtweening;zoom,0.5;zoomy,0.5*1.5;diffusealpha,0;sleep,0.125*params.Number;linear,0.125;diffusealpha,1;linear,0.05;zoomy,0.5*1;zoomx,0.5*1.1;glow,color("1,1,1,0.5");decelerate,0.1;zoom,0.5;glow,color("1,1,1,0")))(self); end; - }; + }; --]] LoadFont("CourseEntryDisplay","difficulty") .. { Text="0"; - InitCommand=cmd(x,-114;y,3;zoom,0.75;shadowlength,1); + InitCommand=cmd(x,114;y,0;zoom,0.75;shadowlength,1); SetSongCommand=function(self, params) if params.PlayerNumber ~= GAMESTATE:GetMasterPlayerNumber() then return end self:settext( params.Meter ); diff --git a/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua b/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua new file mode 100644 index 0000000000..0e2ffa3620 --- /dev/null +++ b/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua @@ -0,0 +1,40 @@ +local t = Def.ActorFrame {}; +local tInfo = { + {"EventMode","Stages"}, + {"LifeDifficulty","Life"}, + {"TimingDifficulty","Difficulty"}, +}; +local fSpacingX = 72; + +local function MakeIcon( sTarget ) + local t = Def.ActorFrame { + LoadActor(THEME:GetPathG("MenuTimer","Frame")); + LoadFont("Common Normal") .. { + Text=sTarget[2]; + InitCommand=cmd(y,24+2;zoom,0.5;shadowlength,1); + }; + -- + LoadFont("Common Normal") .. { + Text="TEST"; +-- Text=( PREFSMAN:GetPreference("EventMode") ) and "∞" or PREFSMAN:GetPreference("SongsPerPlay"); + OnCommand=cmd(settext,"4"); + Condition=sTarget[1] == "EventMode"; + }; + -- +--[[ for i=1,8 do + t[#t+1] = Def.Quad { + InitCommand=cmd(vertalign,bottom;zoomto,4,10+(i*4)); + }; + end --]] + }; + return t +end; + +for i=1,#tInfo do + t[#t+1] = MakeIcon( tInfo[i] ) .. { + InitCommand=cmd(x,(i-1)*fSpacingX); + }; +end + +return t + diff --git a/Themes/default/Graphics/ScreenWithMenuElements StageDisplay.lua b/Themes/default/Graphics/ScreenWithMenuElements StageDisplay.lua index 8ff0ef4a2a..551af1bec3 100644 --- a/Themes/default/Graphics/ScreenWithMenuElements StageDisplay.lua +++ b/Themes/default/Graphics/ScreenWithMenuElements StageDisplay.lua @@ -10,29 +10,40 @@ function MakeBitmapTest() }; end - -for s in ivalues(Stage) do +if not PREFSMAN:GetPreference("EventMode") then + for s in ivalues(Stage) do + stages[#stages+1] = MakeBitmapTest() .. { + SetCommand=function(self, params) + local Stage = GAMESTATE:GetCurrentStage(); + local StageIndex = GAMESTATE:GetCurrentStageIndex(); + local screen = SCREENMAN:GetTopScreen(); + local cStageOutlineColor = ColorDarkTone( StageToStrokeColor(s) ); + cStageOutlineColor[4] = 0.75; + if screen and screen.GetStageStats then + local ss = screen:GetStageStats(); + Stage = ss:GetStage(); + StageIndex = ss:GetStageIndex(); + end + self:visible( Stage == s ); + if Stage == 'Stage_Event' then + self:settext( StageToLocalizedString(Stage) .. " Mode" ); + else + self:settext( StageToLocalizedString(Stage) .. " Stage" ); + end + self:diffuse( StageToColor(s) ); + self:diffusebottomedge( ColorMidTone(StageToColor(s)) ); + self:strokecolor( cStageOutlineColor ); + end; + } + end +else stages[#stages+1] = MakeBitmapTest() .. { - SetCommand=function(self, params) - local Stage = GAMESTATE:GetCurrentStage(); - local StageIndex = GAMESTATE:GetCurrentStageIndex(); - local screen = SCREENMAN:GetTopScreen(); - local cStageOutlineColor = ColorDarkTone( StageToStrokeColor(s) ); - cStageOutlineColor[4] = 0.75; - if screen and screen.GetStageStats then - local ss = screen:GetStageStats(); - Stage = ss:GetStage(); - StageIndex = ss:GetStageIndex(); - end - self:visible( Stage == s ); - if Stage == 'Stage_Event' then - self:settext( StageToLocalizedString(Stage) .. " Mode" ); - else - self:settext( StageToLocalizedString(Stage) .. " Stage" ); - end - self:diffuse( StageToColor(s) ); - self:diffusebottomedge( ColorMidTone(StageToColor(s)) ); - self:strokecolor( cStageOutlineColor ); + SetCommand=function(self,params) + local Stage = GAMESTATE:GetCurrentStageIndex(); + self:settextf( "Stage %03i", Stage); + self:diffuse( StageToColor('Stage_1st') ); + self:diffusebottomedge( ColorMidTone(StageToColor('Stage_1st')) ); + self:strokecolor( Colors.Alpha( ColorDarkTone(StageToColor('Stage_1st')), 0.75) ); end; } end diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 97cbfd6e16..688ef0c7f2 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -552,7 +552,7 @@ PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ end TextureCoordScaleX=1 NumPills=1 -AlwaysBounceNormalBar=true +AlwaysBounceNormalBar=false [TextBanner] TitleOnCommand=horizalign,left;shadowlength,1; @@ -699,6 +699,12 @@ TimingDifficultyY=(SCREEN_HEIGHT*0.1575)-24 TimingDifficultyOnCommand=vertalign,bottom;horizalign,right;zoom,0.5; TimingDifficultyOffCommand= # +ShowSystemDirection=true +SystemDirectionX=SCREEN_LEFT+40 +SystemDirectionY=SCREEN_TOP+24 +SystemDirectionOnCommand= +SystemDirectionOffCommand= +# ShowVersionInfo=true VersionInfoX=SCREEN_WIDTH*0.9875 VersionInfoY=SCREEN_HEIGHT*0.8825 @@ -837,7 +843,7 @@ WrapScroller=false UseIconMetrics=true # IconGainFocusCommand=stoptweening;bounceend,0.125;zoom,1; -IconLoseFocusCommand=stoptweening;decelerate,0.25;zoom,0.6; +IconLoseFocusCommand=stoptweening;decelerate,0.125;zoom,0.6; # IconChoiceEasyX=SCREEN_CENTER_X-160 IconChoiceEasyY=SCREEN_CENTER_Y-48 diff --git a/Themes/default/~res/ScreenSelectMusic DifficultyDisplay.psd b/Themes/default/~res/ScreenSelectMusic DifficultyDisplay.psd new file mode 100644 index 0000000000000000000000000000000000000000..f8de5ba2a867de47f0bd83790984982e0faeafe6 GIT binary patch literal 75718 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 literal 0 HcmV?d00001