diff --git a/Themes/_fallback/Scripts/02 StageMods.lua b/Themes/_fallback/Scripts/02 StageMods.lua index 37bd927a5a..d61db7c252 100644 --- a/Themes/_fallback/Scripts/02 StageMods.lua +++ b/Themes/_fallback/Scripts/02 StageMods.lua @@ -50,6 +50,8 @@ function ScreenSelectMusic:setupmusicstagemods() GAMESTATE:SetPreferredDifficulty( pn, difficulty ) MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} ) end + +-- if PREFSMAN:GetPreference(" GAMESTATE:SetSongOptions( "ModsLevel_Stage", so ) MESSAGEMAN:Broadcast( "SongOptionsChanged" ) diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/basemeter.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/basemeter.png new file mode 100644 index 0000000000..469e617168 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/basemeter.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/center (doubleres).png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/center (doubleres).png new file mode 100644 index 0000000000..f792417219 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/center (doubleres).png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/corner (doubleres).png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/corner (doubleres).png new file mode 100644 index 0000000000..f509dde7a7 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/corner (doubleres).png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/danger.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/danger.png new file mode 100644 index 0000000000..3adbe6ff21 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/danger.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/decoration_corner (doubleres).png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/decoration_corner (doubleres).png new file mode 100644 index 0000000000..865e4ce12b Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/decoration_corner (doubleres).png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/default.lua b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/default.lua new file mode 100644 index 0000000000..1fa7919e8c --- /dev/null +++ b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/default.lua @@ -0,0 +1,512 @@ +local t = Def.ActorFrame{} + +local newBPS; +local oldBPS; + + +-- DECORATIONS //////////////////////// + +-- Left Hex Corner Decoration +t[#t+1] = LoadActor("decoration_corner") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1)); + OnCommand=cmd(horizalign,left;x,SCREEN_LEFT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;zoomx,0.6;diffusealpha,0.3;blend,Blend.Add); +}; + +-- Right Hex Corner Decoration +t[#t+1] = LoadActor("decoration_corner") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2)); + OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT;vertalign,top;y,SCREEN_TOP;zoomy,0.4;;zoomx,-0.6;diffusealpha,0.3;blend,Blend.Add); +}; + + +-- WAVY LINE (thanks AJ) //////////////////////// + + +--P1 +t[#t+1] = LoadActor("hot_lores") .. { + OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;texcoordvelocity,0.1,0;queuecommand,"Begin"); + BeginCommand=function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + local move = GAMESTATE:GetSongBPS()/2 + if GAMESTATE:GetSongFreeze() then + move = 0; + end + self:texcoordvelocity(move,0); + self:sleep(0.001); + self:queuecommand("Begin"); + end; + end; + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_1 then + local lifeP1=params.LifeMeter:GetLife(); + if lifeP1>=THEME:GetMetric("LifeMeterBar", "HotValue") then + self:diffusealpha(0.5); + else + self:diffusealpha(0); + end; + end; + end; +}; + +--P2 +t[#t+1] = LoadActor("hot_lores") .. { + OnCommand=cmd(diffusealpha,0;visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,left;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,(SCREEN_WIDTH/2-26)*-1;texcoordvelocity,0.1,0;queuecommand,"Begin"); + BeginCommand=function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + local move = GAMESTATE:GetSongBPS()/2 + if GAMESTATE:GetSongFreeze() then + move = 0; + end + self:texcoordvelocity(move,0); + self:sleep(0.001); + self:queuecommand("Begin"); + end; + end; + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_2 then + local lifeP2=params.LifeMeter:GetLife(); + if lifeP2>=THEME:GetMetric("LifeMeterBar", "HotValue") then + self:diffusealpha(0.5); + else + self:diffusealpha(0); + end; + end; + end; +}; + +--Double +--customtexturerect,0,0,[PixelsToCoverWidth]/[ImageWidth],[PixelsToCoverHeight]/[ImageHeight] +--I said that I was gonna write it down. thx midi + +t[#t+1] = LoadActor("hot_lores") .. { + OnCommand=cmd(diffusealpha,0;horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;texcoordvelocity,0.1,0;customtexturerect,0,0,600/(SCREEN_WIDTH-36),1;queuecommand,"Begin"); + BeginCommand=function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + local move = GAMESTATE:GetSongBPS()/2 + if GAMESTATE:GetSongFreeze() then + move = 0; + end + self:texcoordvelocity(move,0); + self:sleep(0.001); + self:queuecommand("Begin"); + else + self:visible(false); + end; + end; + LifeChangedMessageCommand=function(self,params) + local life=params.LifeMeter:GetLife(); + if life>=THEME:GetMetric("LifeMeterBar", "HotValue") then + self:diffusealpha(0.5); + else + self:diffusealpha(0); + end; + end; +}; + + +-- DANGER //////////////////////// + + +--DANGER P1 single +t[#t+1] = LoadActor("danger") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5); + OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On"); + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_1 then + local lifeP1 = params.LifeMeter:GetLife(); + if lifeP1 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + self:visible(true); + end; + else + self:visible(false); + end; + end; +end; + +}; + +--DANGER P2 single +t[#t+1] = LoadActor("danger") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT-18;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-26;zoomy,0.5); + OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On"); + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_2 then + local lifeP2 = params.LifeMeter:GetLife(); + if lifeP2 <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + self:visible(true); + end; + else + self:visible(false); + end; + end; + end; +}; + +--DANGER double +t[#t+1] = LoadActor("danger") .. { + InitCommand=cmd(visible,false;horizalign,center;x,SCREEN_CENTER_X;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH-36;zoomy,0.5); + OnCommand=cmd(effectclock,"bgm";diffusealpha,1;linear,0.2;diffusealpha,0.25;linear,0.2;diffusealpha,1;queuecommand,"On"); + LifeChangedMessageCommand=function(self,params) + local life = params.LifeMeter:GetLife(); + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + if life <= THEME:GetMetric("LifeMeterBar", "DangerThreshold") then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + + + +-- METERS //////////////////////// + + + + + +---basemeter masked P1 +t[#t+1] = LoadActor("basemeter") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add); + OnCommand=cmd(bounce;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,2,0,0,0;); + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_1 then + local style = GAMESTATE:GetCurrentStyle(); + local lifeP1 = params.LifeMeter:GetLife(); + if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then + if lifeP1==0 then + self:visible(false); + else + + if lifeP1==1 then + self:effectmagnitude(0,0,0); + else + self:effectmagnitude(-40,0,0); + end; + + self:visible(true); + end + end + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:zoomtowidth((SCREEN_WIDTH-40)*lifeP1+5); + else + self:zoomtowidth((SCREEN_WIDTH/2-26)*lifeP1); + end; + + end; + end; + +}; + + + + + + + +---basemeter masked P2 +t[#t+1] = LoadActor("basemeter") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);horizalign,right;x,SCREEN_RIGHT+18;valign,0.5;y,SCREEN_TOP+41;zoomy,0.5;blend,Blend.Add;queuecommand,"Set"); + OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;); + SetCommand=function(self,params) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:effectmagnitude(-40,0,0); + self:horizalign(left); + self:x(SCREEN_LEFT+18); + end; + end; + + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_2 then + local style = GAMESTATE:GetCurrentStyle(); + local lifeP2 = params.LifeMeter:GetLife(); + if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then + if lifeP2==0 then + self:visible(false); + else + + if lifeP2==1 then + self:effectmagnitude(0,0,0); + else + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:effectmagnitude(-40,0,0); + else + self:effectmagnitude(40,0,0); + end + end; + + self:visible(true); + end + end + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:zoomtowidth((SCREEN_WIDTH-40)*lifeP2); + else + self:zoomtowidth(((SCREEN_WIDTH/2-26)*lifeP2)+40); + end; + + end; + end; + +}; + + + + +-- FRAMES & TIPS //////////////////////// + + +-- Left Corner +t[#t+1] = LoadActor("mask") .. { + OnCommand=cmd(horizalign,right;x,SCREEN_LEFT+130;vertalign,top;y,SCREEN_TOP+12;zoom,0.45;queuecommand,"Set"); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(true); + else + if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + +-- Right Corner +t[#t+1] = LoadActor("mask") .. { + OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-130;vertalign,top;y,SCREEN_TOP+12;zoomx,-0.45;zoomy,0.45;queuecommand,"Set"); +SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(true); + else + if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + + +-- Left Corner +t[#t+1] = LoadActor("corner") .. { + OnCommand=cmd(horizalign,left;x,SCREEN_LEFT+15;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set"); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(true); + else + if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + +-- Right Corner +t[#t+1] = LoadActor("corner") .. { + OnCommand=cmd(horizalign,left;x,SCREEN_RIGHT-15;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set"); +SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(true); + else + if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + +-- Center Corner Left +t[#t+1] = LoadActor("center") .. { + OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X+5;vertalign,top;y,SCREEN_TOP+16;zoomx,-0.75;zoomy,0.75;queuecommand,"Set"); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + +-- Center Corner Right +t[#t+1] = LoadActor("center") .. { + OnCommand=cmd(horizalign,left;x,SCREEN_CENTER_X-5;vertalign,top;y,SCREEN_TOP+16;zoom,0.75;queuecommand,"Set"); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false); + else + if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then + self:visible(true); + else + self:visible(false); + end; + end; + end; +}; + +-- Center part 1 +t[#t+1] = LoadActor("frame") .. { + OnCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);horizalign,left;x,SCREEN_LEFT+52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:zoomtowidth(SCREEN_WIDTH-105); + self:visible(true) + else + if GAMESTATE:IsHumanPlayer(PLAYER_1) == false then + self:visible(false) + else + self:visible(true) + end + end; + end; +}; + +-- Center part 2 +t[#t+1] = LoadActor("frame") .. { + OnCommand=cmd(horizalign,right;x,SCREEN_RIGHT-52.5;vertalign,top;y,SCREEN_TOP+16;zoomtowidth,SCREEN_WIDTH/2-85;zoomy,0.75;queuecommand,"Set";); + SetCommand = function(self) + local style = GAMESTATE:GetCurrentStyle(); + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:visible(false) + else + if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then + self:visible(true) + else + self:visible(false) + end; + end; + end; +}; + + + +---tip P1 +t[#t+1] = LoadActor("tip") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;queuecommand,"Set"); + --OnCommand=cmd(bob;effectmagnitude,-40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;); + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_1 then + local style = GAMESTATE:GetCurrentStyle(); + local lifeP1 = params.LifeMeter:GetLife(); + if GAMESTATE:IsHumanPlayer(PLAYER_1)==true then + if lifeP1==0 then + self:visible(false); + else + self:visible(true); + end + end + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:x((SCREEN_WIDTH-40)*lifeP1+20); + else + self:x((SCREEN_WIDTH/2-26)*lifeP1+20); + end; + + end; + end; + +}; + + + +---tip P2 +t[#t+1] = LoadActor("tip") .. { + InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);valign,0.5;y,SCREEN_TOP+41;zoom,0.5;blend,Blend.Add;); + --OnCommand=cmd(bob;effectmagnitude,40,0,0;effectclock,"bgm";effecttiming,1,0,0,0;); + LifeChangedMessageCommand=function(self,params) + if params.Player == PLAYER_2 then + local style = GAMESTATE:GetCurrentStyle(); + local lifeP2 = params.LifeMeter:GetLife(); + local fullstate; + if GAMESTATE:IsHumanPlayer(PLAYER_2)==true then + if lifeP2==0 then + self:visible(false); + else + self:visible(true); + end + end + if style:GetStyleType() == "StyleType_OnePlayerTwoSides" then + self:x((SCREEN_WIDTH-40)*lifeP2+20); + else + self:x(SCREEN_RIGHT-((SCREEN_WIDTH/2-26)*lifeP2)-20); + end; + + end; + end; + +}; + +-- NAMES //////////////////////// + +--P1 NAME +t[#t+1] = LoadFont("Common Normal") .. { + InitCommand=cmd(horizalign,left;x,SCREEN_LEFT+30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true); + BeginCommand=function(self) + local profile = PROFILEMAN:GetProfile(PLAYER_1); + local name = profile:GetDisplayName(); + + if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then + if name=="" then + self:settext("Player 1"); + else + self:settext( name ); + end + end + + end; + + }; + +--P2 NAME +t[#t+1] = LoadFont("Common Normal") .. { + InitCommand=cmd(horizalign,right;x,SCREEN_RIGHT-30;y,SCREEN_TOP+15;zoom,0.4;shadowlength,1;uppercase,true); + BeginCommand=function(self) + local profile = PROFILEMAN:GetProfile(PLAYER_2); + local name = profile:GetDisplayName(); + + if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then + if name=="" then + self:settext("Player 2"); + else + self:settext( name ); + end + end + end; + + }; + + + +return t \ No newline at end of file diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/frame (doubleres).png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/frame (doubleres).png new file mode 100644 index 0000000000..8f4fb1191a Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/frame (doubleres).png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/hot_lores.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/hot_lores.png new file mode 100644 index 0000000000..6b2698696e Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/hot_lores.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/mask.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/mask.png new file mode 100644 index 0000000000..94585b3638 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/mask.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/meter.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/meter.png new file mode 100644 index 0000000000..983338f40a Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/meter.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/tip.png b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/tip.png new file mode 100644 index 0000000000..05b8c15fd5 Binary files /dev/null and b/Themes/default-dev-midi/BGAnimations/ScreenGameplay underlay/tip.png differ diff --git a/Themes/default-dev-midi/BGAnimations/ScreenSelectMusic underlay.lua b/Themes/default-dev-midi/BGAnimations/ScreenSelectMusic underlay.lua new file mode 100644 index 0000000000..3c2b2a29b3 --- /dev/null +++ b/Themes/default-dev-midi/BGAnimations/ScreenSelectMusic underlay.lua @@ -0,0 +1 @@ +return Def.ActorFrame {}; \ No newline at end of file diff --git a/Themes/default-dev-midi/ThemeInfo.ini b/Themes/default-dev-midi/ThemeInfo.ini new file mode 100644 index 0000000000..56c62b42cd --- /dev/null +++ b/Themes/default-dev-midi/ThemeInfo.ini @@ -0,0 +1,3 @@ +[ThemeInfo] +DisplayName=Midi Dev Theme +Author=Midiman \ No newline at end of file diff --git a/Themes/default-dev-midi/metrics.ini b/Themes/default-dev-midi/metrics.ini new file mode 100644 index 0000000000..87e92e1686 --- /dev/null +++ b/Themes/default-dev-midi/metrics.ini @@ -0,0 +1,5 @@ +[Global] +FallbackTheme=default +[ScreenGameplay] +LifeP1OnCommand=visible,false +LifeP2OnCommand=visible,false \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua b/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua new file mode 100644 index 0000000000..8bf1f85bb4 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua @@ -0,0 +1,63 @@ +local vStats = STATSMAN:GetCurStageStats(); +local function CreateStats( pnPlayer ) + -- Actor Templates + local aLabel = LoadFont("Common Normal") .. { Text="..."; InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); }; + local aText = LoadFont("Common Normal") .. { Text="..."; InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); }; + -- DA STATS, JIM!! + local pnStageStats = vStats:GetPlayerStageStats( pnPlayer ); + -- Organized Stats. + local tStats = { + W1 = pnStageStats:GetTapNoteScores('TapNoteScore_W1'); + W2 = pnStageStats:GetTapNoteScores('TapNoteScore_W2'); + W3 = pnStageStats:GetTapNoteScores('TapNoteScore_W3'); + W4 = pnStageStats:GetTapNoteScores('TapNoteScore_W4'); + W5 = pnStageStats:GetTapNoteScores('TapNoteScore_W5'); + Miss = pnStageStats:GetTapNoteScores('TapNoteScore_Miss'); + HitMine = pnStageStats:GetTapNoteScores('TapNoteScore_HitMine'); + AvoidMine = pnStageStats:GetTapNoteScores('TapNoteScore_AvoidMine'); + Held = pnStageStats:GetHoldNoteScores('HoldNoteScore_Held'); + LetGo = pnStageStats:GetHoldNoteScores('HoldNoteScore_LetGo'); + }; + -- Organized Equation Values + local tValues = { + -- marvcount*7 + perfcount*6 + greatcount*5 + goodcount*4 + boocount*2 + okcount*7 + ITG = ( tStats["W1"]*7 + tStats["W2"]*6 + tStats["W3"]*5 + tStats["W4"]*4 + tStats["W5"]*2 + tStats["Held"]*7 ), + -- (marvcount + perfcount + greatcount + goodcount + boocount + misscount + okcount + ngcount)*7 + ITG_MAX = ( tStats["W1"] + tStats["W2"] + tStats["W3"] + tStats["W4"] + tStats["W5"] + tStats["Miss"] + tStats["Held"] + tStats["LetGo"] )*7, + -- marvcount*3 + perfcount*2 + greatcount*1 - boocount*4 - misscount*8 + okcount*6 + MIGS = ( tStats["W1"]*3 + tStats["W2"]*2 + tStats["W3"] - tStats["W5"]*4 - tStats["Miss"]*8 + tStats["Held"]*6 ), + -- (marvcount + perfcount + greatcount + goodcount + boocount + misscount)*3 + (okcount + ngcount)*6 + MIGS_MAX = ( (tStats["W1"] + tStats["W2"] + tStats["W3"] + tStats["W4"] + tStats["W5"] + tStats["Miss"])*3 + (tStats["Held"] + tStats["LetGo"])*6 ), + + }; + -- + local t = Def.ActorFrame {}; + t[#t+1] = Def.ActorFrame { + InitCommand=cmd(y,-16); + LoadActor(THEME:GetPathG("ScreenTitleMenu","PreferenceFrame")) .. { + InitCommand=cmd(zoom,0.875;diffuse,PlayerColor( pnPlayer )); + }; + aLabel .. { Text="ITG DP:"; InitCommand=cmd(x,-64) }; + aText .. { Text=string.format("%04i",tValues["ITG"]); InitCommand=cmd(x,-8;y,5;vertalign,bottom;zoom,0.675); }; + aText .. { Text="/"; InitCommand=cmd(x,28;y,5;vertalign,bottom;zoom,0.5;diffusealpha,0.5); }; + aText .. { Text=string.format("%04i",tValues["ITG_MAX"]); InitCommand=cmd(x,32;y,5;vertalign,bottom;zoom,0.5); }; + }; + t[#t+1] = Def.ActorFrame { + InitCommand=cmd(y,16); + LoadActor(THEME:GetPathG("ScreenTitleMenu","PreferenceFrame")) .. { + InitCommand=cmd(zoom,0.875;diffuse,PlayerColor( pnPlayer )); + }; + aLabel .. { Text="MIGS DP:"; InitCommand=cmd(x,-64) }; + aText .. { Text=string.format("%04i",tValues["MIGS"]); InitCommand=cmd(x,-8;y,5;vertalign,bottom;zoom,0.675); }; + aText .. { Text="/"; InitCommand=cmd(x,28;y,5;vertalign,bottom;zoom,0.5;diffusealpha,0.5); }; + aText .. { Text=string.format("%04i",tValues["MIGS_MAX"]); InitCommand=cmd(x,32;y,5;vertalign,bottom;zoom,0.5); }; + }; + return t +end; +local t = Def.ActorFrame {}; +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,math.floor(SCREEN_CENTER_X*0.5)-8;y,SCREEN_CENTER_Y); + -- + CreateStats( PLAYER_1 ); +}; +return t \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenEvaluation overlay/original.lua b/Themes/default/BGAnimations/ScreenEvaluation overlay/original.lua new file mode 100644 index 0000000000..df3f8441cb --- /dev/null +++ b/Themes/default/BGAnimations/ScreenEvaluation overlay/original.lua @@ -0,0 +1,86 @@ +local ss = STATSMAN:GetCurStageStats(); +local pss = ss:GetPlayerStageStats('PlayerNumber_P1'); +local misscount = pss:GetTapNoteScores('TapNoteScore_Miss'); +local boocount = pss:GetTapNoteScores('TapNoteScore_W5'); +local goodcount = pss:GetTapNoteScores('TapNoteScore_W4'); +local greatcount = pss:GetTapNoteScores('TapNoteScore_W3'); +local perfcount = pss:GetTapNoteScores('TapNoteScore_W2'); +local marvcount = pss:GetTapNoteScores('TapNoteScore_W1'); +local minehitcount = pss:GetTapNoteScores('TapNoteScore_HitMine'); +local minemisscount = pss:GetTapNoteScores('TapNoteScore_AvoidMine'); +local okcount = pss:GetHoldNoteScores('HoldNoteScore_Held'); +local ngcount = pss:GetHoldNoteScores('HoldNoteScore_LetGo'); +local ITGdp = marvcount*7 + perfcount*6 + greatcount*5 + goodcount*4 + boocount*2 + okcount*7 +local ITGdpmax = (marvcount + perfcount + greatcount + goodcount + boocount + misscount + okcount + ngcount)*7 +local MIGSdp = marvcount*3 + perfcount*2 + greatcount*1 - boocount*4 - misscount*8 + okcount*6 +local MIGSdpmax = (marvcount + perfcount + greatcount + goodcount + boocount + misscount)*3 + (okcount + ngcount)*6 +local histogram = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} +local total = 0 +local maxValue = 0; +print("John11length: "..#histogram); + +for i=1,#tTotalJudgmentsSigned do + print("John11Timings: "..i.." - "..tTotalJudgmentsSigned[i]) + local index = math.floor((0.18-tTotalJudgmentsSigned[i])*(#histogram/.36)); + print("John11Index: "..i.." - "..index) + if index >= 0 and index <= #histogram - 1 then + histogram[index] = histogram[index] + 1 + total = total + 1 + if histogram[index] > maxValue then + maxValue = histogram[index] + end + end +end + +for i=1,#histogram do + print("John11Judgments: "..i.." - "..histogram[i]) +end + +local t = Def.ActorFrame {} +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X/3;y,SCREEN_CENTER_Y); + LoadFont("Common Normal") .. { + Text="MIGS DP: "..tostring(MIGSdp).."/"..tostring(MIGSdpmax).."\nITG DP: "..tostring(ITGdp).."/"..tostring(ITGdpmax).."\nOffset Avg: "..RoundTo(tTimingDifferenceAverage,5).."\nAbs Offset Avg: "..RoundTo(tTimingDifferenceAbsAverage,5).."\nEarly Taps: "..tEarlyHits.."\nLate Taps: "..tLateHits; + InitCommand=cmd(y,-4;shadowlength,1;diffuse,Color("Red");zoom,0.5) + }; +} + +for i=1,#histogram do + local offset = -1 + if i > #histogram/2 then + offset = 1 + end + t[#t+1] = Def.Quad { + InitCommand=cmd(diffuse,Color("Red");zoomtowidth,300/#histogram-1;zoomtoheight,histogram[#histogram-i]/maxValue*150;x,SCREEN_CENTER_X+100+300/#histogram*i+offset;y,SCREEN_CENTER_Y-histogram[#histogram-i]/maxValue*150/2); + } +end + +t[#t+1] = Def.Quad { + InitCommand=cmd(x,SCREEN_CENTER_X+250;y,SCREEN_CENTER_Y+3;zoomtowidth,300;zoomtoheight,5;diffuse,color("#FFFFFF")); +} + +t[#t+1] = Def.Quad { + InitCommand=cmd(x,SCREEN_CENTER_X+252;y,SCREEN_CENTER_Y-75;zoomtowidth,1;zoomtoheight,150;diffuse,color("#000000")); +} + + +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X+125;y,SCREEN_CENTER_Y+15); + LoadFont("Common Normal") .. { + Text="Early"; + InitCommand=cmd(shadowlength,1;diffuse,Color("#FF0000");zoom,0.5) + }; +} + +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X+375;y,SCREEN_CENTER_Y+15); + LoadFont("Common Normal") .. { + Text="Late"; + InitCommand=cmd(shadowlength,1;diffuse,Color("#FF0000");zoom,0.5) + }; +} + +print("John11Total: "..total) +print("John11MaxValue: "..maxValue) + +return t \ No newline at end of file diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 97bf7a4d3a..29d9ea8bb0 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -638,7 +638,7 @@ ShowMeter=true ZeroMeterString="0" MeterX=56 MeterY=0 -MeterOnCommand=shadowlength,1;zoom,0.65 +MeterOnCommand=shadowlength,1;zoom,0.65;textglowmode,'TextGlowMode_Inner'; MeterOffCommand= MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \