diff --git a/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua b/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua index bba442f8e6..c01da0b495 100644 --- a/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua +++ b/Themes/default/BGAnimations/ScreenGameplay underlay/ScreenFilter.lua @@ -1,65 +1,83 @@ ---[[ Screen Filter ]] -local numPlayers = GAMESTATE:GetNumPlayersEnabled() -local center1P = PREFSMAN:GetPreference("Center1Player") - -local padding = 8 -- 4px on each side -local arrowWidth = 64 -- until noteskin metrics are implemented... - -local filterColor = color("0.135,0.135,0.135,1") -local filterAlphas = { - PlayerNumber_P1 = 1, - PlayerNumber_P2 = 1, - Default = 0, -} - -local t = Def.ActorFrame{}; - -local style = GAMESTATE:GetCurrentStyle() -local cols = style:ColumnsPerPlayer() -local styleType = ToEnumShortString(style:GetStyleType()) -local filterWidth = (arrowWidth * cols) + padding - -if numPlayers == 1 then - local player = GAMESTATE:GetMasterPlayerNumber() - local pNum = (player == PLAYER_1) and 1 or 2 - filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); - - local pos; - -- [ScreenGameplay] PlayerP#Player*Side(s)X - if center1P then - pos = SCREEN_CENTER_X - else - local metricName = string.format("PlayerP%i%sX",pNum,styleType) - pos = THEME:GetMetric("ScreenGameplay",metricName) - end - t[#t+1] = Def.Quad{ - Name="SinglePlayerFilter"; - InitCommand=cmd(x,pos;CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); - }; -else - -- two players... a bit more complex. - if styleType == "TwoPlayersSharedSides" then - -- routine, just use one in the center. - local player = GAMESTATE:GetMasterPlayerNumber() - local pNum = player == PLAYER_1 and 1 or 2 - local metricName = "PlayerP".. pNum .."TwoPlayersSharedSidesX" - t[#t+1] = Def.Quad{ - Name="RoutineFilter"; - InitCommand=cmd(x,THEME:GetMetric("ScreenGameplay",metricName);CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); - }; - else - -- otherwise we need two separate ones. to the pairsmobile! - for i, player in ipairs(PlayerNumber) do - local pNum = (player == PLAYER_1) and 1 or 2 - filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); - local metricName = string.format("PlayerP%i%sX",pNum,styleType) - local pos = THEME:GetMetric("ScreenGameplay",metricName) - t[#t+1] = Def.Quad{ - Name="Player"..pNum.."Filter"; - InitCommand=cmd(x,pos;CenterY;zoomto,filterWidth,SCREEN_HEIGHT;diffusecolor,filterColor;diffusealpha,filterAlphas[player]); - }; - end - end -end - +--[[ Screen Filter ]] +local numPlayers = GAMESTATE:GetNumPlayersEnabled() +local center1P = PREFSMAN:GetPreference("Center1Player") + +local padding = 8 -- 4px on each side +local arrowWidth = 64 -- until noteskin metrics are implemented... + +local filterColor = color("0.135,0.135,0.135,1") +local filterAlphas = { + PlayerNumber_P1 = 1, + PlayerNumber_P2 = 1, + Default = 0, +} + +local t = Def.ActorFrame{}; + +local style = GAMESTATE:GetCurrentStyle() +local cols = style:ColumnsPerPlayer() +local styleType = ToEnumShortString(style:GetStyleType()) +local filterWidth = (arrowWidth * cols) + padding + +if numPlayers == 1 then + local player = GAMESTATE:GetMasterPlayerNumber() + local pNum = (player == PLAYER_1) and 1 or 2 + filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); + + local pos; + -- [ScreenGameplay] PlayerP#Player*Side(s)X + if center1P then + pos = SCREEN_CENTER_X + else + local metricName = string.format("PlayerP%i%sX",pNum,styleType) + pos = THEME:GetMetric("ScreenGameplay",metricName) + end + t[#t+1] = Def.Quad{ + Name="SinglePlayerFilter"; + InitCommand=function(self) + self:x(pos); + self:CenterY(); + self:zoomto(filterWidth, SCREEN_HEIGHT); + self:diffusecolor(filterColor); + self:diffusealpha(filterAlphas[player]); + end; + }; +else + -- two players... a bit more complex. + if styleType == "TwoPlayersSharedSides" then + -- routine, just use one in the center. + local player = GAMESTATE:GetMasterPlayerNumber() + local pNum = player == PLAYER_1 and 1 or 2 + local metricName = "PlayerP".. pNum .."TwoPlayersSharedSidesX" + t[#t+1] = Def.Quad{ + Name="RoutineFilter"; + InitCommand=function(self) + self:x(THEME:GetMetric("ScreenGameplay",metricName)); + self:CenterY(); + self:zoomto(filterWidth, SCREEN_HEIGHT); + self:diffusecolor(filterColor); + self:diffusealpha(filterAlphas[player]); + end; + }; + else + -- otherwise we need two separate ones. to the pairsmobile! + for i, player in ipairs(PlayerNumber) do + local pNum = (player == PLAYER_1) and 1 or 2 + filterAlphas[player] = tonumber(getenv("ScreenFilterP"..pNum)); + local metricName = string.format("PlayerP%i%sX",pNum,styleType) + local pos = THEME:GetMetric("ScreenGameplay",metricName) + t[#t+1] = Def.Quad{ + Name="Player"..pNum.."Filter"; + InitCommand=function(self) + self:x(pos); + self:CenterY(); + self:zoomto(filterWidth, SCREEN_HEIGHT); + self:diffusecolor(filterColor); + self:diffusealpha(filterAlphas[player]); + end; + }; + end + end +end + return t; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenHowToInstallSongs overlay.lua b/Themes/default/BGAnimations/ScreenHowToInstallSongs overlay.lua index 9a81d425c1..a046ad0340 100644 --- a/Themes/default/BGAnimations/ScreenHowToInstallSongs overlay.lua +++ b/Themes/default/BGAnimations/ScreenHowToInstallSongs overlay.lua @@ -3,9 +3,29 @@ local t = Def.ActorFrame{ LoadFont("Common Normal")..{ Name="Header"; - InitCommand=cmd(x,SCREEN_LEFT+24;y,SCREEN_TOP+24;halign,0;diffuse,color("#CCCCCC");settext,Screen.String("BodyHeader");shadowlength,1;shadowcolor,HSV(40,0,0.6);diffusetopedge,color("#FFFFFF")); - OnCommand=cmd(queuecommand,"Anim"); - AnimCommand=cmd(cropright,1;faderight,1;addx,96;decelerate,1;addx,-96;skewx,-0.1;cropright,0;faderight,0;); + InitCommand=function(self) + self:x(SCREEN_LEFT + 24); + self:y(SCREEN_TOP + 24); + self:halign(0); + self:diffuse(color("#CCCCCC")); + self:settext(Screen.String("BodyHeader")); + self:shadowlength(1); + self:shadowcolor(HSV(40,0,0.6)); + self:diffusetopedge(color("#FFFFFF")); + end; + OnCommand=function(self) + self:queuecommand("Anim"); + end; + AnimCommand=function(self) + self:cropright(1); + self:faderight(1); + self:addx(96); + self:decelerate(1); + self:addx(-96); + self:skewx(-0.1); + self:cropright(0); + self:faderight(0); + end; }; -- todo: add explantion paragraph here (above the scroller) }; diff --git a/Themes/default/BGAnimations/ScreenSelectProfile overlay.lua b/Themes/default/BGAnimations/ScreenSelectProfile overlay.lua index deb078f929..e0ee9f1f2d 100644 --- a/Themes/default/BGAnimations/ScreenSelectProfile overlay.lua +++ b/Themes/default/BGAnimations/ScreenSelectProfile overlay.lua @@ -1,298 +1,290 @@ -function GetLocalProfiles() - local ret = {}; - - for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do - local profile=PROFILEMAN:GetLocalProfileFromIndex(p); - local item = Def.ActorFrame { ---[[ Def.Quad { - InitCommand=cmd(zoomto,200,1;y,40/2); - OnCommand=cmd(diffuse,Color('Outline');); - }; --]] - LoadFont("Common Normal") .. { - Text=profile:GetDisplayName(); - InitCommand=cmd(shadowlength,1;y,-10;zoom,1;ztest,true); - }; - LoadFont("Common Normal") .. { - InitCommand=cmd(shadowlength,1;y,8;zoom,0.5;vertspacing,-8;ztest,true); - BeginCommand=function(self) - local numSongsPlayed = profile:GetNumTotalSongsPlayed(); - local s = numSongsPlayed == 1 and "Song" or "Songs"; - self:settext( string.format(THEME:GetString("ScreenSelectProfile","%d "..s.." Played"),numSongsPlayed) ); - end; - }; - }; - table.insert( ret, item ); - end; - - return ret; -end; - -function LoadCard(cColor) - local t = Def.ActorFrame { - LoadActor( THEME:GetPathG("ScreenSelectProfile","CardBackground") ) .. { - InitCommand=cmd(diffuse,cColor); - }; - LoadActor( THEME:GetPathG("ScreenSelectProfile","CardFrame") ); - }; - return t -end -function LoadPlayerStuff(Player) - local ret = {}; - - local pn = (Player == PLAYER_1) and 1 or 2; - ---[[ local t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 200, 230) .. { - Name = 'BigFrame'; - }; --]] - local t = Def.ActorFrame { - Name = 'JoinFrame'; - LoadCard(Color('Orange')); ---[[ Def.Quad { - InitCommand=cmd(zoomto,200+4,230+4); - OnCommand=cmd(shadowlength,1;diffuse,color("0,0,0,0.5")); - }; - Def.Quad { - InitCommand=cmd(zoomto,200,230); - OnCommand=cmd(diffuse,Color('Orange');diffusealpha,0.5); - }; --]] - LoadFont("Common Normal") .. { - Text=THEME:GetString("ScreenSelectProfile","PressStart"); - InitCommand=cmd(shadowlength,1); - OnCommand=cmd(diffuseshift;effectcolor1,Color('White');effectcolor2,color("0.5,0.5,0.5")); - }; - }; - table.insert( ret, t ); - - t = Def.ActorFrame { - Name = 'BigFrame'; - LoadCard(PlayerColor(Player)); - }; - table.insert( ret, t ); - ---[[ t = LoadActor(THEME:GetPathB('', '_frame 3x3'), 'metal', 170, 20) .. { - Name = 'SmallFrame'; - }; --]] - t = Def.ActorFrame { - Name = 'SmallFrame'; ---[[ Def.Quad { - InitCommand=cmd(zoomto,170+4,32+4); - OnCommand=cmd(shadowlength,1); - }; --]] - InitCommand=cmd(y,-2); - Def.Quad { - InitCommand=cmd(zoomto,200-10,40+2); - OnCommand=cmd(diffuse,Color('Black');diffusealpha,0.5); - }; - Def.Quad { - InitCommand=cmd(zoomto,200-10,40); - OnCommand=cmd(diffuse,PlayerColor(Player);fadeleft,0.25;faderight,0.25;glow,color("1,1,1,0.25")); - }; - Def.Quad { - InitCommand=cmd(zoomto,200-10,40;y,-40/2+20); - OnCommand=cmd(diffuse,Color("Black");fadebottom,1;diffusealpha,0.35); - }; - Def.Quad { - InitCommand=cmd(zoomto,200-10,1;y,-40/2+1); - OnCommand=cmd(diffuse,PlayerColor(Player);glow,color("1,1,1,0.25")); - }; - }; - table.insert( ret, t ); - - t = Def.ActorScroller{ - Name = 'ProfileScroller'; - NumItemsToDraw=6; --- InitCommand=cmd(y,-230/2+20;); - OnCommand=cmd(y,1;SetFastCatchup,true;SetMask,200,58;SetSecondsPerItem,0.15); - TransformFunction=function(self, offset, itemIndex, numItems) - local focus = scale(math.abs(offset),0,2,1,0); - self:visible(false); - self:y(math.floor( offset*40 )); --- self:zoomy( focus ); --- self:z(-math.abs(offset)); --- self:zoom(focus); - end; - children = GetLocalProfiles(); - }; - table.insert( ret, t ); - - t = Def.ActorFrame { - Name = "EffectFrame"; - --[[ Def.Quad { - InitCommand=cmd(y,-230/2;vertalign,top;zoomto,200,8;fadebottom,1); - OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25); - }; - Def.Quad { - InitCommand=cmd(y,230/2;vertalign,bottom;zoomto,200,8;fadetop,1); - OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25); - }; --]] - }; - table.insert( ret, t ); ---[[ t = Def.BitmapText { - OnCommand = cmd(y,160); - Name = 'SelectedProfileText'; - Font = "Common Normal"; - Text = 'No profile'; - }; --]] - t = LoadFont("Common Normal") .. { - Name = 'SelectedProfileText'; - --InitCommand=cmd(y,160;shadowlength,1;diffuse,PlayerColor(Player)); - InitCommand=cmd(y,160;shadowlength,1;); - }; - table.insert( ret, t ); - - return ret; -end; - -function UpdateInternal3(self, Player) - local pn = (Player == PLAYER_1) and 1 or 2; - local frame = self:GetChild(string.format('P%uFrame', pn)); - local scroller = frame:GetChild('ProfileScroller'); - local seltext = frame:GetChild('SelectedProfileText'); - local joinframe = frame:GetChild('JoinFrame'); - local smallframe = frame:GetChild('SmallFrame'); - local bigframe = frame:GetChild('BigFrame'); - - if GAMESTATE:IsHumanPlayer(Player) then - frame:visible(true); - if MEMCARDMAN:GetCardState(Player) == 'MemoryCardState_none' then - --using profile if any - joinframe:visible(false); - smallframe:visible(true); - bigframe:visible(true); - seltext:visible(true); - scroller:visible(true); - local ind = SCREENMAN:GetTopScreen():GetProfileIndex(Player); - if ind > 0 then - scroller:SetDestinationItem(ind-1); - seltext:settext(PROFILEMAN:GetLocalProfileFromIndex(ind-1):GetDisplayName()); - else - if SCREENMAN:GetTopScreen():SetProfileIndex(Player, 1) then - scroller:SetDestinationItem(0); - self:queuecommand('UpdateInternal2'); - else - joinframe:visible(true); - smallframe:visible(false); - bigframe:visible(false); - scroller:visible(false); - seltext:settext('No profile'); - end; - end; - else - --using card - smallframe:visible(false); - scroller:visible(false); - seltext:settext('CARD'); - SCREENMAN:GetTopScreen():SetProfileIndex(Player, 0); - end; - else - joinframe:visible(true); - scroller:visible(false); - seltext:visible(false); - smallframe:visible(false); - bigframe:visible(false); - end; -end; - -local t = Def.ActorFrame { - - StorageDevicesChangedMessageCommand=function(self, params) - self:queuecommand('UpdateInternal2'); - end; - - CodeMessageCommand = function(self, params) - if params.Name == 'Start' or params.Name == 'Center' then - MESSAGEMAN:Broadcast("StartButton"); - if not GAMESTATE:IsHumanPlayer(params.PlayerNumber) then - SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -1); - else - SCREENMAN:GetTopScreen():Finish(); - end; - end; - if params.Name == 'Up' or params.Name == 'Up2' or params.Name == 'DownLeft' then - if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then - local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber); - if ind > 1 then - if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind - 1 ) then - MESSAGEMAN:Broadcast("DirectionButton"); - self:queuecommand('UpdateInternal2'); - end; - end; - end; - end; - if params.Name == 'Down' or params.Name == 'Down2' or params.Name == 'DownRight' then - if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then - local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber); - if ind > 0 then - if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind + 1 ) then - MESSAGEMAN:Broadcast("DirectionButton"); - self:queuecommand('UpdateInternal2'); - end; - end; - end; - end; - if params.Name == 'Back' then - if GAMESTATE:GetNumPlayersEnabled()==0 then - SCREENMAN:GetTopScreen():Cancel(); - else - MESSAGEMAN:Broadcast("BackButton"); - SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -2); - end; - end; - end; - - PlayerJoinedMessageCommand=function(self, params) - self:queuecommand('UpdateInternal2'); - end; - - PlayerUnjoinedMessageCommand=function(self, params) - self:queuecommand('UpdateInternal2'); - end; - - OnCommand=function(self, params) - self:queuecommand('UpdateInternal2'); - end; - - UpdateInternal2Command=function(self) - UpdateInternal3(self, PLAYER_1); - UpdateInternal3(self, PLAYER_2); - end; - - children = { - Def.ActorFrame { - Name = 'P1Frame'; - InitCommand=cmd(x,SCREEN_CENTER_X-160;y,SCREEN_CENTER_Y); - OnCommand=cmd(zoom,0;bounceend,0.35;zoom,1); - OffCommand=cmd(bouncebegin,0.35;zoom,0); - PlayerJoinedMessageCommand=function(self,param) - if param.Player == PLAYER_1 then - (cmd(;zoom,1.15;bounceend,0.175;zoom,1.0;))(self); - end; - end; - children = LoadPlayerStuff(PLAYER_1); - }; - Def.ActorFrame { - Name = 'P2Frame'; - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y); - OnCommand=cmd(zoom,0;bounceend,0.35;zoom,1); - OffCommand=cmd(bouncebegin,0.35;zoom,0); - PlayerJoinedMessageCommand=function(self,param) - if param.Player == PLAYER_2 then - (cmd(zoom,1.15;bounceend,0.175;zoom,1.0;))(self); - end; - end; - children = LoadPlayerStuff(PLAYER_2); - }; - -- sounds - LoadActor( THEME:GetPathS("Common","start") )..{ - StartButtonMessageCommand=cmd(play); - }; - LoadActor( THEME:GetPathS("Common","cancel") )..{ - BackButtonMessageCommand=cmd(play); - }; - LoadActor( THEME:GetPathS("Common","value") )..{ - DirectionButtonMessageCommand=cmd(play); - }; - }; -}; - -return t; +function GetLocalProfiles() + local ret = {}; + + for p = 0,PROFILEMAN:GetNumLocalProfiles()-1 do + local profile=PROFILEMAN:GetLocalProfileFromIndex(p); + local item = Def.ActorFrame { + + LoadFont("Common Normal") .. { + Text=profile:GetDisplayName(); + InitCommand=cmd(shadowlength,1;y,-10;zoom,1;ztest,true); + }; + LoadFont("Common Normal") .. { + InitCommand=cmd(shadowlength,1;y,8;zoom,0.5;vertspacing,-8;ztest,true); + BeginCommand=function(self) + local numSongsPlayed = profile:GetNumTotalSongsPlayed(); + local s = numSongsPlayed == 1 and "Song" or "Songs"; + self:settext( string.format(THEME:GetString("ScreenSelectProfile","%d "..s.." Played"),numSongsPlayed) ); + end; + }; + }; + table.insert( ret, item ); + end; + + return ret; +end; + +function LoadCard(cColor) + local t = Def.ActorFrame { + LoadActor( THEME:GetPathG("ScreenSelectProfile","CardBackground") ) .. { + InitCommand=cmd(diffuse,cColor); + }; + LoadActor( THEME:GetPathG("ScreenSelectProfile","CardFrame") ); + }; + return t +end +function LoadPlayerStuff(Player) + local ret = {}; + + local pn = (Player == PLAYER_1) and 1 or 2; + + local t = Def.ActorFrame { + Name = 'JoinFrame'; + LoadCard(Color('Orange')); + + LoadFont("Common Normal") .. { + Text=THEME:GetString("ScreenSelectProfile","PressStart"); + InitCommand=cmd(shadowlength,1); + OnCommand=cmd(diffuseshift;effectcolor1,Color('White');effectcolor2,color("0.5,0.5,0.5")); + }; + }; + table.insert( ret, t ); + + t = Def.ActorFrame { + Name = 'BigFrame'; + LoadCard(PlayerColor(Player)); + }; + table.insert( ret, t ); + + t = Def.ActorFrame { + Name = 'SmallFrame'; + + InitCommand=cmd(y,-2); + Def.Quad { + InitCommand=cmd(zoomto,200-10,40+2); + OnCommand=cmd(diffuse,Color('Black');diffusealpha,0.5); + }; + Def.Quad { + InitCommand=cmd(zoomto,200-10,40); + OnCommand=cmd(diffuse,PlayerColor(Player);fadeleft,0.25;faderight,0.25;glow,color("1,1,1,0.25")); + }; + Def.Quad { + InitCommand=cmd(zoomto,200-10,40;y,-40/2+20); + OnCommand=cmd(diffuse,Color("Black");fadebottom,1;diffusealpha,0.35); + }; + Def.Quad { + InitCommand=cmd(zoomto,200-10,1;y,-40/2+1); + OnCommand=cmd(diffuse,PlayerColor(Player);glow,color("1,1,1,0.25")); + }; + }; + table.insert( ret, t ); + + t = Def.ActorScroller{ + Name = 'ProfileScroller'; + NumItemsToDraw=6; + OnCommand=cmd(y,1;SetFastCatchup,true;SetMask,200,58;SetSecondsPerItem,0.15); + TransformFunction=function(self, offset, itemIndex, numItems) + local focus = scale(math.abs(offset),0,2,1,0); + self:visible(false); + self:y(math.floor( offset*40 )); + end; + children = GetLocalProfiles(); + }; + table.insert( ret, t ); + + t = Def.ActorFrame { + Name = "EffectFrame"; + }; + table.insert( ret, t ); + t = LoadFont("Common Normal") .. { + Name = 'SelectedProfileText'; + InitCommand=cmd(y,160;shadowlength,1;); + }; + table.insert( ret, t ); + + return ret; +end; + +function UpdateInternal3(self, Player) + local pn = (Player == PLAYER_1) and 1 or 2; + local frame = self:GetChild(string.format('P%uFrame', pn)); + local scroller = frame:GetChild('ProfileScroller'); + local seltext = frame:GetChild('SelectedProfileText'); + local joinframe = frame:GetChild('JoinFrame'); + local smallframe = frame:GetChild('SmallFrame'); + local bigframe = frame:GetChild('BigFrame'); + + if GAMESTATE:IsHumanPlayer(Player) then + frame:visible(true); + if MEMCARDMAN:GetCardState(Player) == 'MemoryCardState_none' then + --using profile if any + joinframe:visible(false); + smallframe:visible(true); + bigframe:visible(true); + seltext:visible(true); + scroller:visible(true); + local ind = SCREENMAN:GetTopScreen():GetProfileIndex(Player); + if ind > 0 then + scroller:SetDestinationItem(ind-1); + seltext:settext(PROFILEMAN:GetLocalProfileFromIndex(ind-1):GetDisplayName()); + else + if SCREENMAN:GetTopScreen():SetProfileIndex(Player, 1) then + scroller:SetDestinationItem(0); + self:queuecommand('UpdateInternal2'); + else + joinframe:visible(true); + smallframe:visible(false); + bigframe:visible(false); + scroller:visible(false); + seltext:settext('No profile'); + end; + end; + else + --using card + smallframe:visible(false); + scroller:visible(false); + seltext:settext('CARD'); + SCREENMAN:GetTopScreen():SetProfileIndex(Player, 0); + end; + else + joinframe:visible(true); + scroller:visible(false); + seltext:visible(false); + smallframe:visible(false); + bigframe:visible(false); + end; +end; + +local t = Def.ActorFrame { + + StorageDevicesChangedMessageCommand=function(self, params) + self:queuecommand('UpdateInternal2'); + end; + + CodeMessageCommand = function(self, params) + if params.Name == 'Start' or params.Name == 'Center' then + MESSAGEMAN:Broadcast("StartButton"); + if not GAMESTATE:IsHumanPlayer(params.PlayerNumber) then + SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -1); + else + SCREENMAN:GetTopScreen():Finish(); + end; + end; + if params.Name == 'Up' or params.Name == 'Up2' or params.Name == 'DownLeft' then + if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then + local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber); + if ind > 1 then + if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind - 1 ) then + MESSAGEMAN:Broadcast("DirectionButton"); + self:queuecommand('UpdateInternal2'); + end; + end; + end; + end; + if params.Name == 'Down' or params.Name == 'Down2' or params.Name == 'DownRight' then + if GAMESTATE:IsHumanPlayer(params.PlayerNumber) then + local ind = SCREENMAN:GetTopScreen():GetProfileIndex(params.PlayerNumber); + if ind > 0 then + if SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, ind + 1 ) then + MESSAGEMAN:Broadcast("DirectionButton"); + self:queuecommand('UpdateInternal2'); + end; + end; + end; + end; + if params.Name == 'Back' then + if GAMESTATE:GetNumPlayersEnabled()==0 then + SCREENMAN:GetTopScreen():Cancel(); + else + MESSAGEMAN:Broadcast("BackButton"); + SCREENMAN:GetTopScreen():SetProfileIndex(params.PlayerNumber, -2); + end; + end; + end; + + PlayerJoinedMessageCommand=function(self, params) + self:queuecommand('UpdateInternal2'); + end; + + PlayerUnjoinedMessageCommand=function(self, params) + self:queuecommand('UpdateInternal2'); + end; + + OnCommand=function(self, params) + self:queuecommand('UpdateInternal2'); + end; + + UpdateInternal2Command=function(self) + UpdateInternal3(self, PLAYER_1); + UpdateInternal3(self, PLAYER_2); + end; + + children = { + Def.ActorFrame { + Name = 'P1Frame'; + InitCommand=function(self) + self:x(SCREEN_CENTER_X - 160); + self:y(SCREEN_CENTER_Y); + end; + OnCommand=function(self) + self:zoom(0); + self:bounceend(0.35); + self:zoom(1); + end; + OffCommand=function(self) + self:bouncebegin(0.35); + self:zoom(0); + end; + PlayerJoinedMessageCommand=function(self,param) + if param.Player == PLAYER_1 then + self:zoom(1.15); + self:bounceend(0.175); + self:zoom(1.0); + end; + end; + children = LoadPlayerStuff(PLAYER_1); + }; + Def.ActorFrame { + Name = 'P2Frame'; + InitCommand=function(self) + self:x(SCREEN_CENTER_X + 160); + self:y(SCREEN_CENTER_Y); + end; + OnCommand=function(self) + self:zoom(0); + self:bounceend(0.35); + self:zoom(1); + end; + OffCommand=function(self) + self:bouncebegin(0.35); + self:zoom(0); + end; + PlayerJoinedMessageCommand=function(self,param) + if param.Player == PLAYER_2 then + self:zoom(1.15); + self:bounceend(0.175); + self:zoom(1.0); + end; + end; + children = LoadPlayerStuff(PLAYER_2); + }; + -- sounds + LoadActor( THEME:GetPathS("Common","start") )..{ + StartButtonMessageCommand=function(self) + self:play(); + end; + }; + LoadActor( THEME:GetPathS("Common","cancel") )..{ + BackButtonMessageCommand=function(self) + self:play(); + end; + }; + LoadActor( THEME:GetPathS("Common","value") )..{ + DirectionButtonMessageCommand=function(self) + self:play(); + end; + }; + }; +}; + +return t; diff --git a/Themes/default/BGAnimations/ScreenWithMenuElements background/_particleLoader.lua b/Themes/default/BGAnimations/ScreenWithMenuElements background/_particleLoader.lua index e44c6cca0b..642dde0c63 100644 --- a/Themes/default/BGAnimations/ScreenWithMenuElements background/_particleLoader.lua +++ b/Themes/default/BGAnimations/ScreenWithMenuElements background/_particleLoader.lua @@ -1,74 +1,80 @@ -local hideFancyElements = (ThemePrefs.Get("FancyUIBG") == false) -local t = Def.ActorFrame{}; -if hideFancyElements then return t; end - -local Params = { - NumParticles = 30, - VelocityXMin = 100, - VelocityXMax = 400, - VelocityYMin = 0, - VelocityYMax = 0, - VelocityZMin = 0, - VelocityZMax = 0, - BobRateZMin = 0.4, - BobRateZMax = 0.7, - ZoomMin = 0.5, - ZoomMax = 1, - SpinZ = 0, - BobZ = 52, - File = "_particle normal", -}; - -local tParticleInfo = {} - -for i=1,Params.NumParticles do - tParticleInfo[i] = { - X = math.random(Params.VelocityXMin, Params.VelocityXMax), - Y = Params.VelocityYMin ~= Params.VelocityYMax and math.random(Params.VelocityYMin, Params.VelocityYMax) or Params.VelocityYMin, - Z = Params.VelocityZMin ~= Params.VelocityZMax and math.random(Params.VelocityZMin, Params.VelocityZMax) or Params.VelocityZMin, - Zoom = math.random(Params.ZoomMin*1000,Params.ZoomMax*1000) / 1000, - BobZRate = math.random(Params.BobRateZMin*1000,Params.BobRateZMax*1000) / 1000, - Age = 0, - }; - t[#t+1] = LoadActor( Params.File )..{ - Name="Particle"..i; - InitCommand=function(self) - self:basezoom(tParticleInfo[i].Zoom); - self:x(math.random(SCREEN_LEFT+(self:GetWidth()/2),SCREEN_RIGHT-(self:GetWidth()/2))); - self:y(math.random(SCREEN_TOP+(self:GetHeight()/2),SCREEN_BOTTOM-(self:GetHeight()/2))); - --self:z(math.random(-64,0)); - end; - OnCommand=cmd(diffuse,ColorLightTone(color("#ffd400"));diffusealpha,0.8); - }; -end - -local function UpdateParticles(self,DeltaTime) - tParticles = self:GetChildren(); - for i=1, Params.NumParticles do - local p = tParticles["Particle"..i]; - local vX = tParticleInfo[i].X; - local vY = tParticleInfo[i].Y; - local vZ = tParticleInfo[i].Z; - tParticleInfo[i].Age = tParticleInfo[i].Age + DeltaTime; - p:x(p:GetX() + (vX * DeltaTime)); - p:y(p:GetY() + (vY * DeltaTime)); - p:z(p:GetZ() + (vZ * DeltaTime)); --- p:zoom( 1 + math.cos( --- (tParticleInfo[i].Age * math.pi*2) --- ) * 0.125 ); - if p:GetX() > SCREEN_RIGHT + (p:GetWidth()/2 - p:GetZ()) then - p:x(SCREEN_LEFT - (p:GetWidth()/2)); - elseif p:GetX() < SCREEN_LEFT - (p:GetWidth()/2 - p:GetZ()) then - p:x(SCREEN_RIGHT + (p:GetWidth()/2)); - end - if p:GetY() > SCREEN_BOTTOM + (p:GetHeight()/2 - p:GetZ()) then - p:y(SCREEN_TOP - (p:GetHeight()/2)); - elseif p:GetY() < SCREEN_TOP - (p:GetHeight()/2 - p:GetZ()) then - p:y(SCREEN_BOTTOM + (p:GetHeight()/2)); - end - end; -end; - -t.InitCommand = cmd(fov,90;SetUpdateFunction,UpdateParticles); - -return t; +local hideFancyElements = (ThemePrefs.Get("FancyUIBG") == false) +local t = Def.ActorFrame{}; +if hideFancyElements then return t; end + +local Params = { + NumParticles = 30, + VelocityXMin = 100, + VelocityXMax = 400, + VelocityYMin = 0, + VelocityYMax = 0, + VelocityZMin = 0, + VelocityZMax = 0, + BobRateZMin = 0.4, + BobRateZMax = 0.7, + ZoomMin = 0.5, + ZoomMax = 1, + SpinZ = 0, + BobZ = 52, + File = "_particle normal", +}; + +local tParticleInfo = {} + +for i=1,Params.NumParticles do + tParticleInfo[i] = { + X = math.random(Params.VelocityXMin, Params.VelocityXMax), + Y = Params.VelocityYMin ~= Params.VelocityYMax and math.random(Params.VelocityYMin, Params.VelocityYMax) or Params.VelocityYMin, + Z = Params.VelocityZMin ~= Params.VelocityZMax and math.random(Params.VelocityZMin, Params.VelocityZMax) or Params.VelocityZMin, + Zoom = math.random(Params.ZoomMin*1000,Params.ZoomMax*1000) / 1000, + BobZRate = math.random(Params.BobRateZMin*1000,Params.BobRateZMax*1000) / 1000, + Age = 0, + }; + t[#t+1] = LoadActor( Params.File )..{ + Name="Particle"..i; + InitCommand=function(self) + self:basezoom(tParticleInfo[i].Zoom); + self:x(math.random(SCREEN_LEFT+(self:GetWidth()/2),SCREEN_RIGHT-(self:GetWidth()/2))); + self:y(math.random(SCREEN_TOP+(self:GetHeight()/2),SCREEN_BOTTOM-(self:GetHeight()/2))); + --self:z(math.random(-64,0)); + end; + OnCommand=function(self) + self:diffuse(ColorLightTone(color("#ffd400"))); + self:diffusealpha(0.8); + end; + }; +end + +local function UpdateParticles(self,DeltaTime) + tParticles = self:GetChildren(); + for i=1, Params.NumParticles do + local p = tParticles["Particle"..i]; + local vX = tParticleInfo[i].X; + local vY = tParticleInfo[i].Y; + local vZ = tParticleInfo[i].Z; + tParticleInfo[i].Age = tParticleInfo[i].Age + DeltaTime; + p:x(p:GetX() + (vX * DeltaTime)); + p:y(p:GetY() + (vY * DeltaTime)); + p:z(p:GetZ() + (vZ * DeltaTime)); +-- p:zoom( 1 + math.cos( +-- (tParticleInfo[i].Age * math.pi*2) +-- ) * 0.125 ); + if p:GetX() > SCREEN_RIGHT + (p:GetWidth()/2 - p:GetZ()) then + p:x(SCREEN_LEFT - (p:GetWidth()/2)); + elseif p:GetX() < SCREEN_LEFT - (p:GetWidth()/2 - p:GetZ()) then + p:x(SCREEN_RIGHT + (p:GetWidth()/2)); + end + if p:GetY() > SCREEN_BOTTOM + (p:GetHeight()/2 - p:GetZ()) then + p:y(SCREEN_TOP - (p:GetHeight()/2)); + elseif p:GetY() < SCREEN_TOP - (p:GetHeight()/2 - p:GetZ()) then + p:y(SCREEN_BOTTOM + (p:GetHeight()/2)); + end + end; +end; + +t.InitCommand = function(self) + self:fov(90); + self:SetUpdateFunction(UpdateParticles); +end; + +return t; diff --git a/Themes/default/Graphics/LifeMeterBattery lives/default.lua b/Themes/default/Graphics/LifeMeterBattery lives/default.lua index 8fd1c40f0e..f5dabc9449 100755 --- a/Themes/default/Graphics/LifeMeterBattery lives/default.lua +++ b/Themes/default/Graphics/LifeMeterBattery lives/default.lua @@ -1,43 +1,49 @@ -local player = Var "Player" -local blinkTime = 1.2 -local barWidth = 256; -local barHeight = 32; -local c; -local LifeMeter, MaxLives, CurLives; -local LifeRatio; - -local t = Def.ActorFrame { - LoadActor("_lives")..{ - InitCommand=cmd(pause;horizalign,left;x,-(barWidth/2)); - BeginCommand=function(self,param) - local screen = SCREENMAN:GetTopScreen(); - local glifemeter = screen:GetLifeMeter(player); - self:setstate(glifemeter:GetTotalLives()-1); - - if glifemeter:GetTotalLives() <= 4 then - self:zoomx(barWidth/(4*64)); - else - self:zoomx(barWidth/((glifemeter:GetTotalLives())*64)); - end - self:cropright((640-(((glifemeter:GetTotalLives())*64)))/640); - end; - LifeChangedMessageCommand=function(self,param) - if param.Player == player then - if param.LivesLeft == 0 then - self:visible(false) - else - self:setstate( math.max(param.LivesLeft-1,0) ) - self:visible(true) - end - end - end; - StartCommand=function(self,param) - if param.Player == player then - self:setstate( math.max(param.LivesLeft-1,0) ); - end - end; - FinishCommand=cmd(playcommand,"Start"); - }; -}; - +local player = Var "Player" +local blinkTime = 1.2 +local barWidth = 256; +local barHeight = 32; +local c; +local LifeMeter, MaxLives, CurLives; +local LifeRatio; + +local t = Def.ActorFrame { + LoadActor("_lives")..{ + InitCommand=function(self) + self:pause(); + self:horizalign(left); + self:x(barWidth / -2); + end; + BeginCommand=function(self,param) + local screen = SCREENMAN:GetTopScreen(); + local glifemeter = screen:GetLifeMeter(player); + self:setstate(glifemeter:GetTotalLives()-1); + + if glifemeter:GetTotalLives() <= 4 then + self:zoomx(barWidth/(4*64)); + else + self:zoomx(barWidth/((glifemeter:GetTotalLives())*64)); + end + self:cropright((640-(((glifemeter:GetTotalLives())*64)))/640); + end; + LifeChangedMessageCommand=function(self,param) + if param.Player == player then + if param.LivesLeft == 0 then + self:visible(false) + else + self:setstate( math.max(param.LivesLeft-1,0) ) + self:visible(true) + end + end + end; + StartCommand=function(self,param) + if param.Player == player then + self:setstate( math.max(param.LivesLeft-1,0) ); + end + end; + FinishCommand=function(self) + self:playcommand("Start"); + end; + }; +}; + return t; \ No newline at end of file diff --git a/Themes/default/Graphics/PaneDisplay text.lua b/Themes/default/Graphics/PaneDisplay text.lua index 1090ca80bc..aff96ec862 100644 --- a/Themes/default/Graphics/PaneDisplay text.lua +++ b/Themes/default/Graphics/PaneDisplay text.lua @@ -1,136 +1,196 @@ -local iPN = ...; -assert(iPN,"[Graphics/PaneDisplay text.lua] No PlayerNumber Provided."); - -local t = Def.ActorFrame {}; -local function GetRadarData( pnPlayer, rcRadarCategory ) - local tRadarValues; - local StepsOrTrail; - local fDesiredValue = 0; - if GAMESTATE:GetCurrentSteps( pnPlayer ) then - StepsOrTrail = GAMESTATE:GetCurrentSteps( pnPlayer ); - fDesiredValue = StepsOrTrail:GetRadarValues( pnPlayer ):GetValue( rcRadarCategory ); - elseif GAMESTATE:GetCurrentTrail( pnPlayer ) then - StepsOrTrail = GAMESTATE:GetCurrentTrail( pnPlayer ); - fDesiredValue = StepsOrTrail:GetRadarValues( pnPlayer ):GetValue( rcRadarCategory ); - else - StepsOrTrail = nil; - end; - return fDesiredValue; -end; - -local function CreatePaneDisplayItem( _pnPlayer, _sLabel, _rcRadarCategory ) - return Def.ActorFrame { - LoadFont("Common SemiBold") .. { - Text=string.upper( THEME:GetString("PaneDisplay",_sLabel) ); - InitCommand=cmd(horizalign,left); - OnCommand=cmd(zoom,0.5875;diffuse,color("0.9,0.9,0.9");shadowlength,1); - }; - LoadFont("Common Normal") .. { - Text=string.format("%04i", 0); - InitCommand=cmd(x,96;horizalign,right); - OnCommand=cmd(zoom,0.5875;shadowlength,1); - CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); - SetCommand=function(self) - local song = GAMESTATE:GetCurrentSong() - local course = GAMESTATE:GetCurrentCourse() - if not song and not course then - self:settextf("%04i", 0); - else - self:settextf("%04i", GetRadarData( _pnPlayer, _rcRadarCategory ) ); - end - end; - }; - }; -end; - -local function CreatePaneDisplayGraph( _pnPlayer, _sLabel, _rcRadarCategory ) - return Def.ActorFrame { - LoadFont("Common Normal") .. { - Text=_sLabel; - InitCommand=cmd(horizalign,left); - OnCommand=cmd(zoom,0.5;shadowlength,1); - }; - Def.Quad { - InitCommand=cmd(x,12;zoomto,50,10;horizalign,left); - OnCommand=cmd(diffuse,Color("Black");shadowlength,1;diffusealpha,0.5); - }; - Def.Quad { - InitCommand=cmd(x,12;zoomto,50,10;horizalign,left); - OnCommand=cmd(shadowlength,0;diffuse,Color("Green");diffusebottomedge,ColorLightTone(Color("Green"))); - CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); - SetCommand=function(self) - local song = GAMESTATE:GetCurrentSong() - local course = GAMESTATE:GetCurrentCourse() - if not song and not course then - self:stoptweening(); - self:decelerate(0.2); - self:zoomtowidth(0); - else - self:stoptweening(); - self:decelerate(0.2); - self:zoomtowidth( clamp(GetRadarData( _pnPlayer, _rcRadarCategory ) * 50,0,50) ); - end - end; - }; - LoadFont("Common Normal") .. { - InitCommand=cmd(x,14;zoom,0.5;halign,0;); - OnCommand=cmd(shadowlength,1;strokecolor,color("0.15,0.15,0.15,0.625")); - CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set"); - CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); - SetCommand=function(self) - local song = GAMESTATE:GetCurrentSong() - local course = GAMESTATE:GetCurrentCourse() - if not song and not course then - self:settext("") - else - self:settextf("%i%%", GetRadarData( _pnPlayer, _rcRadarCategory ) * 100 ); - end - end; - }; - }; -end; - ---[[ Numbers ]] -t[#t+1] = Def.ActorFrame { - -- Left - CreatePaneDisplayItem( iPN, "Taps", 'RadarCategory_TapsAndHolds' ) .. { - InitCommand=cmd(x,-128+16+8;y,-14); - }; - CreatePaneDisplayItem( iPN, "Jumps", 'RadarCategory_Jumps' ) .. { - InitCommand=cmd(x,-128+16+8;y,-14+16); - }; - CreatePaneDisplayItem( iPN, "Holds", 'RadarCategory_Holds' ) .. { - InitCommand=cmd(x,-128+16+8;y,-14+16*2); - }; - CreatePaneDisplayItem( iPN, "Mines", 'RadarCategory_Mines' ) .. { - InitCommand=cmd(x,-128+16+8;y,-14+16*3); - }; - -- Center - CreatePaneDisplayItem( iPN, "Hands", 'RadarCategory_Hands' ) .. { - InitCommand=cmd(x,8;y,-14); - }; - CreatePaneDisplayItem( iPN, "Rolls", 'RadarCategory_Rolls' ) .. { - InitCommand=cmd(x,8;y,-14+16); - }; - CreatePaneDisplayItem( iPN, "Lifts", 'RadarCategory_Lifts' ) .. { - InitCommand=cmd(x,8;y,-14+16*2); - }; - CreatePaneDisplayItem( iPN, "Fakes", 'RadarCategory_Fakes' ) .. { - InitCommand=cmd(x,8;y,-14+16*3); - }; -}; +local iPN = ...; +assert(iPN,"[Graphics/PaneDisplay text.lua] No PlayerNumber Provided."); + +local t = Def.ActorFrame {}; +local function GetRadarData( pnPlayer, rcRadarCategory ) + local tRadarValues; + local StepsOrTrail; + local fDesiredValue = 0; + if GAMESTATE:GetCurrentSteps( pnPlayer ) then + StepsOrTrail = GAMESTATE:GetCurrentSteps( pnPlayer ); + fDesiredValue = StepsOrTrail:GetRadarValues( pnPlayer ):GetValue( rcRadarCategory ); + elseif GAMESTATE:GetCurrentTrail( pnPlayer ) then + StepsOrTrail = GAMESTATE:GetCurrentTrail( pnPlayer ); + fDesiredValue = StepsOrTrail:GetRadarValues( pnPlayer ):GetValue( rcRadarCategory ); + else + StepsOrTrail = nil; + end; + return fDesiredValue; +end; + +local function CreatePaneDisplayItem( _pnPlayer, _sLabel, _rcRadarCategory ) + return Def.ActorFrame { + LoadFont("Common SemiBold") .. { + Text=string.upper( THEME:GetString("PaneDisplay",_sLabel) ); + InitCommand=cmd(horizalign,left); + OnCommand=cmd(zoom,0.5875;diffuse,color("0.9,0.9,0.9");shadowlength,1); + }; + LoadFont("Common Normal") .. { + Text=string.format("%04i", 0); + InitCommand=cmd(x,96;horizalign,right); + OnCommand=cmd(zoom,0.5875;shadowlength,1); + CurrentSongChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentCourseChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + SetCommand=function(self) + local song = GAMESTATE:GetCurrentSong() + local course = GAMESTATE:GetCurrentCourse() + if not song and not course then + self:settextf("%04i", 0); + else + self:settextf("%04i", GetRadarData( _pnPlayer, _rcRadarCategory ) ); + end + end; + }; + }; +end; + +local function CreatePaneDisplayGraph( _pnPlayer, _sLabel, _rcRadarCategory ) + return Def.ActorFrame { + LoadFont("Common Normal") .. { + Text=_sLabel; + InitCommand=cmd(horizalign,left); + OnCommand=cmd(zoom,0.5;shadowlength,1); + }; + Def.Quad { + InitCommand=cmd(x,12;zoomto,50,10;horizalign,left); + OnCommand=cmd(diffuse,Color("Black");shadowlength,1;diffusealpha,0.5); + }; + Def.Quad { + InitCommand=cmd(x,12;zoomto,50,10;horizalign,left); + OnCommand=cmd(shadowlength,0;diffuse,Color("Green");diffusebottomedge,ColorLightTone(Color("Green"))); + CurrentSongChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentCourseChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + SetCommand=function(self) + local song = GAMESTATE:GetCurrentSong() + local course = GAMESTATE:GetCurrentCourse() + if not song and not course then + self:stoptweening(); + self:decelerate(0.2); + self:zoomtowidth(0); + else + self:stoptweening(); + self:decelerate(0.2); + self:zoomtowidth( clamp(GetRadarData( _pnPlayer, _rcRadarCategory ) * 50,0,50) ); + end + end; + }; + LoadFont("Common Normal") .. { + InitCommand=cmd(x,14;zoom,0.5;halign,0;); + OnCommand=cmd(shadowlength,1;strokecolor,color("0.15,0.15,0.15,0.625")); + CurrentSongChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentStepsP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP1ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentTrailP2ChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + CurrentCourseChangedMessageCommand=function(self) + self:playcommand("Set"); + end; + SetCommand=function(self) + local song = GAMESTATE:GetCurrentSong() + local course = GAMESTATE:GetCurrentCourse() + if not song and not course then + self:settext("") + else + self:settextf("%i%%", GetRadarData( _pnPlayer, _rcRadarCategory ) * 100 ); + end + end; + }; + }; +end; + +--[[ Numbers ]] +t[#t+1] = Def.ActorFrame { + -- Left + CreatePaneDisplayItem( iPN, "Taps", 'RadarCategory_TapsAndHolds' ) .. { + InitCommand=function(self) + self:x(-128 + 16 + 8); + self:y(-14 + 16 * 0); + end; + }; + CreatePaneDisplayItem( iPN, "Jumps", 'RadarCategory_Jumps' ) .. { + InitCommand=function(self) + self:x(-128 + 16 + 8); + self:y(-14 + 16 * 1); + end; + }; + CreatePaneDisplayItem( iPN, "Holds", 'RadarCategory_Holds' ) .. { + InitCommand=function(self) + self:x(-128 + 16 + 8); + self:y(-14 + 16 * 2); + end; + }; + CreatePaneDisplayItem( iPN, "Mines", 'RadarCategory_Mines' ) .. { + InitCommand=function(self) + self:x(-128 + 16 + 8); + self:y(-14 + 16 * 3); + end; + }; + -- Center + CreatePaneDisplayItem( iPN, "Hands", 'RadarCategory_Hands' ) .. { + InitCommand=function(self) + self:x(8); + self:y(-14 + 16 * 0); + end; + }; + CreatePaneDisplayItem( iPN, "Rolls", 'RadarCategory_Rolls' ) .. { + InitCommand=function(self) + self:x(8); + self:y(-14 + 16 * 1); + end; + }; + CreatePaneDisplayItem( iPN, "Lifts", 'RadarCategory_Lifts' ) .. { + InitCommand=function(self) + self:x(8); + self:y(-14 + 16 * 2); + end; + }; + CreatePaneDisplayItem( iPN, "Fakes", 'RadarCategory_Fakes' ) .. { + InitCommand=function(self) + self:x(8); + self:y(-14 + 16 * 3); + end; + }; +}; return t; \ No newline at end of file diff --git a/Themes/default/Graphics/Player judgment/default.lua b/Themes/default/Graphics/Player judgment/default.lua index 7e691b53ad..4871363768 100644 --- a/Themes/default/Graphics/Player judgment/default.lua +++ b/Themes/default/Graphics/Player judgment/default.lua @@ -1,233 +1,292 @@ -local c; -local player = Var "Player"; -local function ShowProtiming() - if GAMESTATE:IsDemonstration() then - return false - else - return GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(player)); - end -end; -local bShowProtiming = ShowProtiming(); -local ProtimingWidth = 240; -local function MakeAverage( t ) - local sum = 0; - for i=1,#t do - sum = sum + t[i]; - end - return sum / #t -end - -local tTotalJudgments = {}; - -local JudgeCmds = { - TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" ); - TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" ); - TapNoteScore_W3 = THEME:GetMetric( "Judgment", "JudgmentW3Command" ); - TapNoteScore_W4 = THEME:GetMetric( "Judgment", "JudgmentW4Command" ); - TapNoteScore_W5 = THEME:GetMetric( "Judgment", "JudgmentW5Command" ); - TapNoteScore_Miss = THEME:GetMetric( "Judgment", "JudgmentMissCommand" ); -}; - -local ProtimingCmds = { - TapNoteScore_W1 = THEME:GetMetric( "Protiming", "ProtimingW1Command" ); - TapNoteScore_W2 = THEME:GetMetric( "Protiming", "ProtimingW2Command" ); - TapNoteScore_W3 = THEME:GetMetric( "Protiming", "ProtimingW3Command" ); - TapNoteScore_W4 = THEME:GetMetric( "Protiming", "ProtimingW4Command" ); - TapNoteScore_W5 = THEME:GetMetric( "Protiming", "ProtimingW5Command" ); - TapNoteScore_Miss = THEME:GetMetric( "Protiming", "ProtimingMissCommand" ); -}; - -local AverageCmds = { - Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" ); -}; -local TextCmds = { - Pulse = THEME:GetMetric( "Protiming", "TextPulseCommand" ); -}; - -local TNSFrames = { - TapNoteScore_W1 = 0; - TapNoteScore_W2 = 1; - TapNoteScore_W3 = 2; - TapNoteScore_W4 = 3; - TapNoteScore_W5 = 4; - TapNoteScore_Miss = 5; -}; -local t = Def.ActorFrame {}; -t[#t+1] = Def.ActorFrame { - LoadActor(THEME:GetPathG("Judgment","Normal")) .. { - Name="Judgment"; - InitCommand=cmd(pause;visible,false); - OnCommand=THEME:GetMetric("Judgment","JudgmentOnCommand"); - ResetCommand=cmd(finishtweening;stopeffect;visible,false); - }; - LoadFont("Combo Numbers") .. { - Name="ProtimingDisplay"; - Text=""; - InitCommand=cmd(visible,false); - OnCommand=THEME:GetMetric("Protiming","ProtimingOnCommand"); - ResetCommand=cmd(finishtweening;stopeffect;visible,false); - }; - LoadFont("Common Normal") .. { - Name="ProtimingAverage"; - Text=""; - InitCommand=cmd(visible,false); - OnCommand=THEME:GetMetric("Protiming","AverageOnCommand"); - ResetCommand=cmd(finishtweening;stopeffect;visible,false); - }; - LoadFont("Common Normal") .. { - Name="TextDisplay"; - Text=THEME:GetString("Protiming","MS"); - InitCommand=cmd(visible,false); - OnCommand=THEME:GetMetric("Protiming","TextOnCommand"); - ResetCommand=cmd(finishtweening;stopeffect;visible,false); - }; - Def.Quad { - Name="ProtimingGraphBG"; - InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth,16); - ResetCommand=cmd(finishtweening;diffusealpha,0.8;visible,false); - OnCommand=cmd(diffuse,Color("Black");diffusetopedge,color("0.1,0.1,0.1,1");diffusealpha,0.8;shadowlength,2;); - }; - Def.Quad { - Name="ProtimingGraphWindowW3"; - InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth-4,16-4); - ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); - OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W3"];); - }; - Def.Quad { - Name="ProtimingGraphWindowW2"; - InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW2"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,ProtimingWidth-4),16-4); - ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); - OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W2"];); - }; - Def.Quad { - Name="ProtimingGraphWindowW1"; - InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW1"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,ProtimingWidth-4),16-4); - ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); - OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W1"];); - }; - Def.Quad { - Name="ProtimingGraphUnderlay"; - InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth-4,16-4); - ResetCommand=cmd(finishtweening;diffusealpha,0.25;visible,false); - OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25); - }; - Def.Quad { - Name="ProtimingGraphFill"; - InitCommand=cmd(visible,false;y,32;zoomto,0,16-4;horizalign,left;); - ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); - OnCommand=cmd(diffuse,Color("Red");); - }; - Def.Quad { - Name="ProtimingGraphAverage"; - InitCommand=cmd(visible,false;y,32;zoomto,2,7;); - ResetCommand=cmd(finishtweening;diffusealpha,0.85;visible,false); - OnCommand=cmd(diffuse,Color("Orange");diffusealpha,0.85); - }; - Def.Quad { - Name="ProtimingGraphCenter"; - InitCommand=cmd(visible,false;y,32;zoomto,2,16-4;); - ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); - OnCommand=cmd(diffuse,Color("White");diffusealpha,1); - }; - InitCommand = function(self) - c = self:GetChildren(); - end; - - JudgmentMessageCommand=function(self, param) - -- Fix Player Combo animating when player successfully avoids a mine. - local msgParam = param; - MESSAGEMAN:Broadcast("TestJudgment",msgParam); - -- - if param.Player ~= player then return end; - if param.HoldNoteScore then return end; - - local iNumStates = c.Judgment:GetNumStates(); - local iFrame = TNSFrames[param.TapNoteScore]; - - if not iFrame then return end - if iNumStates == 12 then - iFrame = iFrame * 2; - if not param.Early then - iFrame = iFrame + 1; - end - end - - - local fTapNoteOffset = param.TapNoteOffset; - if param.HoldNoteScore then - fTapNoteOffset = 1; - else - fTapNoteOffset = param.TapNoteOffset; - end - - if param.TapNoteScore == 'TapNoteScore_Miss' then - fTapNoteOffset = 1; - bUseNegative = true; - else --- fTapNoteOffset = fTapNoteOffset; - bUseNegative = false; - end; - - if fTapNoteOffset ~= 1 then - -- we're safe, you can push the values - tTotalJudgments[#tTotalJudgments+1] = math.abs(fTapNoteOffset); ---~ tTotalJudgments[#tTotalJudgments+1] = bUseNegative and fTapNoteOffset or math.abs( fTapNoteOffset ); - end - - self:playcommand("Reset"); - - c.Judgment:visible( not bShowProtiming ); - c.Judgment:setstate( iFrame ); - JudgeCmds[param.TapNoteScore](c.Judgment); - - c.ProtimingDisplay:visible( bShowProtiming ); - c.ProtimingDisplay:settextf("%i",fTapNoteOffset * 1000); - ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay); - - c.ProtimingAverage:visible( bShowProtiming ); - c.ProtimingAverage:settextf("%.2f%%",clamp(100 - MakeAverage( tTotalJudgments ) * 1000 ,0,100)); - AverageCmds['Pulse'](c.ProtimingAverage); - - c.TextDisplay:visible( bShowProtiming ); - TextCmds['Pulse'](c.TextDisplay); - - c.ProtimingGraphBG:visible( bShowProtiming ); - c.ProtimingGraphUnderlay:visible( bShowProtiming ); - c.ProtimingGraphWindowW3:visible( bShowProtiming ); - c.ProtimingGraphWindowW2:visible( bShowProtiming ); - c.ProtimingGraphWindowW1:visible( bShowProtiming ); - c.ProtimingGraphFill:visible( bShowProtiming ); - c.ProtimingGraphFill:finishtweening(); - c.ProtimingGraphFill:decelerate(1/60); --- c.ProtimingGraphFill:zoomtowidth( clamp(fTapNoteOffset * 188,-188/2,188/2) ); - c.ProtimingGraphFill:zoomtowidth( clamp( - scale( - fTapNoteOffset, - 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), - 0,(ProtimingWidth-4)/2), - -(ProtimingWidth-4)/2,(ProtimingWidth-4)/2) - ); - c.ProtimingGraphAverage:visible( bShowProtiming ); - c.ProtimingGraphAverage:zoomtowidth( clamp( - scale( - MakeAverage( tTotalJudgments ), - 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), - 0,ProtimingWidth-4), - 0,ProtimingWidth-4) - ); --- c.ProtimingGraphAverage:zoomtowidth( clamp(MakeAverage( tTotalJudgments ) * 1880,0,188) ); - c.ProtimingGraphCenter:visible( bShowProtiming ); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphBG); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphUnderlay); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW3); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW2); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW1); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphFill); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphAverage); - (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphCenter); - end; - -}; - - -return t; +local c; +local player = Var "Player"; +local function ShowProtiming() + if GAMESTATE:IsDemonstration() then + return false + else + return GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(player)); + end +end; +local bShowProtiming = ShowProtiming(); +local ProtimingWidth = 240; +local function MakeAverage( t ) + local sum = 0; + for i=1,#t do + sum = sum + t[i]; + end + return sum / #t +end + +local tTotalJudgments = {}; + +local JudgeCmds = { + TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" ); + TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" ); + TapNoteScore_W3 = THEME:GetMetric( "Judgment", "JudgmentW3Command" ); + TapNoteScore_W4 = THEME:GetMetric( "Judgment", "JudgmentW4Command" ); + TapNoteScore_W5 = THEME:GetMetric( "Judgment", "JudgmentW5Command" ); + TapNoteScore_Miss = THEME:GetMetric( "Judgment", "JudgmentMissCommand" ); +}; + +local ProtimingCmds = { + TapNoteScore_W1 = THEME:GetMetric( "Protiming", "ProtimingW1Command" ); + TapNoteScore_W2 = THEME:GetMetric( "Protiming", "ProtimingW2Command" ); + TapNoteScore_W3 = THEME:GetMetric( "Protiming", "ProtimingW3Command" ); + TapNoteScore_W4 = THEME:GetMetric( "Protiming", "ProtimingW4Command" ); + TapNoteScore_W5 = THEME:GetMetric( "Protiming", "ProtimingW5Command" ); + TapNoteScore_Miss = THEME:GetMetric( "Protiming", "ProtimingMissCommand" ); +}; + +local AverageCmds = { + Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" ); +}; +local TextCmds = { + Pulse = THEME:GetMetric( "Protiming", "TextPulseCommand" ); +}; + +local TNSFrames = { + TapNoteScore_W1 = 0; + TapNoteScore_W2 = 1; + TapNoteScore_W3 = 2; + TapNoteScore_W4 = 3; + TapNoteScore_W5 = 4; + TapNoteScore_Miss = 5; +}; +local t = Def.ActorFrame {}; +t[#t+1] = Def.ActorFrame { + LoadActor(THEME:GetPathG("Judgment","Normal")) .. { + Name="Judgment"; + InitCommand=cmd(pause;visible,false); + OnCommand=THEME:GetMetric("Judgment","JudgmentOnCommand"); + ResetCommand=function(self) + self:finishtweening(); + self:stopeffect(); + self:visible(false); + end; + }; + LoadFont("Combo Numbers") .. { + Name="ProtimingDisplay"; + Text=""; + InitCommand=cmd(visible,false); + OnCommand=THEME:GetMetric("Protiming","ProtimingOnCommand"); + ResetCommand=function(self) + self:finishtweening(); + self:stopeffect(); + self:visible(false); + end; + }; + LoadFont("Common Normal") .. { + Name="ProtimingAverage"; + Text=""; + InitCommand=cmd(visible,false); + OnCommand=THEME:GetMetric("Protiming","AverageOnCommand"); + ResetCommand=function(self) + self:finishtweening(); + self:stopeffect(); + self:visible(false); + end; + }; + LoadFont("Common Normal") .. { + Name="TextDisplay"; + Text=THEME:GetString("Protiming","MS"); + InitCommand=cmd(visible,false); + OnCommand=THEME:GetMetric("Protiming","TextOnCommand"); + ResetCommand=function(self) + self:finishtweening(); + self:stopeffect(); + self:visible(false); + end; + }; + Def.Quad { + Name="ProtimingGraphBG"; + InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth,16); + ResetCommand=cmd(finishtweening;diffusealpha,0.8;visible,false); + OnCommand=cmd(diffuse,Color("Black");diffusetopedge,color("0.1,0.1,0.1,1");diffusealpha,0.8;shadowlength,2;); + }; + Def.Quad { + Name="ProtimingGraphWindowW3"; + InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth-4,16-4); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(1); + self:visible(false); + end; + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W3"];); + }; + Def.Quad { + Name="ProtimingGraphWindowW2"; + InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW2"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,ProtimingWidth-4),16-4); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(1); + self:visible(false); + end; + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W2"];); + }; + Def.Quad { + Name="ProtimingGraphWindowW1"; + InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW1"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,ProtimingWidth-4),16-4); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(1); + self:visible(false); + end; + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W1"];); + }; + Def.Quad { + Name="ProtimingGraphUnderlay"; + InitCommand=cmd(visible,false;y,32;zoomto,ProtimingWidth-4,16-4); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(0.25); + self:visible(false); + end; + OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25); + }; + Def.Quad { + Name="ProtimingGraphFill"; + InitCommand=cmd(visible,false;y,32;zoomto,0,16-4;horizalign,left;); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(1); + self:visible(false); + end; + OnCommand=cmd(diffuse,Color("Red");); + }; + Def.Quad { + Name="ProtimingGraphAverage"; + InitCommand=cmd(visible,false;y,32;zoomto,2,7;); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(0.85); + self:visible(false); + end; + OnCommand=cmd(diffuse,Color("Orange");diffusealpha,0.85); + }; + Def.Quad { + Name="ProtimingGraphCenter"; + InitCommand=cmd(visible,false;y,32;zoomto,2,16-4;); + ResetCommand=function(self) + self:finishtweening(); + self:diffusealpha(1); + self:visible(false); + end; + OnCommand=cmd(diffuse,Color("White");diffusealpha,1); + }; + InitCommand = function(self) + c = self:GetChildren(); + end; + + JudgmentMessageCommand=function(self, param) + -- Fix Player Combo animating when player successfully avoids a mine. + local msgParam = param; + MESSAGEMAN:Broadcast("TestJudgment",msgParam); + -- + if param.Player ~= player then return end; + if param.HoldNoteScore then return end; + + local iNumStates = c.Judgment:GetNumStates(); + local iFrame = TNSFrames[param.TapNoteScore]; + + if not iFrame then return end + if iNumStates == 12 then + iFrame = iFrame * 2; + if not param.Early then + iFrame = iFrame + 1; + end + end + + + local fTapNoteOffset = param.TapNoteOffset; + if param.HoldNoteScore then + fTapNoteOffset = 1; + else + fTapNoteOffset = param.TapNoteOffset; + end + + if param.TapNoteScore == 'TapNoteScore_Miss' then + fTapNoteOffset = 1; + bUseNegative = true; + else +-- fTapNoteOffset = fTapNoteOffset; + bUseNegative = false; + end; + + if fTapNoteOffset ~= 1 then + -- we're safe, you can push the values + tTotalJudgments[#tTotalJudgments+1] = math.abs(fTapNoteOffset); +--~ tTotalJudgments[#tTotalJudgments+1] = bUseNegative and fTapNoteOffset or math.abs( fTapNoteOffset ); + end + + self:playcommand("Reset"); + + c.Judgment:visible( not bShowProtiming ); + c.Judgment:setstate( iFrame ); + JudgeCmds[param.TapNoteScore](c.Judgment); + + c.ProtimingDisplay:visible( bShowProtiming ); + c.ProtimingDisplay:settextf("%i",fTapNoteOffset * 1000); + ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay); + + c.ProtimingAverage:visible( bShowProtiming ); + c.ProtimingAverage:settextf("%.2f%%",clamp(100 - MakeAverage( tTotalJudgments ) * 1000 ,0,100)); + AverageCmds['Pulse'](c.ProtimingAverage); + + c.TextDisplay:visible( bShowProtiming ); + TextCmds['Pulse'](c.TextDisplay); + + c.ProtimingGraphBG:visible( bShowProtiming ); + c.ProtimingGraphUnderlay:visible( bShowProtiming ); + c.ProtimingGraphWindowW3:visible( bShowProtiming ); + c.ProtimingGraphWindowW2:visible( bShowProtiming ); + c.ProtimingGraphWindowW1:visible( bShowProtiming ); + c.ProtimingGraphFill:visible( bShowProtiming ); + c.ProtimingGraphFill:finishtweening(); + c.ProtimingGraphFill:decelerate(1/60); + c.ProtimingGraphFill:zoomtowidth( clamp( + scale( + fTapNoteOffset, + 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), + 0,(ProtimingWidth-4)/2), + -(ProtimingWidth-4)/2,(ProtimingWidth-4)/2) + ); + c.ProtimingGraphAverage:visible( bShowProtiming ); + c.ProtimingGraphAverage:zoomtowidth( clamp( + scale( + MakeAverage( tTotalJudgments ), + 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), + 0,ProtimingWidth-4), + 0,ProtimingWidth-4) + ); +-- c.ProtimingGraphAverage:zoomtowidth( clamp(MakeAverage( tTotalJudgments ) * 1880,0,188) ); + c.ProtimingGraphCenter:visible( bShowProtiming ); + c.ProtimingGraphBG.sleep(2); + c.ProtimingGraphBG.linear(0.5); + c.ProtimingGraphBG.diffusealpha(0); + c.ProtimingGraphUnderlay.sleep(2); + c.ProtimingGraphUnderlay.linear(0.5); + c.ProtimingGraphUnderlay.diffusealpha(0); + c.ProtimingGraphWindowW3.sleep(2); + c.ProtimingGraphWindowW3.linear(0.5); + c.ProtimingGraphWindowW3.diffusealpha(0); + c.ProtimingGraphWindowW2.sleep(2); + c.ProtimingGraphWindowW2.linear(0.5); + c.ProtimingGraphWindowW2.diffusealpha(0); + c.ProtimingGraphWindowW1.sleep(2); + c.ProtimingGraphWindowW1.linear(0.5); + c.ProtimingGraphWindowW1.diffusealpha(0); + c.ProtimingGraphFill.sleep(2); + c.ProtimingGraphFill.linear(0.5); + c.ProtimingGraphFill.diffusealpha(0); + c.ProtimingGraphAverage.sleep(2); + c.ProtimingGraphAverage.linear(0.5); + c.ProtimingGraphAverage.diffusealpha(0); + c.ProtimingGraphCenter.sleep(2); + c.ProtimingGraphCenter.linear(0.5); + c.ProtimingGraphCenter.diffusealpha(0); + end; + +}; + + +return t; diff --git a/Themes/default/Graphics/ScreenHowToInstallSongs Icon.lua b/Themes/default/Graphics/ScreenHowToInstallSongs Icon.lua index 73fd0c5e72..9d28f5510c 100644 --- a/Themes/default/Graphics/ScreenHowToInstallSongs Icon.lua +++ b/Themes/default/Graphics/ScreenHowToInstallSongs Icon.lua @@ -7,8 +7,14 @@ local previewHeight = SCREEN_CENTER_Y; local t = Def.ActorFrame{ Name="PreviewFrame"; - InitCommand=cmd(x,SCREEN_CENTER_X*1.5;y,SCREEN_CENTER_Y*0.85); - OffCommand=cmd(bouncebegin,0.25;addx,SCREEN_CENTER_X); + InitCommand=function(self) + self:x(SCREEN_CENTER_X * 1.5); + self:y(SCREEN_CENTER_Y * 0.85); + end; + OffCommand=function(self) + self:bouncebegin(0.25); + self:addx(SCREEN_CENTER_X); + end; }; local function TitleMenuItem(text,focused) @@ -16,92 +22,231 @@ local function TitleMenuItem(text,focused) local textColor = focused and color("#FFFFFF") or color("#888888"); return LoadFont("Common Normal")..{ Text=text; - InitCommand=cmd(zoom,0.45;strokecolor,Color("Outline");diffuse,textColor); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoom(0.45); + self:strokecolor(Color("Outline")); + self:diffuse(textColor); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; end; local previews = { WhereToFind = Def.ActorFrame{ LoadActor(THEME:GetPathG("_howto","find"))..{ - InitCommand=cmd(zoomto,previewWidth,previewHeight); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoomto(previewWidth, previewHeight); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; }; HowToInstall = Def.ActorFrame{ LoadActor(THEME:GetPathG("_howto","install"))..{ - InitCommand=cmd(zoomto,previewWidth,previewHeight); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoomto(previewWidth, previewHeight); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; }; AdditionalFolders = Def.ActorFrame{ Def.Quad{ - InitCommand=cmd(zoomto,previewWidth,previewHeight); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoomto(previewWidth, previewHeight); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; Def.Quad{ - InitCommand=cmd(y,-previewHeight*0.45;diffuse,color("#E0F0F0");zoomto,previewWidth,previewHeight*0.1;); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:y(-previewHeight * 0.45); + self:diffuse(color("#E0F0F0")); + self:zoomto(previewWidth, previewHeight * 0.1); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; LoadFont("Common normal")..{ - InitCommand=cmd(x,-(SCREEN_CENTER_X*0.4);y,-(SCREEN_CENTER_Y*0.475);zoom,0.625;halign,0;valign,0;diffuse,color("#000000")); + InitCommand=function(self) + self:x(SCREEN_CENTER_X * -0.4); + self:y(SCREEN_CENTER_Y * -0.475); + self:zoom(0.625); + self:halign(0); + self:valign(0); + self:diffuse(color("#000000")); + end; BeginCommand=function(self) local text = "Preferences.ini"; self:settext(text); end; - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; LoadFont("Common normal")..{ Text="[Options]\nAdditionalCourseFolders=\nAdditionalFolders=\nAdditionalSongFolders="; - InitCommand=cmd(x,-(SCREEN_CENTER_X*0.4);y,-(SCREEN_CENTER_Y*0.35);zoom,0.75;halign,0;valign,0;diffuse,color("#000000")); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:x(SCREEN_CENTER_X * -0.4); + self:y(SCREEN_CENTER_Y * -0.35); + self:zoom(0.75); + self:halign(0); + self:valign(0); + self:diffuse(color("#000000")); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; }; ReloadSongs = Def.ActorFrame{ LoadActor(THEME:GetPathB("ScreenTitleMenu","background/_bg"))..{ - InitCommand=cmd(zoomto,previewWidth,previewHeight;halign,0.5;valign,0.5); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoomto(previewWidth, previewHeight); + self:halign(0.5); + self:valign(0.5); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; LoadFont("Common normal")..{ - InitCommand=cmd(zoom,0.4;maxwidth,(previewWidth*1.6)-8); + InitCommand=function(self) + self:zoom(0.4); + self:maxwidth((previewWidth * 1.6) - 8); + end; BeginCommand=function(self) local song = SONGMAN:GetRandomSong(); self:settext("Loading songs...\n"..song:GetGroupName().."\n"..song:GetDisplayFullTitle()); end; - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; }; Exit = Def.ActorFrame{ LoadActor(THEME:GetPathB("ScreenTitleMenu","background/_bg"))..{ - InitCommand=cmd(zoomto,previewWidth,previewHeight;halign,0.5;valign,0.5); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:zoomto(previewWidth, previewHeight); + self:halign(0.5); + self:valign(0.5); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; LoadActor(THEME:GetPathG("ScreenTitleMenu","logo"))..{ - InitCommand=cmd(y,-28;zoom,0.35;propagate,true); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:y(-28); + self:zoom(0.35); + self:propagate(true); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; TitleMenuItem("Game Start",true)..{ - InitCommand=cmd(y,20); + InitCommand=function(self) + self:y(20); + end; }; TitleMenuItem("Options")..{ - InitCommand=cmd(y,32); + InitCommand=function(self) + self:y(32); + end; }; TitleMenuItem("Edit/Share")..{ - InitCommand=cmd(y,44); + InitCommand=function(self) + self:y(44); + end; }; TitleMenuItem("Exit")..{ - InitCommand=cmd(y,56); + InitCommand=function(self) + self:y(56); + end; }; }; }; @@ -113,9 +258,26 @@ t[#t+1] = LoadFont("Common normal")..{ --Text="The quick brown fox jumps over the lazy dog ".. Index .." times."; Text=Screen.String("Explanation-"..Name); -- was x,-(SCREEN_CENTER_X*0.4);y,SCREEN_CENTER_Y*0.525; - InitCommand=cmd(x,-(SCREEN_CENTER_X*0.8);y,SCREEN_CENTER_Y*0.8;halign,0;valign,0;zoom,0.65;wrapwidthpixels,(SCREEN_WIDTH*0.55)*1.75;NoStroke;shadowlength,1); - GainFocusCommand=cmd(stoptweening;decelerate,0.5;diffusealpha,1); - LoseFocusCommand=cmd(stoptweening;accelerate,0.5;diffusealpha,0); + InitCommand=function(self) + self:x(SCREEN_CENTER_X * -0.8); + self:y(SCREEN_CENTER_Y * 0.8); + self:halign(0); + self:valign(0); + self:zoom(0.65); + self:wrapwidthpixels((SCREEN_WIDTH * 0.55) * 1.75); + self:NoStroke(); + self:shadowlength(1); + end; + GainFocusCommand=function(self) + self:stoptweening(); + self:decelerate(0.5); + self:diffusealpha(1); + end; + LoseFocusCommand=function(self) + self:stoptweening(); + self:accelerate(0.5); + self:diffusealpha(0); + end; }; return t; \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenSelectMusic AlternateHelpDisplay.lua b/Themes/default/Graphics/ScreenSelectMusic AlternateHelpDisplay.lua index e950ca90f1..1269ed60ed 100644 --- a/Themes/default/Graphics/ScreenSelectMusic AlternateHelpDisplay.lua +++ b/Themes/default/Graphics/ScreenSelectMusic AlternateHelpDisplay.lua @@ -8,26 +8,3 @@ return Def.HelpDisplay { self:SetTipsColonSeparated( params.Text ); end; }; ---[[ local sString = THEME:GetString(Var "LoadingScreen","AlternateHelpText"); -local tItems = split(sString,"&"); - -local t = Def.ActorScroller { - NumItemsToDraw=#tItems; - SecondsPerItem=1.25; - TransformFunction=function( self, offset, itemIndex, numItems ) - self:x( offset*74 ); - end; - InitCommand=cmd(SetLoop,true); --- OnCommand=cmd(scrollwithpadding,10,0); -}; - -for i=1,#tItems do - t[#t+1] = Def.ActorFrame { - LoadFont("HelpDisplay", "text") .. { - Text=tostring(tItems[i]); - OnCommand=THEME:GetMetric( Var "LoadingScreen","HelpOnCommand"); - }; - }; -end - -return t; --]] diff --git a/Themes/default/Graphics/ScreenSelectPlayMode scroller/default.lua b/Themes/default/Graphics/ScreenSelectPlayMode scroller/default.lua index 16cbba83d7..3ae87eca58 100644 --- a/Themes/default/Graphics/ScreenSelectPlayMode scroller/default.lua +++ b/Themes/default/Graphics/ScreenSelectPlayMode scroller/default.lua @@ -11,8 +11,6 @@ local colors = { local t = Def.ActorFrame {}; -- Background! t[#t+1] = Def.ActorFrame { --- GainFocusCommand=cmd(visible,true); --- LoseFocusCommand=cmd(visible,false); LoadActor(THEME:GetPathG("ScreenSelectPlayMode","BackgroundFrame")) .. { InitCommand=cmd(diffuse,Color("Black");diffusealpha,0.7); GainFocusCommand=cmd(visible,true); diff --git a/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua b/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua index c9a5c0fc98..8da9239e21 100644 --- a/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua +++ b/Themes/default/Graphics/ScreenTitleMenu SystemDirection/default.lua @@ -35,21 +35,38 @@ local function MakeIcon( sTarget ) Def.ActorFrame { -- Life goes up to 1-5 Def.ActorFrame { - InitCommand=cmd(y,12); + InitCommand=function(self) + self:y(12); + end; MakeDisplayBar( 6, 5 ) .. { - InitCommand=cmd(x,-16;visible,( GetLifeDifficulty() >= 1 )); + InitCommand=function(self) + self:x(-16); + self:visible( GetLifeDifficulty() >= 1 ); + end; }; MakeDisplayBar( 6, 9 ) .. { - InitCommand=cmd(x,-8;visible,( GetLifeDifficulty() >= 2 )); + InitCommand=function(self) + self:x(-8); + self:visible( GetLifeDifficulty() >= 2 ); + end; }; MakeDisplayBar( 6, 13 ) .. { - InitCommand=cmd(x,0;visible,( GetLifeDifficulty() >= 3 )); + InitCommand=function(self) + self:x(0); + self:visible( GetLifeDifficulty() >= 3 ); + end; }; MakeDisplayBar( 6, 16 ) .. { - InitCommand=cmd(x,8;visible,( GetLifeDifficulty() >= 4 )); + InitCommand=function(self) + self:x(8); + self:visible( GetLifeDifficulty() >= 4 ); + end; }; MakeDisplayBar( 6, 20 ) .. { - InitCommand=cmd(x,16;visible,( GetLifeDifficulty() >= 5 )); + InitCommand=function(self) + self:x(16); + self:visible( GetLifeDifficulty() >= 5 ); + end; }; }; Condition=sTarget[1] == "LifeDifficulty"; @@ -57,47 +74,69 @@ local function MakeIcon( sTarget ) Def.ActorFrame { -- Timing goes up to 1-8 Def.ActorFrame { - InitCommand=cmd(y,12); + InitCommand=function(self) + self:y(12); + end; MakeDisplayBar( 4, 5 ) .. { - InitCommand=cmd(x,-20;visible,( GetTimingDifficulty() >= 1 )); + InitCommand=function(self) + self:x(-20); + self:visible( GetTimingDifficulty() >= 1 ); + end; }; MakeDisplayBar( 4, 9 ) .. { - InitCommand=cmd(x,-15;visible,( GetTimingDifficulty() >= 2 )); + InitCommand=function(self) + self:x(-215); + self:visible( GetTimingDifficulty() >= 2 ); + end; }; MakeDisplayBar( 4, 13 ) .. { - InitCommand=cmd(x,-10;visible,( GetTimingDifficulty() >= 3 )); + InitCommand=function(self) + self:x(-10); + self:visible( GetTimingDifficulty() >= 3 ); + end; }; MakeDisplayBar( 4, 16 ) .. { - InitCommand=cmd(x,-5;visible,( GetTimingDifficulty() >= 4 )); + InitCommand=function(self) + self:x(-5); + self:visible( GetTimingDifficulty() >= 4 ); + end; }; MakeDisplayBar( 4, 20 ) .. { - InitCommand=cmd(x,5;visible,( GetTimingDifficulty() >= 5 )); + InitCommand=function(self) + self:x(5); + self:visible( GetTimingDifficulty() >= 5 ); + end; }; MakeDisplayBar( 4, 20 ) .. { - InitCommand=cmd(x,10;visible,( GetTimingDifficulty() >= 6 )); + function(self) + self:x(10); + self:visible( GetTimingDifficulty() >= 6 ); + end; }; MakeDisplayBar( 4, 20 ) .. { - InitCommand=cmd(x,15;visible,( GetTimingDifficulty() >= 7 )); + function(self) + self:x(15); + self:visible( GetTimingDifficulty() >= 7 ); + end; }; MakeDisplayBar( 4, 20 ) .. { - InitCommand=cmd(x,20;visible,( GetTimingDifficulty() >= 8 )); + function(self) + self:x(20); + self:visible( GetTimingDifficulty() >= 8 ); + end; }; }; Condition=sTarget[1] == "TimingDifficulty"; }; - -- ---[[ 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); + InitCommand=function(self) + self:x((i - 1) * fSpacingX); + end; }; end