diff --git a/stepmania/Themes/default/BGAnimations/ScreenEvaluationStage background.redir b/stepmania/Themes/default/BGAnimations/ScreenEvaluationStage background.redir new file mode 100644 index 0000000000..e80b2145da --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenEvaluationStage background.redir @@ -0,0 +1 @@ +_shared background fade in \ No newline at end of file diff --git a/stepmania/Themes/default/BGAnimations/ScreenSelectStyle in.redir b/stepmania/Themes/default/BGAnimations/ScreenSelectStyle in.redir new file mode 100644 index 0000000000..0f6547301b --- /dev/null +++ b/stepmania/Themes/default/BGAnimations/ScreenSelectStyle in.redir @@ -0,0 +1 @@ +_options to options \ No newline at end of file diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluation banner frame.png b/stepmania/Themes/default/Graphics/ScreenEvaluation banner frame.png new file mode 100644 index 0000000000..59557db20d Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScreenEvaluation banner frame.png differ diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluation try extra1.png b/stepmania/Themes/default/Graphics/ScreenEvaluation try extra1.png new file mode 100644 index 0000000000..274cde31d5 Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScreenEvaluation try extra1.png differ diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluation try extra2.png b/stepmania/Themes/default/Graphics/ScreenEvaluation try extra2.png new file mode 100644 index 0000000000..2346c202ea Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScreenEvaluation try extra2.png differ diff --git a/stepmania/Themes/default/Graphics/ScreenEvaluationStage footer.redir b/stepmania/Themes/default/Graphics/ScreenEvaluationStage footer.redir new file mode 100644 index 0000000000..81b63f5281 --- /dev/null +++ b/stepmania/Themes/default/Graphics/ScreenEvaluationStage footer.redir @@ -0,0 +1 @@ +_shared footer.png \ No newline at end of file diff --git a/stepmania/Themes/default/Sounds/ScreenEvaluation try extra2.redir b/stepmania/Themes/default/Sounds/ScreenEvaluation try extra2.redir new file mode 100644 index 0000000000..2c97260a8c --- /dev/null +++ b/stepmania/Themes/default/Sounds/ScreenEvaluation try extra2.redir @@ -0,0 +1 @@ +ScreenEvaluation extra1.mp3 \ No newline at end of file diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index d718d1d323..24a56542e6 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -1,4 +1,4 @@ -// Possible NextScreen names: +// Possible NextScreen names: // - ScreenCaution // - ScreenEz2SelectPlayer // - ScreenSelectMode @@ -252,66 +252,64 @@ HelpText=Press START to continue TimerSeconds=15 [ScreenSelectMusic] -BannerFrameX=160 -BannerFrameY=162 -BannerX=150 -BannerY=170 +BannerFrameOnCommand=x,160;y,162;xoffset,-400;bounceend,0.5;xoffset,400 +BannerFrameOffCommand=bouncebegin,0.5;xoffset,-400 +BannerOnCommand=x,150;y,170;xoffset,-400;bounceend,0.5;xoffset,400 +BannerOffCommand=bouncebegin,0.5;xoffset,-400 BannerWidth=282 BannerHeight=92 -BPMX=180 -BPMY=116 -BPMZoom=0.7 -StageX=52 -StageY=114 -StageZoom=0.7 -CDTitleX=252 -CDTitleY=148 -DifficultyFrameP1X=60 -DifficultyFrameP1Y=248 -DifficultyFrameP2X=260 -DifficultyFrameP2Y=248 -DifficultyIconP1X=48 -DifficultyIconP1Y=248 -DifficultyIconP2X=272 -DifficultyIconP2Y=248 -RadarX=160 -RadarY=334 -SortIconX=350 -SortIconY=70 -ScoreFrameP1X=520 -ScoreFrameP1Y=210 -ScoreFrameP2X=520 -ScoreFrameP2Y=286 -ScoreP1X=520 -ScoreP1Y=210 -ScoreP2X=520 -ScoreP2Y=286 -ScoreZoom=0.8 -MeterFrameP1X=82 -MeterFrameP1Y=432 -MeterFrameP2X=238 -MeterFrameP2Y=432 -MeterP1X=88 -MeterP1Y=432 -MeterP2X=228 -MeterP2Y=432 -WheelX=480 -WheelY=244 -PlayerOptionsP1X=16 -PlayerOptionsP1Y=330 -PlayerOptionsP2X=304 -PlayerOptionsP2Y=330 -SongOptionsX=160 -SongOptionsY=334 -OptionIconsP1X=30 -OptionIconsP1Y=58 -OptionIconsP2X=30 -OptionIconsP2Y=86 -BalloonX=392 -BalloonY=140 +BPMOnCommand=x,180;y,116;xoffset,-400;bounceend,0.5;xoffset,400 +BPMOffCommand=bouncebegin,0.5;xoffset,-400 +StageOnCommand=x,52;y,114;xoffset,-400;bounceend,0.5;xoffset,400 +StageOffCommand=bouncebegin,0.5;xoffset,-400 +CDTitleOnCommand=x,252;y,148;xoffset,-400;bounceend,0.5;xoffset,400 +CDTitleOffCommand=bouncebegin,0.5;xoffset,-400 +DifficultyFrameP1OnCommand=x,60;y,248;diffuse,1,1,1,0;linear,0.5;diffuse,1,1,1,1 +DifficultyFrameP1OffCommand=linear,0.5;diffuse,1,1,1,0 +DifficultyFrameP2OnCommand=x,260;y,248;diffuse,1,1,1,0;linear,0.5;diffuse,1,1,1,1 +DifficultyFrameP2OffCommand=linear,0.5;diffuse,1,1,1,0 +DifficultyIconP1OnCommand=x,48;y,248;zoomy,0;linear,0.5;zoomy,1 +DifficultyIconP1OffCommand=linear,0.5;zoomy,0 +DifficultyIconP2OnCommand=x,272;y,248;zoomy,0;linear,0.5;zoomy,1 +DifficultyIconP2OffCommand=linear,0.5;zoomy,0 +AutogenIconP1OnCommand=x,48;y,248;zoomy,0;linear,0.5;zoomy,1 +AutogenIconP1OffCommand=linear,0.5;zoomy,0 +AutogenIconP2OnCommand=x,272;y,248;zoomy,0;linear,0.5;zoomy,1 +AutogenIconP2OffCommand=linear,0.5;zoomy,0 +RadarOnCommand=x,160;y,334 +RadarOffCommand= +SortIconOnCommand=x,350;y,70;zoomy,0;linear,0.5;zoomy,1 +SortIconOffCommand=linear,0.5;zoomy,0 +ScoreFrameP1OnCommand=x,520;y,210;xoffset,400;bounceend,0.5;xoffset,-400 +ScoreFrameP1OffCommand=bouncebegin,0.5;xoffset,400 +ScoreFrameP2OnCommand=x,520;y,286;xoffset,400;bounceend,0.5;xoffset,-400 +ScoreFrameP2OffCommand=bouncebegin,0.5;xoffset,400 +ScoreP1OnCommand=x,520;y,210;xoffset,400;bounceend,0.5;xoffset,-400 +ScoreP1OffCommand=bouncebegin,0.5;xoffset,400 +ScoreP2OnCommand=x,520;y,286;xoffset,400;bounceend,0.5;xoffset,-400 +ScoreP2OffCommand=bouncebegin,0.5;xoffset,400 +MeterFrameP1OnCommand=x,82;y,432;diffuse,1,1,1,0;linear,0.5;diffuse,1,1,1,1 +MeterFrameP1OffCommand=linear,0.5;diffuse,1,1,1,0 +MeterFrameP2OnCommand=x,238;y,432;diffuse,1,1,1,0;linear,0.5;diffuse,1,1,1,1 +MeterFrameP2OffCommand=linear,0.5;diffuse,1,1,1,0 +MeterP1OnCommand=x,88;y,432;zoomy,0;linear,0.5;zoomy,1 +MeterP1OffCommand=linear,0.5;zoomy,0 +MeterP2OnCommand=x,228;y,432;zoomy,0;linear,0.5;zoomy,1 +MeterP2OffCommand=linear,0.5;zoomy,0 +WheelOnCommand=x,480;y,244 +WheelOffCommand= +SongOptionsOnCommand=x,160;y,334;zoom,0.5;diffuse,1,1,1,0;linear,0.5;diffuse,1,1,1,1 +SongOptionsOffCommand=linear,0.5;diffuse,1,1,1,0 +SongOptionsExtraCommand=diffuseblink +OptionIconsP1OnCommand=x,30;y,58;zoomy,0;linear,0.5;zoomy,1 +OptionIconsP1OffCommand=linear,0.5;zoomy,0 +OptionIconsP2OnCommand=x,30;y,86;zoomy,0;linear,0.5;zoomy,1 +OptionIconsP2OffCommand=linear,0.5;zoomy,0 +BalloonOnCommand=x,392;y,140;zoomy,0;linear,0.5;zoomy,1 +BalloonOffCommand=linear,0.5;zoomy,0 +OptionsMessageShowCommand=x,320;y,240;zoomy,0;linear,0.25;zoomy,1;sleep,1;linear,0.25;zoomy,0 HelpText=&LEFT; or &RIGHT; change music Hold &LEFT; and &RIGHT; then press START to change sort::&UP;&UP; easier difficulty &DOWN;&DOWN; harder difficulty::&UP;&DOWN;&UP;&DOWN; to change sort TimerSeconds=60 -ScoreConnectedToMusicWheel=1 SampleMusicDelay=0.25 [ScreenEz2SelectMusic] @@ -461,92 +459,283 @@ TickEarlySeconds=0.05 [ScreenEvaluation] SongSelectScreen=ScreenSelectMusic EndGameScreen=ScreenNameEntry -BannerX=320 -BannerY=100 -StageX=320 -StageY=64 -DifficultyIconP1X=220 -DifficultyIconP1Y=128 -DifficultyIconP2X=420 -DifficultyIconP2Y=128 -GradeP1X=94 -GradeP2X=546 -GradeY=100 -PercentBaseP1X=120 -PercentBaseP2X=572 -DancePointP1X=170 -DancePointP2X=622 -DancePointDisplayWidth=155 //this seems to work well with default -PercentBaseY=134 -JudgeLabelsX=320 -MarvelousP1X=230 -MarvelousP2X=410 -MarvelousOniP1X=230 -MarvelousOniP2X=410 -MarvelousY=160 -PerfectP1X=230 -PerfectP2X=410 -PerfectOniP1X=230 -PerfectOniP2X=410 -PerfectY=192 -GreatP1X=230 -GreatP2X=410 -GreatOniP1X=230 -GreatOniP2X=410 -GreatY=224 -GoodP1X=230 -GoodP2X=410 -GoodOniP1X=230 -GoodOniP2X=410 -GoodY=256 -BooP1X=230 -BooP2X=410 -BooOniP1X=230 -BooOniP2X=410 -BooY=288 -MissP1X=230 -MissP2X=410 -MissOniP1X=230 -MissOniP2X=410 -MissY=320 -OKP1X=230 -OKP2X=410 -OKOniP1X=230 -OKOniP2X=410 -OKY=352 -MaxComboP1X=134 -MaxComboP2X=578 -MaxComboOniP1X=1000 // off screen -MaxComboOniP2X=1000 // off screen -MaxComboY=334 -ScoreLabelsX=320 -ScoreNumbersP1X=150 -ScoreNumbersP2X=490 -ScoreY=374 -BonusP1X=96 -BonusP2X=544 -BonusY=256 -BarP1BaseX=176 -BarP2BaseX=466 -BarP1Rotation=3.1415 -BarP2Rotation=0 -BarStartY=194 -BarSpacingY=27 -BarWidth=106 -BarHeight=16 -SongsSurvivedP1X=96 -SongsSurvivedP2X=544 -SongsSurvivedY=240 -NewRecordP1X=150 -NewRecordP2X=490 -NewRecordY=398 -TryExtraStageX=320 -TryExtraStageY=428 +Banner1OnCommand=x,320;y,100;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +Banner1OffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +Banner2OnCommand= +Banner2OffCommand= +Banner3OnCommand= +Banner3OffCommand= +Banner4OnCommand= +Banner4OffCommand= +Banner5OnCommand= +Banner5OffCommand= +BannerWidth=248 +BannerHeight=92 +StageOnCommand=x,320;y,66;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +StageOffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +DifficultyIconP1OnCommand=x,214;y,70;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +DifficultyIconP1OffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +DifficultyIconP2OnCommand=x,426;y,70;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +DifficultyIconP2OffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +PlayerOptionsP1OnCommand=horizalign,left;vertalign,bottom;x,200;y,140;zoom,0.5;shadowlength,2;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +PlayerOptionsP1OffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +PlayerOptionsP2OnCommand=horizalign,right;vertalign,bottom;x,440;y,140;zoom,0.5;shadowlength,2;yoffset,480;sleep,0.0;decelerate,0.3;yoffset,-480 +PlayerOptionsP2OffCommand=sleep,0.8;accelerate,0.3;yoffset,480 +GradeFrameP1OnCommand=x,94;y,100;xoffset,-320;sleep,0.0;decelerate,0.3;xoffset,320 +GradeFrameP1OffCommand=sleep,0.8;accelerate,0.3;xoffset,-320 +GradeFrameP2OnCommand=x,546;y,100;xoffset,320;sleep,0.0;decelerate,0.3;xoffset,-320 +GradeFrameP2OffCommand=sleep,0.8;accelerate,0.3;xoffset,320 +GradeP1OnCommand=x,94;y,100;glowshift;effectperiod,2;xoffset,-320;sleep,0.0;decelerate,0.3;xoffset,320 +GradeP1OffCommand=sleep,0.8;accelerate,0.3;xoffset,-320 +GradeP2OnCommand=x,546;y,100;glowshift;effectperiod,2;xoffset,320;sleep,0.0;decelerate,0.3;xoffset,-320 +GradeP2OffCommand=sleep,0.8;accelerate,0.3;xoffset,320 +PercentWholeP1OnCommand=horizalign,right;vertalign,bottom;x,100;y,132;glowshift;effectperiod,2;xoffset,-320;sleep,0.0;decelerate,0.3;xoffset,320 +PercentWholeP1OffCommand=sleep,0.8;accelerate,0.3;xoffset,-320 +PercentWholeP2OnCommand=horizalign,right;vertalign,bottom;x,552;y,132;glowshift;effectperiod,2;xoffset,320;sleep,0.0;decelerate,0.3;xoffset,-320 +PercentWholeP2OffCommand=sleep,0.8;accelerate,0.3;xoffset,320 +PercentRemainderP1OnCommand=horizalign,left;vertalign,bottom;x,100;y,132;zoom,0.5;glowshift;effectperiod,2;xoffset,-320;sleep,0.0;decelerate,0.3;xoffset,320 +PercentRemainderP1OffCommand=sleep,0.8;accelerate,0.3;xoffset,-320 +PercentRemainderP2OnCommand=horizalign,left;vertalign,bottom;x,552;y,132;zoom,0.5;glowshift;effectperiod,2;xoffset,320;sleep,0.0;decelerate,0.3;xoffset,-320 +PercentRemainderP2OffCommand=sleep,0.8;accelerate,0.3;xoffset,320 +DancePointsP1OnCommand=x,94;y,100;glowshift;effectperiod,2;xoffset,-320;sleep,0.0;decelerate,0.3;xoffset,320 +DancePointsP1OffCommand=sleep,0.8;accelerate,0.3;xoffset,-320 +DancePointsP2OnCommand=x,546;y,100;glowshift;effectperiod,2;xoffset,320;sleep,0.0;decelerate,0.3;xoffset,-320 +DancePointsP2OffCommand=sleep,0.8;accelerate,0.3;xoffset,320 +MarvelousLabelOnCommand=x,320;y,160;yoffset,480;sleep,0.1;decelerate,0.3;yoffset,-480 +MarvelousLabelOffCommand=sleep,0.7;accelerate,0.3;yoffset,480 +MarvelousNumberP1OnCommand=x,230;y,160;xoffset,-320;sleep,0.1;decelerate,0.3;xoffset,320 +MarvelousNumberP1OffCommand=sleep,0.7;accelerate,0.3;xoffset,-320 +MarvelousNumberP2OnCommand=x,410;y,160;xoffset,320;sleep,0.1;decelerate,0.3;xoffset,-320 +MarvelousNumberP2OffCommand=sleep,0.7;accelerate,0.3;xoffset,320 +PerfectLabelOnCommand=x,320;y,192;yoffset,480;sleep,0.2;decelerate,0.3;yoffset,-480 +PerfectLabelOffCommand=sleep,0.6;accelerate,0.3;yoffset,480 +PerfectNumberP1OnCommand=x,230;y,192;xoffset,-320;sleep,0.2;decelerate,0.3;xoffset,320 +PerfectNumberP1OffCommand=sleep,0.6;accelerate,0.3;xoffset,-320 +PerfectNumberP2OnCommand=x,410;y,192;xoffset,320;sleep,0.2;decelerate,0.3;xoffset,-320 +PerfectNumberP2OffCommand=sleep,0.6;accelerate,0.3;xoffset,320 +GreatLabelOnCommand=x,320;y,224;yoffset,480;sleep,0.3;decelerate,0.3;yoffset,-480 +GreatLabelOffCommand=sleep,0.5;accelerate,0.3;yoffset,480 +GreatNumberP1OnCommand=x,230;y,224;xoffset,-320;sleep,0.3;decelerate,0.3;xoffset,320 +GreatNumberP1OffCommand=sleep,0.5;accelerate,0.3;xoffset,-320 +GreatNumberP2OnCommand=x,410;y,224;xoffset,320;sleep,0.3;decelerate,0.3;xoffset,-320 +GreatNumberP2OffCommand=sleep,0.5;accelerate,0.3;xoffset,320 +GoodLabelOnCommand=x,320;y,256;yoffset,480;sleep,0.4;decelerate,0.3;yoffset,-480 +GoodLabelOffCommand=sleep,0.4;accelerate,0.3;yoffset,480 +GoodNumberP1OnCommand=x,230;y,256;xoffset,-320;sleep,0.4;decelerate,0.3;xoffset,320 +GoodNumberP1OffCommand=sleep,0.4;accelerate,0.3;xoffset,-320 +GoodNumberP2OnCommand=x,410;y,256;xoffset,320;sleep,0.4;decelerate,0.3;xoffset,-320 +GoodNumberP2OffCommand=sleep,0.4;accelerate,0.3;xoffset,320 +BooLabelOnCommand=x,320;y,288;yoffset,480;sleep,0.5;decelerate,0.3;yoffset,-480 +BooLabelOffCommand=sleep,0.3;accelerate,0.3;yoffset,480 +BooNumberP1OnCommand=x,230;y,288;xoffset,-320;sleep,0.5;decelerate,0.3;xoffset,320 +BooNumberP1OffCommand=sleep,0.3;accelerate,0.3;xoffset,-320 +BooNumberP2OnCommand=x,410;y,288;xoffset,320;sleep,0.5;decelerate,0.3;xoffset,-320 +BooNumberP2OffCommand=sleep,0.3;accelerate,0.3;xoffset,320 +MissLabelOnCommand=x,320;y,320;yoffset,480;sleep,0.6;decelerate,0.3;yoffset,-480 +MissLabelOffCommand=sleep,0.2;accelerate,0.3;yoffset,480 +MissNumberP1OnCommand=x,230;y,320;xoffset,-320;sleep,0.6;decelerate,0.3;xoffset,320 +MissNumberP1OffCommand=sleep,0.2;accelerate,0.3;xoffset,-320 +MissNumberP2OnCommand=x,410;y,320;xoffset,320;sleep,0.6;decelerate,0.3;xoffset,-320 +MissNumberP2OffCommand=sleep,0.2;accelerate,0.3;xoffset,320 +OKLabelOnCommand=x,320;y,352;yoffset,480;sleep,0.7;decelerate,0.3;yoffset,-480 +OKLabelOffCommand=sleep,0.1;accelerate,0.3;yoffset,480 +OKNumberP1OnCommand=x,230;y,352;xoffset,-320;sleep,0.7;decelerate,0.3;xoffset,320 +OKNumberP1OffCommand=sleep,0.1;accelerate,0.3;xoffset,-320 +OKNumberP2OnCommand=x,410;y,352;xoffset,320;sleep,0.7;decelerate,0.3;xoffset,-320 +OKNumberP2OffCommand=sleep,0.1;accelerate,0.3;xoffset,320 +MaxComboLabelOnCommand=diffuse,1,1,1,0 +MaxComboLabelOffCommand= +MaxComboNumberP1OnCommand=x,134;y,334;zoom,1.2;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,0,1 +MaxComboNumberP1OffCommand=linear,0.7;diffuse,1,1,1,0 +MaxComboNumberP2OnCommand=x,580;y,334;zoom,1.2;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,0,1 +MaxComboNumberP2OffCommand=linear,0.7;diffuse,1,1,1,0 +BonusFrameP1OnCommand=x,96;y,256;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1 +BonusFrameP1OffCommand=linear,0.7;diffuse,1,1,1,0 +BonusFrameP2OnCommand=x,544;y,256;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1 +BonusFrameP2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible1P1OnCommand=horizalign,left;x,176;y,194;rotationz,3.1415;zoomx,0;sleep,0.2;linear,1.0;zoomx,1 +BarPossible1P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible1P2OnCommand=horizalign,left;x,466;y,194;rotationz,0;zoomx,0;sleep,0.2;linear,1.0;zoomx,1 +BarPossible1P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible2P1OnCommand=horizalign,left;x,176;y,221;rotationz,3.1415;zoomx,0;sleep,0.3;linear,1.0;zoomx,1 +BarPossible2P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible2P2OnCommand=horizalign,left;x,466;y,221;rotationz,0;zoomx,0;sleep,0.3;linear,1.0;zoomx,1 +BarPossible2P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible3P1OnCommand=horizalign,left;x,176;y,248;rotationz,3.1415;zoomx,0;sleep,0.4;linear,1.0;zoomx,1 +BarPossible3P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible3P2OnCommand=horizalign,left;x,466;y,248;rotationz,0;zoomx,0;sleep,0.4;linear,1.0;zoomx,1 +BarPossible3P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible4P1OnCommand=horizalign,left;x,176;y,275;rotationz,3.1415;zoomx,0;sleep,1.0;linear,1.0;zoomx,1 +BarPossible4P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible4P2OnCommand=horizalign,left;x,466;y,275;rotationz,0;zoomx,0;sleep,1.0;linear,1.0;zoomx,1 +BarPossible4P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible5P1OnCommand=horizalign,left;x,176;y,302;rotationz,3.1415;zoomx,0;sleep,0.6;linear,1.0;zoomx,1 +BarPossible5P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarPossible5P2OnCommand=horizalign,left;x,466;y,302;rotationz,0;zoomx,0;sleep,0.6;linear,1.0;zoomx,1 +BarPossible5P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual1P1OnCommand=horizalign,left;x,176;y,194;rotationz,3.1415;zoomx,0;sleep,0.7;linear,1.0;zoomx,1 +BarActual1P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual1P2OnCommand=horizalign,left;x,466;y,194;rotationz,0;zoomx,0;sleep,0.7;linear,1.0;zoomx,1 +BarActual1P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual2P1OnCommand=horizalign,left;x,176;y,221;rotationz,3.1415;zoomx,0;sleep,0.8;linear,1.0;zoomx,1 +BarActual2P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual2P2OnCommand=horizalign,left;x,466;y,221;rotationz,0;zoomx,0;sleep,0.8;linear,1.0;zoomx,1 +BarActual2P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual3P1OnCommand=horizalign,left;x,176;y,248;rotationz,3.1415;zoomx,0;sleep,0.9;linear,1.0;zoomx,1 +BarActual3P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual3P2OnCommand=horizalign,left;x,466;y,248;rotationz,0;zoomx,0;sleep,0.9;linear,1.0;zoomx,1 +BarActual3P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual4P1OnCommand=horizalign,left;x,176;y,275;rotationz,3.1415;zoomx,0;sleep,1.0;linear,1.0;zoomx,1 +BarActual4P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual4P2OnCommand=horizalign,left;x,466;y,275;rotationz,0;zoomx,0;sleep,1.0;linear,1.0;zoomx,1 +BarActual4P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual5P1OnCommand=horizalign,left;x,176;y,302;rotationz,3.1415;zoomx,0;sleep,1.1;linear,1.0;zoomx,1 +BarActual5P1OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActual5P2OnCommand=horizalign,left;x,466;y,302;rotationz,0;zoomx,0;sleep,1.1;linear,1.0;zoomx,1 +BarActual5P2OffCommand=linear,0.7;diffuse,1,1,1,0 +BarActualMaxCommand=glowshift;effectperiod,0.5 +SongsSurvivedP1OnCommand=x,96;y,240;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1 +SongsSurvivedP1OffCommand=linear,0.7;diffuse,1,1,1,0 +SongsSurvivedP2OnCommand=x,544;y,240;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1 +SongsSurvivedP2OffCommand=linear,0.7;diffuse,1,1,1,0 +ScoreLabelOnCommand=x,320;y,380;yoffset,480;sleep,0.8;decelerate,0.3;yoffset,-480 +ScoreLabelOffCommand=sleep,0.0;accelerate,0.3;yoffset,480 +ScoreNumberP1OnCommand=x,160;y,380;xoffset,-320;sleep,0.8;decelerate,0.3;xoffset,320 +ScoreNumberP1OffCommand=sleep,0.0;accelerate,0.3;xoffset,-320 +ScoreNumberP2OnCommand=x,480;y,380;xoffset,320;sleep,0.8;decelerate,0.3;xoffset,-320 +ScoreNumberP2OffCommand=sleep,0.0;accelerate,0.3;xoffset,320 +TimeLabelOnCommand=x,320;y,380;yoffset,480;sleep,0.8;decelerate,0.3;yoffset,-480 +TimeLabelOffCommand=sleep,0.0;accelerate,0.3;yoffset,480 +TimeNumberP1OnCommand=x,160;y,380;xoffset,-320;sleep,0.8;decelerate,0.3;xoffset,320 +TimeNumberP1OffCommand=sleep,0.0;accelerate,0.3;xoffset,-320 +TimeNumberP2OnCommand=x,480;y,380;xoffset,320;sleep,0.8;decelerate,0.3;xoffset,-320 +TimeNumberP2OffCommand=sleep,0.0;accelerate,0.3;xoffset,320 +NewRecordP1OnCommand=x,150;y,398;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1;glowshift +NewRecordP1OffCommand=linear,0.7;diffuse,1,1,1,0 +NewRecordP2OnCommand=x,490;y,398;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1;glowshift +NewRecordP2OffCommand=linear,0.7;diffuse,1,1,1,0 +TryExtraStageOnCommand=x,320;y,428;diffuse,1,1,1,0;linear,0.7;diffuse,1,1,1,1;glowshift +TryExtraStageOffCommand=linear,0.7;diffuse,1,1,1,0 +SpinGrades=1 + +[ScreenEvaluationStage] +PercentWholeP1OnCommand=diffuse,1,1,1,0 +PercentWholeP1OffCommand= +PercentWholeP2OnCommand=diffuse,1,1,1,0 +PercentWholeP2OffCommand= +PercentRemainderP1OnCommand=diffuse,1,1,1,0 +PercentRemainderP1OffCommand= +PercentRemainderP2OnCommand=diffuse,1,1,1,0 +PercentRemainderP2OffCommand= +DancePointsP1OnCommand=diffuse,1,1,1,0 +DancePointsP1OffCommand= +DancePointsP2OnCommand=diffuse,1,1,1,0 +DancePointsP2OffCommand= +SongsSurvivedP1OnCommand=diffuse,1,1,1,0 +SongsSurvivedP1OffCommand= +SongsSurvivedP2OnCommand=diffuse,1,1,1,0 +SongsSurvivedP2OffCommand= +TimeLabelOnCommand=diffuse,1,1,1,0 +TimeLabelOffCommand= +TimeNumberP1OnCommand=diffuse,1,1,1,0 +TimeNumberP1OffCommand= +TimeNumberP2OnCommand=diffuse,1,1,1,0 +TimeNumberP2OffCommand= +HelpText=Press START to continue +TimerSeconds=20 + +[ScreenEvaluationSummary] +// small banners +Banner1OnCommand=x,260;y,80;zoom,0.5 +Banner1OffCommand= +Banner2OnCommand=x,290;y,90;zoom,0.5 +Banner2OffCommand= +Banner3OnCommand=x,320;y,100;zoom,0.5 +Banner3OffCommand= +Banner4OnCommand=x,350;y,110;zoom,0.5 +Banner4OffCommand= +Banner5OnCommand=x,380;y,120;zoom,0.5 +Banner5OffCommand= +StageOnCommand=diffuse,1,1,1,0 +StageOffCommand= +DifficultyIconP1OnCommand=diffuse,1,1,1,0 +DifficultyIconP1OffCommand= +DifficultyIconP2OnCommand=diffuse,1,1,1,0 +DifficultyIconP2OffCommand= +PlayerOptionsP1OnCommand=diffuse,1,1,1,0 +PlayerOptionsP1OffCommand= +PlayerOptionsP2OnCommand=diffuse,1,1,1,0 +PlayerOptionsP2OffCommand= +PercentWholeP1OnCommand=diffuse,1,1,1,0 +PercentWholeP1OffCommand= +PercentWholeP2OnCommand=diffuse,1,1,1,0 +PercentWholeP2OffCommand= +PercentRemainderP1OnCommand=diffuse,1,1,1,0 +PercentRemainderP1OffCommand= +PercentRemainderP2OnCommand=diffuse,1,1,1,0 +PercentRemainderP2OffCommand= +DancePointsP1OnCommand=diffuse,1,1,1,0 +DancePointsP1OffCommand= +DancePointsP2OnCommand=diffuse,1,1,1,0 +DancePointsP2OffCommand= +TimeLabelOnCommand=diffuse,1,1,1,0 +TimeLabelOffCommand= +TimeNumberP1OnCommand=diffuse,1,1,1,0 +TimeNumberP1OffCommand= +TimeNumberP2OnCommand=diffuse,1,1,1,0 +TimeNumberP2OffCommand= +HelpText=Press START to continue +TimerSeconds=40 + +[ScreenEvaluationCourse] +BarPossible1P1OnCommand=diffuse,1,1,1,0 +BarPossible1P1OffCommand= +BarPossible1P2OnCommand=diffuse,1,1,1,0 +BarPossible1P2OffCommand= +BarPossible2P1OnCommand=diffuse,1,1,1,0 +BarPossible2P1OffCommand= +BarPossible2P2OnCommand=diffuse,1,1,1,0 +BarPossible2P2OffCommand= +BarPossible3P1OnCommand=diffuse,1,1,1,0 +BarPossible3P1OffCommand= +BarPossible3P2OnCommand=diffuse,1,1,1,0 +BarPossible3P2OffCommand= +BarPossible4P1OnCommand=diffuse,1,1,1,0 +BarPossible4P1OffCommand= +BarPossible4P2OnCommand=diffuse,1,1,1,0 +BarPossible4P2OffCommand= +BarPossible5P1OnCommand=diffuse,1,1,1,0 +BarPossible5P1OffCommand= +BarPossible5P2OnCommand=diffuse,1,1,1,0 +BarPossible5P2OffCommand= +BarActual1P1OnCommand=diffuse,1,1,1,0 +BarActual1P1OffCommand= +BarActual1P2OnCommand=diffuse,1,1,1,0 +BarActual1P2OffCommand= +BarActual2P1OnCommand=diffuse,1,1,1,0 +BarActual2P1OffCommand= +BarActual2P2OnCommand=diffuse,1,1,1,0 +BarActual2P2OffCommand= +BarActual3P1OnCommand=diffuse,1,1,1,0 +BarActual3P1OffCommand= +BarActual3P2OnCommand=diffuse,1,1,1,0 +BarActual3P2OffCommand= +BarActual4P1OnCommand=diffuse,1,1,1,0 +BarActual4P1OffCommand= +BarActual4P2OnCommand=diffuse,1,1,1,0 +BarActual4P2OffCommand= +BarActual5P1OnCommand=diffuse,1,1,1,0 +BarActual5P1OffCommand= +BarActual5P2OnCommand=diffuse,1,1,1,0 +BarActual5P2OffCommand= +ScoreLabelOnCommand=diffuse,1,1,1,0 +ScoreLabelOffCommand= +ScoreNumberP1OnCommand=diffuse,1,1,1,0 +ScoreNumberP1OffCommand= +ScoreNumberP2OnCommand=diffuse,1,1,1,0 +ScoreNumberP2OffCommand= HelpText=Press START to continue TimerSeconds=40 -SpinGrades=1 -GradesGlowColor1=1,1,1,0.0 -GradesGlowColor2=1,1,1,0.3 [ScreenMusicScroll] ScrollDelay=0.2 @@ -629,9 +818,9 @@ FooterOnCommand=x,320;y,464 FooterOffCommand= HelpOnCommand=x,320;y,456;zoom,0.5;zoomy,0;linear,0.5;zoomy,0.5 HelpOffCommand=linear,0.5;zoomy,0 -StyleIconOnCommand=x,460;y,22;xoffset,640;spring,0.5;xoffset,-640 +StyleIconOnCommand=x,440;y,26;xoffset,640;spring,0.5;xoffset,-640 StyleIconOffCommand=bouncebegin,0.5;xoffset,640; -TimerOnCommand=x,588;y,22;xoffset,640;spring,0.5;xoffset,-640 +TimerOnCommand=x,590;y,22;xoffset,640;spring,0.5;xoffset,-640 TimerOffCommand=bouncebegin,0.5;xoffset,640; [ScreenOptions] @@ -710,7 +899,7 @@ RightEdge=620 BottomEdge=460 [Judgment] -MarvelousCommand=shadowlength,4;diffuse,1,1,1,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0;diffuse,1,1,1,0,glowblink,effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.5 +MarvelousCommand=shadowlength,4;diffuse,1,1,1,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0;diffuse,1,1,1,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.5 PerfectCommand=shadowlength,4;diffuse,1,1,1,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0;diffuse,1,1,1,0 GreatCommand=shadowlength,4;diffuse,1,1,1,1;zoom,1.2;linear,0.05;zoom,1;sleep,0.8;linear,0;diffuse,1,1,1,0 GoodCommand=shadowlength,4;diffuse,1,1,1,1;zoom,1.1;linear,0.05;zoom,1;sleep,0.8;linear,0;diffuse,1,1,1,0 diff --git a/stepmania/src/Actor.cpp b/stepmania/src/Actor.cpp index 48dcde461b..685acee5ab 100644 --- a/stepmania/src/Actor.cpp +++ b/stepmania/src/Actor.cpp @@ -371,38 +371,50 @@ void Actor::StretchTo( const RectF &r ) void Actor::SetEffectDiffuseBlink( float fEffectPeriodSeconds, RageColor c1, RageColor c2 ) { - m_Effect = diffuse_blink; + if( m_Effect != diffuse_blink ) + { + m_Effect = diffuse_blink; + m_fEffectPeriodSeconds = fEffectPeriodSeconds; + m_fSecsIntoEffect = 0; + } m_effectColor1 = c1; m_effectColor2 = c2; - m_fEffectPeriodSeconds = fEffectPeriodSeconds; - m_fSecsIntoEffect = 0; } void Actor::SetEffectDiffuseShift( float fEffectPeriodSeconds, RageColor c1, RageColor c2 ) { - m_Effect = diffuse_shift; + if( m_Effect != diffuse_shift ) + { + m_Effect = diffuse_shift; + m_fEffectPeriodSeconds = fEffectPeriodSeconds; + m_fSecsIntoEffect = 0; + } m_effectColor1 = c1; m_effectColor2 = c2; - m_fEffectPeriodSeconds = fEffectPeriodSeconds; - m_fSecsIntoEffect = 0; } void Actor::SetEffectGlowBlink( float fEffectPeriodSeconds, RageColor c1, RageColor c2 ) { - m_Effect = glow_blink; + if( m_Effect != glow_blink ) + { + m_Effect = glow_blink; + m_fEffectPeriodSeconds = fEffectPeriodSeconds; + m_fSecsIntoEffect = 0; + } m_effectColor1 = c1; m_effectColor2 = c2; - m_fEffectPeriodSeconds = fEffectPeriodSeconds; - m_fSecsIntoEffect = 0; } void Actor::SetEffectGlowShift( float fEffectPeriodSeconds, RageColor c1, RageColor c2 ) { - m_Effect = glow_shift; + if( m_Effect != glow_shift ) + { + m_Effect = glow_shift; + m_fEffectPeriodSeconds = fEffectPeriodSeconds; + m_fSecsIntoEffect = 0; + } m_effectColor1 = c1; m_effectColor2 = c2; - m_fEffectPeriodSeconds = fEffectPeriodSeconds; - m_fSecsIntoEffect = 0; } void Actor::SetEffectRainbow( float fEffectPeriodSeconds ) @@ -552,9 +564,18 @@ void Actor::Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, } } +CString GetParam( const CStringArray& sParams, int iIndex, int& iMaxIndexAccessed ) +{ + iMaxIndexAccessed = max( iIndex, iMaxIndexAccessed ); + if( iIndex < sParams.size() ) + return sParams[iIndex]; + else + return ""; +} + void Actor::Command( CString sCommandString ) { - // OPTIMIZATION OPPORTUNITY: sCommandString could be parsed much more efficiently. + // OPTIMIZATION OPPORTUNITY: sCommandString could be parsed more efficiently. CStringArray asCommands; split( sCommandString, ";", asCommands, true ); @@ -563,49 +584,49 @@ void Actor::Command( CString sCommandString ) { CStringArray asTokens; split( asCommands[c], ",", asTokens, true ); - asTokens.resize(5); // make this big so we don't go out of bounds below - // if the user doesn't provide enough parameters, tough. - CString& sName = asTokens[0]; - sName.MakeLower(); + int iMaxIndexAccessed = 0; -#define sParam(i) (asTokens[(unsigned)i+1]) +#define sParam(i) (GetParam(asTokens,i,iMaxIndexAccessed)) #define fParam(i) ((float)atof(sParam(i))) #define iParam(i) (atoi(sParam(i))) #define bParam(i) (iParam(i)!=0) + CString& sName = asTokens[0]; + sName.MakeLower(); + // Act on command - if ( sName=="sleep" ) BeginTweening( fParam(0), TWEEN_LINEAR ); - else if( sName=="linear" ) BeginTweening( fParam(0), TWEEN_LINEAR ); - else if( sName=="accelerate" ) BeginTweening( fParam(0), TWEEN_ACCELERATE ); - else if( sName=="decelerate" ) BeginTweening( fParam(0), TWEEN_DECELERATE ); - else if( sName=="bouncebegin" ) BeginTweening( fParam(0), TWEEN_BOUNCE_BEGIN ); - else if( sName=="bounceend" ) BeginTweening( fParam(0), TWEEN_BOUNCE_END ); - else if( sName=="spring" ) BeginTweening( fParam(0), TWEEN_SPRING ); + if ( sName=="sleep" ) BeginTweening( fParam(1), TWEEN_LINEAR ); + else if( sName=="linear" ) BeginTweening( fParam(1), TWEEN_LINEAR ); + else if( sName=="accelerate" ) BeginTweening( fParam(1), TWEEN_ACCELERATE ); + else if( sName=="decelerate" ) BeginTweening( fParam(1), TWEEN_DECELERATE ); + else if( sName=="bouncebegin" ) BeginTweening( fParam(1), TWEEN_BOUNCE_BEGIN ); + else if( sName=="bounceend" ) BeginTweening( fParam(1), TWEEN_BOUNCE_END ); + else if( sName=="spring" ) BeginTweening( fParam(1), TWEEN_SPRING ); else if( sName=="stoptweening" ) { StopTweening(); BeginTweening( 0.0001f, TWEEN_LINEAR ); } - else if( sName=="x" ) SetX( fParam(0) ); - else if( sName=="y" ) SetY( fParam(0) ); - else if( sName=="xoffset" ) SetX( GetX()+fParam(0) ); - else if( sName=="yoffset" ) SetY( GetY()+fParam(0) ); - else if( sName=="zoom" ) SetZoom( fParam(0) ); - else if( sName=="zoomx" ) SetZoomX( fParam(0) ); - else if( sName=="zoomy" ) SetZoomY( fParam(0) ); - else if( sName=="zoomtowidth" ) ZoomToWidth( fParam(0) ); - else if( sName=="zoomtoheight" ) ZoomToHeight( fParam(0) ); - else if( sName=="diffuse" ) SetDiffuse( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="diffuseleftedge" ) SetDiffuseLeftEdge( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="diffuserightedge" ) SetDiffuseRightEdge( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="diffusetopedge" ) SetDiffuseTopEdge( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="diffusebottomedge" ) SetDiffuseBottomEdge( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); + else if( sName=="x" ) SetX( fParam(1) ); + else if( sName=="y" ) SetY( fParam(1) ); + else if( sName=="xoffset" ) SetX( GetX()+fParam(1) ); + else if( sName=="yoffset" ) SetY( GetY()+fParam(1) ); + else if( sName=="zoom" ) SetZoom( fParam(1) ); + else if( sName=="zoomx" ) SetZoomX( fParam(1) ); + else if( sName=="zoomy" ) SetZoomY( fParam(1) ); + else if( sName=="zoomtowidth" ) ZoomToWidth( fParam(1) ); + else if( sName=="zoomtoheight" ) ZoomToHeight( fParam(1) ); + else if( sName=="diffuse" ) SetDiffuse( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="diffuseleftedge" ) SetDiffuseLeftEdge( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="diffuserightedge" ) SetDiffuseRightEdge( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="diffusetopedge" ) SetDiffuseTopEdge( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="diffusebottomedge" ) SetDiffuseBottomEdge( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); /* Add left/right/top/bottom for alpha if needed. */ else if( sName=="diffusealpha" ) { for(int i = 0; i < 4; ++i) { RageColor c = GetDiffuses( i ); c.a = fParam(0); SetDiffuses( i, c ); } } - else if( sName=="glow" ) SetGlow( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="rotationx" ) SetRotationX( fParam(0) ); - else if( sName=="rotationy" ) SetRotationY( fParam(0) ); - else if( sName=="rotationz" ) SetRotationZ( fParam(0) ); - else if( sName=="shadowlength" ) SetShadowLength( fParam(0) ); - else if( sName=="horizalign" ) SetHorizAlign( sParam(0) ); - else if( sName=="vertalign" ) SetVertAlign( sParam(0) ); + else if( sName=="glow" ) SetGlow( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="rotationx" ) SetRotationX( fParam(1) ); + else if( sName=="rotationy" ) SetRotationY( fParam(1) ); + else if( sName=="rotationz" ) SetRotationZ( fParam(1) ); + else if( sName=="shadowlength" ) SetShadowLength( fParam(1) ); + else if( sName=="horizalign" ) SetHorizAlign( sParam(1) ); + else if( sName=="vertalign" ) SetVertAlign( sParam(1) ); else if( sName=="diffuseblink" ) SetEffectDiffuseBlink(); else if( sName=="diffuseshift" ) SetEffectDiffuseShift(); else if( sName=="glowblink" ) SetEffectGlowBlink(); @@ -618,13 +639,13 @@ void Actor::Command( CString sCommandString ) else if( sName=="spin" ) SetEffectSpin(); else if( sName=="vibrate" ) SetEffectVibrate(); else if( sName=="stopeffect" ) SetEffectNone(); - else if( sName=="effectcolor1" ) SetEffectColor1( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="effectcolor2" ) SetEffectColor2( RageColor(fParam(0),fParam(1),fParam(2),fParam(3)) ); - else if( sName=="effectperiod" ) SetEffectPeriod( fParam(0) ); - else if( sName=="effectmagnitude" ) SetEffectMagnitude( RageVector3(fParam(0),fParam(1),fParam(2)) ); - else if( sName=="animate" ) EnableAnimation( bParam(0) ); - else if( sName=="texturewrapping" ) EnableTextureWrapping( bParam(0) ); - else if( sName=="additiveblend" ) EnableAdditiveBlend( bParam(0) ); + else if( sName=="effectcolor1" ) SetEffectColor1( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="effectcolor2" ) SetEffectColor2( RageColor(fParam(1),fParam(2),fParam(3),fParam(4)) ); + else if( sName=="effectperiod" ) SetEffectPeriod( fParam(1) ); + else if( sName=="effectmagnitude" ) SetEffectMagnitude( RageVector3(fParam(1),fParam(2),fParam(3)) ); + else if( sName=="animate" ) EnableAnimation( bParam(1) ); + else if( sName=="texturewrapping" ) EnableTextureWrapping( bParam(1) ); + else if( sName=="additiveblend" ) EnableAdditiveBlend( bParam(1) ); else { CString sError = ssprintf( "Unrecognized command name '%s' in command string '%s'.", sName.GetString(), sCommandString.GetString() ); @@ -633,7 +654,17 @@ void Actor::Command( CString sCommandString ) if( DISPLAY->IsWindowed() ) MessageBox(NULL, sError, "Actor::Command", MB_OK); #endif + } + + if( iMaxIndexAccessed != (int)asTokens.size()-1 ) + { + CString sError = ssprintf( "Wrong number of parameters in command '%s'. Expected %d but there are %d.", join(",",asTokens).GetString(), iMaxIndexAccessed+1, (int)asTokens.size() ); + LOG->Warn( sError ); +#if defined(WIN32) // XXX arch? + if( DISPLAY->IsWindowed() ) + MessageBox(NULL, sError, "Actor::Command", MB_OK); +#endif } } } diff --git a/stepmania/src/Actor.h b/stepmania/src/Actor.h index 96be1ee6b7..20682f784a 100644 --- a/stepmania/src/Actor.h +++ b/stepmania/src/Actor.h @@ -99,8 +99,8 @@ public: virtual float GetUnzoomedHeight() { return m_size.y; } virtual float GetZoomedWidth() { return m_size.x * DestTweenState().scale.x; } virtual float GetZoomedHeight() { return m_size.y * DestTweenState().scale.y; } -// virtual void SetWidth( float width ) { DestTweenState().size.x = width; } -// virtual void SetHeight( float height ) { DestTweenState().size.y = height; } + virtual void SetWidth( float width ) { m_size.x = width; } + virtual void SetHeight( float height ) { m_size.y = height; } virtual float GetZoom() { return DestTweenState().scale.x; } // not accurate in some cases virtual float GetZoomX() { return DestTweenState().scale.x; } diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 78b81585b4..c1344b8303 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -1173,7 +1173,8 @@ void MusicWheel::Move(int n) { if(n) { - m_fLockedWheelVelocity = LOCKED_INITIAL_VELOCITY; + int iSign = n/abs(n); + m_fLockedWheelVelocity = iSign*LOCKED_INITIAL_VELOCITY; m_soundLocked.Play(); } return; diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index a666ce81d4..bff146189b 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -279,8 +279,9 @@ Screen* Screen::Create( CString sClassName ) else if( 0==stricmp(sClassName, "ScreenCaution") ) ret = new ScreenCaution; else if( 0==stricmp(sClassName, "ScreenEdit") ) ret = new ScreenEdit; else if( 0==stricmp(sClassName, "ScreenEditMenu") ) ret = new ScreenEditMenu; - else if( 0==stricmp(sClassName, "ScreenEvaluation") ) ret = new ScreenEvaluation; - else if( 0==stricmp(sClassName, "ScreenFinalEvaluation") ) ret = new ScreenFinalEvaluation; + else if( 0==stricmp(sClassName, "ScreenEvaluationStage") ) ret = new ScreenEvaluationStage; + else if( 0==stricmp(sClassName, "ScreenEvaluationSummary") ) ret = new ScreenEvaluationSummary; + else if( 0==stricmp(sClassName, "ScreenEvaluationCourse") ) ret = new ScreenEvaluationCourse; else if( 0==stricmp(sClassName, "ScreenEz2SelectPlayer") ) ret = new ScreenEz2SelectPlayer; else if( 0==stricmp(sClassName, "ScreenSelectMode") ) ret = new ScreenSelectMode; else if( 0==stricmp(sClassName, "ScreenGameOver") ) ret = new ScreenGameOver; diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 08064feb9e..e57fec0ded 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -25,87 +25,58 @@ #include "ThemeManager.h" #include "RageSoundManager.h" +// If a metric isn't present in the category m_sClassName, fall back to "ScreenEvaluation" +#define GET_THEME_METRIC_FALLBACK(metric) (THEME->HasMetric(m_sClassName,metric)?THEME->GetMetric(m_sClassName,metric):THEME->GetMetric("ScreenEvaluation",metric)) +#define GET_THEME_ELEMENT_FALLBACK(cat,suffix) (THEME->GetPathToOptional(cat,m_sClassName+(suffix))!="" ? THEME->GetPathTo(cat,m_sClassName+(suffix)) : THEME->GetPathTo(cat,CString("ScreenEvaluation")+(suffix))) -#define SONGSEL_SCREEN THEME->GetMetric("ScreenEvaluation","SongSelectScreen") -#define ENDGAME_SCREEN THEME->GetMetric("ScreenEvaluation","EndGameScreen") -#define BANNER_X THEME->GetMetricF("ScreenEvaluation","BannerX") -#define BANNER_Y THEME->GetMetricF("ScreenEvaluation","BannerY") -#define STAGE_X THEME->GetMetricF("ScreenEvaluation","StageX") -#define STAGE_Y THEME->GetMetricF("ScreenEvaluation","StageY") -#define DIFFICULTY_ICON_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("DifficultyIconP%dX",p+1)) -#define DIFFICULTY_ICON_Y( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("DifficultyIconP%dY",p+1)) -#define GRADE_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("GradeP%dX",p+1)) -#define GRADE_Y THEME->GetMetricF("ScreenEvaluation","GradeY") -#define PERCENT_BASE_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("PercentBaseP%dX",p+1)) -#define DANCE_POINT_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("DancePointP%dX",p+1)) -#define DANCE_POINT_WIDTH THEME->GetMetricF("ScreenEvaluation","DancePointDisplayWidth") -#define PERCENT_BASE_Y THEME->GetMetricF("ScreenEvaluation","PercentBaseY") -#define JUDGE_LABELS_X THEME->GetMetricF("ScreenEvaluation","JudgeLabelsX") -#define MARVELOUS_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Marvelous%sP%dX",o?"Oni":"",p+1)) -#define MARVELOUS_Y THEME->GetMetricF("ScreenEvaluation","MarvelousY") -#define PERFECT_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Perfect%sP%dX",o?"Oni":"",p+1)) -#define PERFECT_Y THEME->GetMetricF("ScreenEvaluation","PerfectY") -#define GREAT_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Great%sP%dX",o?"Oni":"",p+1)) -#define GREAT_Y THEME->GetMetricF("ScreenEvaluation","GreatY") -#define GOOD_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Good%sP%dX",o?"Oni":"",p+1)) -#define GOOD_Y THEME->GetMetricF("ScreenEvaluation","GoodY") -#define BOO_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Boo%sP%dX",o?"Oni":"",p+1)) -#define BOO_Y THEME->GetMetricF("ScreenEvaluation","BooY") -#define MISS_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("Miss%sP%dX",o?"Oni":"",p+1)) -#define MISS_Y THEME->GetMetricF("ScreenEvaluation","MissY") -#define OK_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("OK%sP%dX",o?"Oni":"",p+1)) -#define OK_Y THEME->GetMetricF("ScreenEvaluation","OKY") -#define MAX_COMBO_X(o,p) THEME->GetMetricF("ScreenEvaluation",ssprintf("MaxCombo%sP%dX",o?"Oni":"",p+1)) -#define MAX_COMBO_Y THEME->GetMetricF("ScreenEvaluation","MaxComboY") -#define SCORE_LABELS_X THEME->GetMetricF("ScreenEvaluation","ScoreLabelsX") -#define SCORE_NUMBERS_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("ScoreNumbersP%dX",p+1)) -#define SCORE_Y THEME->GetMetricF("ScreenEvaluation","ScoreY") -#define BONUS_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("BonusP%dX",p+1)) -#define BONUS_Y THEME->GetMetricF("ScreenEvaluation","BonusY") -#define BAR_BASE_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("BarP%dBaseX",p+1)) -#define BAR_ROTATION( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("BarP%dRotation",p+1)) -#define BAR_START_Y THEME->GetMetricF("ScreenEvaluation","BarStartY") -#define BAR_SPACING_Y THEME->GetMetricF("ScreenEvaluation","BarSpacingY") -#define BAR_WIDTH THEME->GetMetricF("ScreenEvaluation","BarWidth") -#define BAR_HEIGHT THEME->GetMetricF("ScreenEvaluation","BarHeight") -#define SONGS_SURVIVED_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("SongsSurvivedP%dX",p+1)) -#define SONGS_SURVIVED_Y THEME->GetMetricF("ScreenEvaluation","SongsSurvivedY") -#define NEW_RECORD_X( p ) THEME->GetMetricF("ScreenEvaluation",ssprintf("NewRecordP%dX",p+1)) -#define NEW_RECORD_Y THEME->GetMetricF("ScreenEvaluation","NewRecordY") -#define TRY_EXTRA_STAGE_X THEME->GetMetricF("ScreenEvaluation","TryExtraStageX") -#define TRY_EXTRA_STAGE_Y THEME->GetMetricF("ScreenEvaluation","TryExtraStageY") -#define HELP_TEXT THEME->GetMetric("ScreenEvaluation","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("ScreenEvaluation","TimerSeconds") -#define SPIN_GRADES THEME->GetMetricB("ScreenEvaluation","SpinGrades") -#define GRADES_GLOW_COLOR_1 THEME->GetMetricC("ScreenEvaluation","GradesGlowColor1") -#define GRADES_GLOW_COLOR_2 THEME->GetMetricC("ScreenEvaluation","GradesGlowColor2") -float JUDGE_X( bool oni, int p, int l ) { - switch( l ) { - case 0: return MARVELOUS_X(oni,p); - case 1: return PERFECT_X(oni,p); - case 2: return GREAT_X(oni,p); - case 3: return GOOD_X(oni,p); - case 4: return BOO_X(oni,p); - case 5: return MISS_X(oni,p); - case 6: return OK_X(oni,p); - case 7: return MAX_COMBO_X(oni,p); - default: ASSERT(0); return 0; - } -} -float JUDGE_Y( int l ) { - switch( l ) { - case 0: return MARVELOUS_Y; - case 1: return PERFECT_Y; - case 2: return GREAT_Y; - case 3: return GOOD_Y; - case 4: return BOO_Y; - case 5: return MISS_Y; - case 6: return OK_Y; - case 7: return MAX_COMBO_Y; - default: ASSERT(0); return 0; - } -} +#define SONGSEL_SCREEN GET_THEME_METRIC_FALLBACK("SongSelectScreen") +#define ENDGAME_SCREEN GET_THEME_METRIC_FALLBACK("EndGameScreen") +#define BANNER_ON_COMMAND( i ) GET_THEME_METRIC_FALLBACK(ssprintf("Banner%dOnCommand",i+1)) +#define BANNER_OFF_COMMAND( i ) GET_THEME_METRIC_FALLBACK(ssprintf("Banner%dOffCommand",i+1)) +#define BANNER_WIDTH atof(GET_THEME_METRIC_FALLBACK("BannerWidth")) +#define BANNER_HEIGHT atof(GET_THEME_METRIC_FALLBACK("BannerHeight")) +#define STAGE_ON_COMMAND GET_THEME_METRIC_FALLBACK("StageOnCommand") +#define STAGE_OFF_COMMAND GET_THEME_METRIC_FALLBACK("StageOffCommand") +#define DIFFICULTY_ICON_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DifficultyIconP%dOnCommand",p+1)) +#define DIFFICULTY_ICON_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DifficultyIconP%dOffCommand",p+1)) +#define PLAYER_OPTIONS_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PlayerOptionsP%dOnCommand",p+1)) +#define PLAYER_OPTIONS_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PlayerOptionsP%dOffCommand",p+1)) +#define GRADE_FRAME_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeFrameP%dOnCommand",p+1)) +#define GRADE_FRAME_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeFrameP%dOffCommand",p+1)) +#define GRADE_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeP%dOnCommand",p+1)) +#define GRADE_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("GradeP%dOffCommand",p+1)) +#define PERCENT_WHOLE_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentWholeP%dOnCommand",p+1)) +#define PERCENT_WHOLE_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentWholeP%dOffCommand",p+1)) +#define PERCENT_REMAINDER_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentRemainderP%dOnCommand",p+1)) +#define PERCENT_REMAINDER_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("PercentRemainderP%dOffCommand",p+1)) +#define DANCE_POINTS_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DancePointsP%dOnCommand",p+1)) +#define DANCE_POINTS_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("DancePointsP%dOffCommand",p+1)) +const char* JUDGE_STRING[NUM_JUDGE_LINES] = { "Marvelous", "Perfect", "Great", "Good", "Boo", "Miss", "OK", "MaxCombo" }; +#define JUDGE_LABEL_ON_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOnCommand",JUDGE_STRING[l])) +#define JUDGE_LABEL_OFF_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOffCommand",JUDGE_STRING[l])) +#define JUDGE_NUMBER_ON_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOnCommand",JUDGE_STRING[l],p+1)) +#define JUDGE_NUMBER_OFF_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOffCommand",JUDGE_STRING[l],p+1)) +const char* SCORE_STRING[NUM_SCORE_LINES] = { "Score", "Time" }; +#define SCORE_LABEL_ON_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOnCommand",SCORE_STRING[l])) +#define SCORE_LABEL_OFF_COMMAND( l ) GET_THEME_METRIC_FALLBACK(ssprintf("%sLabelOffCommand",SCORE_STRING[l])) +#define SCORE_NUMBER_ON_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOnCommand",SCORE_STRING[l],p+1)) +#define SCORE_NUMBER_OFF_COMMAND( l, p ) GET_THEME_METRIC_FALLBACK(ssprintf("%sNumberP%dOffCommand",SCORE_STRING[l],p+1)) +#define BONUS_FRAME_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("BonusFrameP%dOnCommand",p+1)) +#define BONUS_FRAME_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("BonusFrameP%dOffCommand",p+1)) +#define BAR_POSSIBLE_ON_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarPossible%dP%dOnCommand",i+1,p+1)) +#define BAR_POSSIBLE_OFF_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarPossible%dP%dOffCommand",i+1,p+1)) +#define BAR_ACTUAL_ON_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarActual%dP%dOnCommand",i+1,p+1)) +#define BAR_ACTUAL_OFF_COMMAND( i, p ) GET_THEME_METRIC_FALLBACK(ssprintf("BarActual%dP%dOffCommand",i+1,p+1)) +#define BAR_ACTUAL_MAX_COMMAND GET_THEME_METRIC_FALLBACK("BarActualMaxCommand") +#define SONGS_SURVIVED_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("SongsSurvivedP%dOnCommand",p+1)) +#define SONGS_SURVIVED_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("SongsSurvivedP%dOffCommand",p+1)) +#define NEW_RECORD_ON_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("NewRecordP%dOnCommand",p+1)) +#define NEW_RECORD_OFF_COMMAND( p ) GET_THEME_METRIC_FALLBACK(ssprintf("NewRecordP%dOffCommand",p+1)) +#define TRY_EXTRA_STAGE_ON_COMMAND GET_THEME_METRIC_FALLBACK(ssprintf("TryExtraStageOnCommand")) +#define TRY_EXTRA_STAGE_OFF_COMMAND GET_THEME_METRIC_FALLBACK(ssprintf("TryExtraStageOffCommand")) +#define SPIN_GRADES 0!=atoi(GET_THEME_METRIC_FALLBACK("SpinGrades")) + const ScreenMessage SM_GoToSelectMusic = ScreenMessage(SM_User+1); const ScreenMessage SM_GoToSelectCourse = ScreenMessage(SM_User+3); @@ -114,118 +85,64 @@ const ScreenMessage SM_GoToGameFinished = ScreenMessage(SM_User+5); const ScreenMessage SM_PlayCheer = ScreenMessage(SM_User+6); -ScreenEvaluation::ScreenEvaluation( bool bSummary ) +ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) { +/* + // + // debugging + // + GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE; + GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS; + GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->m_pCurSong = SONGMAN->GetAllSongs()[0]; + GAMESTATE->m_pCurNotes[PLAYER_1] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); + GAMESTATE->m_pCurNotes[PLAYER_2] = GAMESTATE->m_pCurSong->GetNotes( NOTES_TYPE_DANCE_SINGLE, DIFFICULTY_HARD ); + GAMESTATE->m_PlayerOptions[PLAYER_1].m_bHoldNotes = false; + GAMESTATE->m_PlayerOptions[PLAYER_2].m_bHoldNotes = false; + GAMESTATE->m_PlayerOptions[PLAYER_1].m_fScrollSpeed = 2; + GAMESTATE->m_PlayerOptions[PLAYER_2].m_fScrollSpeed = 2; + GAMESTATE->m_iCurrentStageIndex = 2; +*/ + LOG->Trace( "ScreenEvaluation::ScreenEvaluation()" ); + + m_sClassName = sClassName; + m_Type = type; - // - // Set m_ResultMode. This enum will make our life easier later when we init different pieces. - // - switch( GAMESTATE->m_PlayMode ) - { - case PLAY_MODE_ARCADE: - case PLAY_MODE_BATTLE: - m_ResultMode = bSummary ? RM_ARCADE_SUMMARY : RM_ARCADE_STAGE; - break; - case PLAY_MODE_NONSTOP: - case PLAY_MODE_ONI: - case PLAY_MODE_ENDLESS: - m_ResultMode = RM_COURSE; - break; - default: - ASSERT(0); - } + + int p; // // Figure out which statistics and songs we're going to display // StageStats stageStats; vector vSongsToShow; - switch( m_ResultMode ) + switch( m_Type ) { - case RM_ARCADE_SUMMARY: + case summary: GAMESTATE->GetFinalEvalStatsAndSongs( stageStats, vSongsToShow ); break; - case RM_ARCADE_STAGE: - case RM_COURSE: + case stage: + case course: stageStats = GAMESTATE->m_CurStageStats; break; default: ASSERT(0); } - +/* // - // Init the song banners depending on m_ResultMode + // Debugging // - switch( m_ResultMode ) { - case RM_ARCADE_STAGE: - { - m_BannerWithFrame[0].LoadFromSong( GAMESTATE->m_pCurSong ); - m_BannerWithFrame[0].SetXY( BANNER_X, BANNER_Y ); - this->AddChild( &m_BannerWithFrame[0] ); - - m_sprStage.Load( THEME->GetPathTo("Graphics","ScreenEvaluation stage "+GAMESTATE->GetStageText()) ); - m_sprStage.SetXY( STAGE_X, STAGE_Y ); - this->AddChild( &m_sprStage ); - - for( int p=0; pIsPlayerEnabled(p) ) - continue; // skip - m_DifficultyIcon[p].Load( THEME->GetPathTo("graphics","ScreenEvaluation difficulty icons 1x5") ); - m_DifficultyIcon[p].SetFromNotes( (PlayerNumber)p, GAMESTATE->m_pCurNotes[p] ); - m_DifficultyIcon[p].SetXY( DIFFICULTY_ICON_X(p), DIFFICULTY_ICON_Y(p) ); - this->AddChild( &m_DifficultyIcon[p] ); + stageStats.fRadarPossible[p][r] = 0.5f + r/10.0f; + stageStats.fRadarActual[p][r] = 0.5f + r/10.0f; } - } - break; - case RM_ARCADE_SUMMARY: - { - for( unsigned i=0; iAddChild( &m_BannerWithFrame[i] ); - } - } - break; - case RM_COURSE: - m_BannerWithFrame[0].LoadFromCourse( GAMESTATE->m_pCurCourse ); - m_BannerWithFrame[0].SetXY( BANNER_X, BANNER_Y ); - this->AddChild( &m_BannerWithFrame[0] ); - break; - default: - ASSERT(0); } - - - ////////////////////////// - // Init graphic elements - ////////////////////////// - m_Menu.Load( "ScreenEvaluation" ); -// FIXME: -// The header needs to be different depending on the result mode. -// We should really split these different ResultModes into separate derived classes -// so that each can have its own Transitions, headers, and such. -// THEME->GetPathTo("Graphics",m_ResultMode==RM_ARCADE_SUMMARY?"evaluation summary top edge":"evaluation top edge"), - this->AddChild( &m_Menu ); - - int p; - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) // If EZ2 wants to hide this graphic, place it somewhere off screen using theme metrics - continue; // skip - - m_ScoreDisplay[p].SetXY( SCORE_NUMBERS_X(p), SCORE_Y ); - m_ScoreDisplay[p].Init( (PlayerNumber)p ); - m_ScoreDisplay[p].SetZoomY( 1.0 ); - this->AddChild( &m_ScoreDisplay[p] ); - } - +*/ // // Calculate grades @@ -247,19 +164,20 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) // // update persistent statistics // - bool bNewRecord[NUM_PLAYERS] = { false, false }; + bool bNewRecord[NUM_PLAYERS]; + ZERO( bNewRecord ); - switch( m_ResultMode ) + switch( m_Type ) { - case RM_ARCADE_STAGE: + case stage: { for( int p=0; pIsPlayerEnabled(p) ) GAMESTATE->m_pCurNotes[p]->AddScore( (PlayerNumber)p, grade[p], stageStats.fScore[p], bNewRecord[p] ); } break; - case RM_ARCADE_SUMMARY: + case summary: { NotesType nt = GAMESTATE->GetCurrentStyleDef()->m_NotesType; bool bIsPlayerEnabled[NUM_PLAYERS]; @@ -281,7 +199,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) GAMESTATE->m_RankingNotesType = nt; } break; - case RM_COURSE: + case course: { NotesType nt = GAMESTATE->GetCurrentStyleDef()->m_NotesType; bool bIsPlayerEnabled[NUM_PLAYERS]; @@ -303,179 +221,188 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) m_bTryExtraStage = GAMESTATE->HasEarnedExtraStage() && - m_ResultMode==RM_ARCADE_STAGE; + m_Type==stage; + + + m_Menu.Load( m_sClassName ); + this->AddChild( &m_Menu ); + + + // - // Init ResultMode-specific displays + // init banner area // - for( p=0; pm_pCurSong ); + m_Banner[0].Command( BANNER_ON_COMMAND(0) ); + this->AddChild( &m_Banner[0] ); + + m_sprBannerFrame[0].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); + m_sprBannerFrame[0].Command( BANNER_ON_COMMAND(0) ); + this->AddChild( &m_sprBannerFrame[0] ); + + m_sprStage.Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," stage "+GAMESTATE->GetStageText()) ); + m_sprStage.Command( STAGE_ON_COMMAND ); + this->AddChild( &m_sprStage ); + + for( int p=0; pIsPlayerEnabled(p) ) + continue; // skip + + m_DifficultyIcon[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," difficulty icons 1x5") ); + m_DifficultyIcon[p].SetFromNotes( (PlayerNumber)p, GAMESTATE->m_pCurNotes[p] ); + m_DifficultyIcon[p].Command( DIFFICULTY_ICON_ON_COMMAND(p) ); + this->AddChild( &m_DifficultyIcon[p] ); + + m_textPlayerOptions[p].LoadFromFont( THEME->GetPathTo("Fonts","normal") ); + CString sPO = GAMESTATE->m_PlayerOptions[p].GetString(); + sPO.Replace( ", ", "\n" ); + m_textPlayerOptions[p].Command( PLAYER_OPTIONS_ON_COMMAND(p) ); + m_textPlayerOptions[p].SetText( sPO ); + this->AddChild( &m_textPlayerOptions[p] ); + } + } + break; + case summary: + { + for( unsigned i=0; iAddChild( &m_Banner[i] ); + + m_sprBannerFrame[i].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); + m_sprBannerFrame[i].Command( BANNER_ON_COMMAND(i) ); + this->AddChild( &m_sprBannerFrame[i] ); + } + } + break; + case course: + { + m_Banner[0].SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); + m_Banner[0].LoadFromCourse( GAMESTATE->m_pCurCourse ); + m_Banner[0].Command( BANNER_ON_COMMAND(0) ); + this->AddChild( &m_Banner[0] ); + + m_sprBannerFrame[0].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," banner frame") ); + m_sprBannerFrame[0].Command( BANNER_ON_COMMAND(0) ); + this->AddChild( &m_sprBannerFrame[0] ); + } + break; + default: + ASSERT(0); + } + + + // + // init grade area + // + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) continue; // skip - // If EZ2 shouldn't have a grade frame, then make a theme that has a 1x1 transparent graphic for the grade frame. + m_sprGradeFrame[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," grade frame 1x2") ); + m_sprGradeFrame[p].StopAnimating(); + m_sprGradeFrame[p].SetState( p ); + m_sprGradeFrame[p].Command( GRADE_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprGradeFrame[p] ); - switch( m_ResultMode ) + m_Grades[p].Command( GRADE_ON_COMMAND(p) ); + if( SPIN_GRADES ) + m_Grades[p].SpinAndSettleOn( grade[p] ); + else + m_Grades[p].SetGrade( (PlayerNumber)p, grade[p] ); + this->AddChild( &m_Grades[p] ); + + m_textPercentWhole[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," percent numbers") ); + m_textPercentWhole[p].EnableShadow( false ); + m_textPercentWhole[p].Command( PERCENT_WHOLE_ON_COMMAND(p) ); + this->AddChild( &m_textPercentWhole[p] ); + + m_textPercentRemainder[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," percent numbers") ); + m_textPercentRemainder[p].EnableShadow( false ); + m_textPercentRemainder[p].Command( PERCENT_REMAINDER_ON_COMMAND(p) ); + this->AddChild( &m_textPercentRemainder[p] ); + + stageStats.iPossibleDancePoints[p] = max( 1, stageStats.iPossibleDancePoints[p] ); + float fPercentDancePoints = stageStats.iActualDancePoints[p] / (float)stageStats.iPossibleDancePoints[p] + 0.0001f; // correct for rounding errors + fPercentDancePoints = max( fPercentDancePoints, 0 ); + int iPercentWhole = int(fPercentDancePoints*100); + int iPercentRemainder = int( (fPercentDancePoints*100 - int(fPercentDancePoints*100)) * 10 ); +// m_textPercentWhole[p].SetText( ssprintf("%02d", iPercentWhole) ); +// m_textPercentRemainder[p].SetText( ssprintf(".%01d%%", iPercentRemainder) ); + m_textPercentWhole[p].SetText( "00" ); + m_textPercentRemainder[p].SetText( ".11%" ); + + m_textDancePoints[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," percent numbers") ); + m_textDancePoints[p].EnableShadow( false ); + m_textDancePoints[p].SetText( ssprintf("%d", stageStats.iActualDancePoints[p]) ); + m_textDancePoints[p].Command( DANCE_POINTS_ON_COMMAND(p) ); + this->AddChild( &m_textDancePoints[p] ); + } + + + // + // init bonus area + // + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + + m_sprBonusFrame[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," bonus frame 2x1") ); + m_sprBonusFrame[p].StopAnimating(); + m_sprBonusFrame[p].SetState( p ); + m_sprBonusFrame[p].Command( BONUS_FRAME_ON_COMMAND(p) ); + this->AddChild( &m_sprBonusFrame[p] ); + + for( int r=0; rGetPathTo("Graphics","ScreenEvaluation percent frame") ); - m_sprPercentFrame[p].StopAnimating(); - m_sprPercentFrame[p].SetState( p ); - m_sprPercentFrame[p].SetXY( GRADE_X(p), GRADE_Y ); - this->AddChild( &m_sprPercentFrame[p] ); + m_sprPossibleBar[p][r].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," bars possible 1x2") ); + m_sprPossibleBar[p][r].StopAnimating(); + m_sprPossibleBar[p][r].SetState( p ); + m_sprPossibleBar[p][r].SetWidth( m_sprPossibleBar[p][r].GetUnzoomedWidth() * stageStats.fRadarPossible[p][r] ); + m_sprPossibleBar[p][r].Command( BAR_POSSIBLE_ON_COMMAND(r,p) ); + this->AddChild( &m_sprPossibleBar[p][r] ); - m_textOniPercentLarge[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation percent numbers") ); - m_textOniPercentLarge[p].EnableShadow( false ); - m_textOniPercentLarge[p].SetXY( (PREFSMAN->m_bDancePointsForOni ? DANCE_POINT_X(p) : PERCENT_BASE_X(p) ), PERCENT_BASE_Y ); - m_textOniPercentLarge[p].SetHorizAlign( Actor::align_right ); - m_textOniPercentLarge[p].SetVertAlign( Actor::align_bottom ); - m_textOniPercentLarge[p].SetEffectGlowShift( 2.5f ); - this->AddChild( &m_textOniPercentLarge[p] ); - - if(!PREFSMAN->m_bDancePointsForOni) - { - m_textOniPercentSmall[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation percent numbers") ); - m_textOniPercentSmall[p].EnableShadow( false ); - m_textOniPercentSmall[p].SetZoom( 0.5f ); - m_textOniPercentSmall[p].SetXY( PERCENT_BASE_X(p), PERCENT_BASE_Y ); - m_textOniPercentSmall[p].SetHorizAlign( Actor::align_left ); - m_textOniPercentSmall[p].SetVertAlign( Actor::align_bottom ); - m_textOniPercentSmall[p].SetEffectGlowShift( 2.5f ); - this->AddChild( &m_textOniPercentSmall[p] ); - } - - if(PREFSMAN->m_bDancePointsForOni) - { - m_textOniPercentLarge[p].SetText( ssprintf("%d", stageStats.iActualDancePoints[p]) ); - - const float fDancePointWidth = DANCE_POINT_WIDTH; - const float WidestLineWidth = (float) m_textOniPercentLarge[p].GetWidestLineWidthInSourcePixels(); - if(WidestLineWidth > fDancePointWidth) - m_textOniPercentLarge[p].SetZoomX( fDancePointWidth / WidestLineWidth ); - } - else - { - stageStats.iPossibleDancePoints[p] = max( 1, stageStats.iPossibleDancePoints[p] ); - float fPercentDancePoints = stageStats.iActualDancePoints[p] / (float)stageStats.iPossibleDancePoints[p] + 0.0001f; // correct for rounding errors - fPercentDancePoints = max( fPercentDancePoints, 0 ); - int iPercentDancePointsLarge = int(fPercentDancePoints*100); - int iPercentDancePointsSmall = int( (fPercentDancePoints*100 - int(fPercentDancePoints*100)) * 10 ); - m_textOniPercentLarge[p].SetText( ssprintf("%02d", iPercentDancePointsLarge) ); - m_textOniPercentSmall[p].SetText( ssprintf(".%01d%%", iPercentDancePointsSmall) ); - } - - // StageInfo stuff - m_sprCourseFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation stage frame 2x1") ); - m_sprCourseFrame[p].StopAnimating(); - m_sprCourseFrame[p].SetState( p ); - m_sprCourseFrame[p].SetXY( BONUS_X(p), BONUS_Y ); - this->AddChild( &m_sprCourseFrame[p] ); - - m_textSongsSurvived[p].LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenEvaluation stage numbers") ); - m_textSongsSurvived[p].EnableShadow( false ); - m_textSongsSurvived[p].SetXY( SONGS_SURVIVED_X(p), SONGS_SURVIVED_Y ); - m_textSongsSurvived[p].SetText( ssprintf("%02d", stageStats.iSongsPlayed[p]) ); - this->AddChild( &m_textSongsSurvived[p] ); - } - break; - case RM_ARCADE_STAGE: - case RM_ARCADE_SUMMARY: - { - m_sprGradeFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation grade frame 1x2") ); - m_sprGradeFrame[p].StopAnimating(); - m_sprGradeFrame[p].SetState( p ); - m_sprGradeFrame[p].SetXY( GRADE_X(p), GRADE_Y ); - this->AddChild( &m_sprGradeFrame[p] ); - - // Ez2dancer should control the grade tween using theme metrics - m_Grades[p].SetXY( GRADE_X(p), GRADE_Y ); - m_Grades[p].SetZ( 2 ); - m_Grades[p].SetZoom( 1.0f ); - m_Grades[p].SetEffectGlowShift( 1.0f, GRADES_GLOW_COLOR_1, GRADES_GLOW_COLOR_2 ); - if( SPIN_GRADES ) - m_Grades[p].SpinAndSettleOn( grade[p] ); - else - m_Grades[p].SetGrade( (PlayerNumber)p, grade[p] ); - this->AddChild( &m_Grades[p] ); - - // Bonus info frame - m_sprBonusFrame[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation bonus frame 2x1") ); - m_sprBonusFrame[p].StopAnimating(); - m_sprBonusFrame[p].SetState( p ); - m_sprBonusFrame[p].SetXY( BONUS_X(p), BONUS_Y ); - this->AddChild( &m_sprBonusFrame[p] ); - - for( int r=0; rGetPathTo("Graphics","ScreenEvaluation bars possible 1x2") ); - m_sprPossibleBar[p][r].StopAnimating(); - m_sprPossibleBar[p][r].SetState( p ); - m_sprPossibleBar[p][r].SetHorizAlign( Actor::align_left ); - m_sprPossibleBar[p][r].SetX( BAR_BASE_X(p) ); - m_sprPossibleBar[p][r].SetY( BAR_START_Y + BAR_SPACING_Y*r ); - m_sprPossibleBar[p][r].SetRotationZ( BAR_ROTATION(p) ); - m_sprPossibleBar[p][r].SetZoomX( 0 ); - m_sprPossibleBar[p][r].ZoomToHeight( BAR_HEIGHT ); - m_sprPossibleBar[p][r].BeginTweening( 0.2f + r*0.1f ); // sleep - m_sprPossibleBar[p][r].BeginTweening( 0.5f ); // tween - m_sprPossibleBar[p][r].SetTweenZoomToWidth( BAR_WIDTH*stageStats.fRadarPossible[p][r] ); - this->AddChild( &m_sprPossibleBar[p][r] ); - - m_sprActualBar[p][r].Load( THEME->GetPathTo("Graphics","ScreenEvaluation bars actual 1x2") ); - m_sprActualBar[p][r].StopAnimating(); - m_sprActualBar[p][r].SetState( p ); - m_sprActualBar[p][r].SetHorizAlign( Actor::align_left ); - m_sprActualBar[p][r].SetX( BAR_BASE_X(p) ); - m_sprActualBar[p][r].SetY( BAR_START_Y + BAR_SPACING_Y*r ); - m_sprActualBar[p][r].SetRotationZ( BAR_ROTATION(p) ); - m_sprActualBar[p][r].SetZoomX( 0 ); - m_sprActualBar[p][r].ZoomToHeight( BAR_HEIGHT ); - m_sprActualBar[p][r].BeginTweening( 1.0f + r*0.2f ); // sleep - m_sprActualBar[p][r].BeginTweening( 1.0f ); // tween - m_sprActualBar[p][r].SetTweenZoomToWidth( BAR_WIDTH*stageStats.fRadarActual[p][r] ); - if( stageStats.fRadarActual[p][r] == stageStats.fRadarPossible[p][r] ) - m_sprActualBar[p][r].SetEffectGlowShift(); - this->AddChild( &m_sprActualBar[p][r] ); - } - break; - } + m_sprActualBar[p][r].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," bars actual 1x2") ); + m_sprActualBar[p][r].StopAnimating(); + m_sprActualBar[p][r].SetState( p ); + m_sprActualBar[p][r].SetWidth( m_sprActualBar[p][r].GetUnzoomedWidth() * stageStats.fRadarActual[p][r] ); + m_sprActualBar[p][r].Command( BAR_ACTUAL_ON_COMMAND(r,p) ); + if( stageStats.fRadarActual[p][r] == stageStats.fRadarPossible[p][r] ) + m_sprActualBar[p][r].Command( BAR_ACTUAL_MAX_COMMAND ); + this->AddChild( &m_sprActualBar[p][r] ); } - if( bNewRecord[p] ) - { - m_sprNewRecord[p].Load( THEME->GetPathTo("Graphics","ScreenEvaluation new record") ); - m_sprNewRecord[p].SetXY( NEW_RECORD_X(p), NEW_RECORD_Y ); - m_sprNewRecord[p].SetEffectGlowShift( 2.5f ); - this->AddChild( &m_sprNewRecord[p] ); - } + m_textSongsSurvived[p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," stage numbers") ); + m_textSongsSurvived[p].EnableShadow( false ); + m_textSongsSurvived[p].SetText( ssprintf("%02d", stageStats.iSongsPlayed[p]) ); + m_textSongsSurvived[p].Command( SONGS_SURVIVED_ON_COMMAND(p) ); + this->AddChild( &m_textSongsSurvived[p] ); } // - // Init non-ResultMode specific displays. - // Do this after Result-specific displays so that the text will draw on top of - // the bonus frame. + // init judgement area // int l; for( l=0; lGetPathTo("Graphics","ScreenEvaluation judge labels 1x8") ); + m_sprJudgeLabels[l].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," judge labels 1x8") ); m_sprJudgeLabels[l].StopAnimating(); m_sprJudgeLabels[l].SetState( l ); - m_sprJudgeLabels[l].SetXY( JUDGE_LABELS_X, JUDGE_Y(l) ); - m_sprJudgeLabels[l].SetZoom( 1.0f ); + m_sprJudgeLabels[l].Command( JUDGE_LABEL_ON_COMMAND(l) ); this->AddChild( &m_sprJudgeLabels[l] ); } - m_sprScoreLabel.Load( THEME->GetPathTo("Graphics","ScreenEvaluation score labels") ); - m_sprScoreLabel.SetState( m_ResultMode==RM_COURSE ? 1 : 0 ); - m_sprScoreLabel.StopAnimating(); - m_sprScoreLabel.SetXY( SCORE_LABELS_X, SCORE_Y ); - m_sprScoreLabel.SetZoom( 1.0f ); - this->AddChild( &m_sprScoreLabel ); - - for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) @@ -483,11 +410,10 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) for( l=0; lGetPathTo("Numbers","ScreenEvaluation judge numbers") ); + m_textJudgeNumbers[l][p].LoadFromNumbers( GET_THEME_ELEMENT_FALLBACK("Numbers"," judge numbers") ); m_textJudgeNumbers[l][p].EnableShadow( false ); - m_textJudgeNumbers[l][p].SetXY( JUDGE_X(m_ResultMode==RM_COURSE,p,l), JUDGE_Y(l) ); - m_textJudgeNumbers[l][p].SetZoom( 1.0f ); m_textJudgeNumbers[l][p].SetDiffuse( PlayerToColor(p) ); + m_textJudgeNumbers[l][p].Command( JUDGE_NUMBER_ON_COMMAND(l,p) ); this->AddChild( &m_textJudgeNumbers[l][p] ); } @@ -499,15 +425,44 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) m_textJudgeNumbers[5][p].SetText( ssprintf("%4d", stageStats.iTapNoteScores[p][TNS_MISS]) ); m_textJudgeNumbers[6][p].SetText( ssprintf("%4d", stageStats.iHoldNoteScores[p][HNS_OK]) ); m_textJudgeNumbers[7][p].SetText( ssprintf("%4d", stageStats.iMaxCombo[p]) ); - - - if( m_ResultMode==RM_COURSE ) - m_ScoreDisplay[p].SetText( SecondsToTime(stageStats.fAliveSeconds[p]) ); - else - m_ScoreDisplay[p].SetScore( stageStats.fScore[p] ); } + // + // init score area + // + int s; + for( s=0; sAddChild( &m_sprScoreLabel[s] ); + } + + for( p=0; pIsPlayerEnabled( (PlayerNumber)p ) ) + continue; // skip + + for( int s=0; sAddChild( &m_ScoreDisplay[s][p] ); + } + + m_ScoreDisplay[0][p].SetScore( stageStats.fScore[p] ); + m_ScoreDisplay[1][p].SetText( SecondsToTime(stageStats.fAliveSeconds[p]) ); + + if( bNewRecord[p] ) + { + m_sprNewRecord[p].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," new record") ); + m_sprNewRecord[p].Command( NEW_RECORD_ON_COMMAND(p) ); + this->AddChild( &m_sprNewRecord[p] ); + } + } bool bOneHasNewRecord = false; for( p=0; pGetPathTo("Graphics",GAMESTATE->IsExtraStage()?"ScreenEvaluation extra2":"ScreenEvaluation extra1") ); - m_sprTryExtraStage.SetXY( TRY_EXTRA_STAGE_X, TRY_EXTRA_STAGE_Y ); - m_sprTryExtraStage.SetEffectGlowShift( 2.5f ); + m_sprTryExtraStage.Load( GET_THEME_ELEMENT_FALLBACK("Graphics",GAMESTATE->IsExtraStage()?" try extra2":" try extra1") ); + m_sprTryExtraStage.Command( TRY_EXTRA_STAGE_ON_COMMAND ); this->AddChild( &m_sprTryExtraStage ); if( GAMESTATE->IsExtraStage() ) - SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","ScreenEvaluation extra2") ); + SOUNDMAN->PlayOnce( GET_THEME_ELEMENT_FALLBACK("Sounds"," try extra2") ); else - SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","ScreenEvaluation extra1") ); + SOUNDMAN->PlayOnce( GET_THEME_ELEMENT_FALLBACK("Sounds"," try extra1") ); } else if( bOneHasNewRecord && ANNOUNCER->HasSoundsFor("evaluation new record") ) { @@ -533,13 +487,13 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) else { - switch( m_ResultMode ) + switch( m_Type ) { - case RM_ARCADE_STAGE: + case stage: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) ); break; - case RM_COURSE: - case RM_ARCADE_SUMMARY: + case course: + case summary: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) ); break; default: @@ -556,15 +510,11 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary ) break; } -// if( bSummary ) -// m_Menu.ImmedOnScreenFromMenu(); -// else -// m_Menu.TweenOnScreenFromBlack( SM_None ); - SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","ScreenEvaluation music") ); + SOUNDMAN->PlayMusic( GET_THEME_ELEMENT_FALLBACK("Sounds"," music") ); } - +/* void ScreenEvaluation::TweenOnScreen() { int i, p; @@ -652,8 +602,8 @@ void ScreenEvaluation::TweenOnScreen() apActorsInGradeOrPercentFrame.push_back( &m_sprGradeFrame[p] ); apActorsInGradeOrPercentFrame.push_back( &m_Grades[p] ); apActorsInGradeOrPercentFrame.push_back( &m_sprPercentFrame[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_textOniPercentLarge[p] ); - apActorsInGradeOrPercentFrame.push_back( &m_textOniPercentSmall[p] ); + apActorsInGradeOrPercentFrame.push_back( &m_textPercentWhole[p] ); + apActorsInGradeOrPercentFrame.push_back( &m_textPercentRemainder[p] ); apActorsInGradeOrPercentFrame.push_back( &m_sprNewRecord[p] ); for( i=0; im_pCurSong ); diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index 86a2181b26..31ccc4f327 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -17,24 +17,26 @@ #include "MenuElements.h" #include "Banner.h" #include "ScoreDisplayNormal.h" -#include "BannerWithFrame.h" +#include "Banner.h" #include "DifficultyIcon.h" -const int NUM_JUDGE_LINES = 8; // marvelous, perfect, great, good, boo, miss, ok, max_combo const int MAX_SONGS_TO_SHOW = 5; // In summary, we show last 3 stages, plus extra stages if passed +const int NUM_JUDGE_LINES = 8; // marvelous, perfect, great, good, boo, miss, ok, max_combo +const int NUM_SCORE_LINES = 2; // score, time class ScreenEvaluation : public Screen { public: - ScreenEvaluation( bool bFinalEval = false ); + enum Type { stage, summary, course }; + ScreenEvaluation( CString sClassName, Type type ); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void HandleScreenMessage( const ScreenMessage SM ); - virtual void TweenOnScreen(); +// virtual void TweenOnScreen(); virtual void TweenOffScreen(); virtual void MenuLeft( PlayerNumber pn ); virtual void MenuRight( PlayerNumber pn ); @@ -42,50 +44,69 @@ public: virtual void MenuStart( PlayerNumber pn ); protected: - enum ResultMode { RM_ARCADE_STAGE, RM_ARCADE_SUMMARY, RM_COURSE }; - ResultMode m_ResultMode; + CString m_sClassName; + Type m_Type; MenuElements m_Menu; - BannerWithFrame m_BannerWithFrame[MAX_SONGS_TO_SHOW]; + // + // banner area + // + Banner m_Banner[MAX_SONGS_TO_SHOW]; + Sprite m_sprBannerFrame[MAX_SONGS_TO_SHOW]; Sprite m_sprStage; DifficultyIcon m_DifficultyIcon[NUM_PLAYERS]; + BitmapText m_textPlayerOptions[NUM_PLAYERS]; - // used in arcade + // + // grade area + // Sprite m_sprGradeFrame[NUM_PLAYERS]; GradeDisplay m_Grades[NUM_PLAYERS]; + BitmapText m_textPercentWhole[NUM_PLAYERS]; + BitmapText m_textPercentRemainder[NUM_PLAYERS]; + BitmapText m_textDancePoints[NUM_PLAYERS]; - // used in Oni/Endless - Sprite m_sprPercentFrame[NUM_PLAYERS]; - BitmapText m_textOniPercentLarge[NUM_PLAYERS]; - BitmapText m_textOniPercentSmall[NUM_PLAYERS]; - - // used in arcade + // + // bonus area + // Sprite m_sprBonusFrame[NUM_PLAYERS]; Sprite m_sprPossibleBar[NUM_PLAYERS][NUM_RADAR_CATEGORIES]; Sprite m_sprActualBar[NUM_PLAYERS][NUM_RADAR_CATEGORIES]; - - // used in Oni/Endless - Sprite m_sprCourseFrame[NUM_PLAYERS]; - BitmapText m_textTime[NUM_PLAYERS]; BitmapText m_textSongsSurvived[NUM_PLAYERS]; + // + // judgement area + // Sprite m_sprJudgeLabels[NUM_JUDGE_LINES]; BitmapText m_textJudgeNumbers[NUM_JUDGE_LINES][NUM_PLAYERS]; - Sprite m_sprScoreLabel; - ScoreDisplayNormal m_ScoreDisplay[NUM_PLAYERS]; - + // + // score area + // + Sprite m_sprScoreLabel[NUM_SCORE_LINES]; + ScoreDisplayNormal m_ScoreDisplay[NUM_SCORE_LINES][NUM_PLAYERS]; Sprite m_sprNewRecord[NUM_PLAYERS]; - bool m_bTryExtraStage; Sprite m_sprTryExtraStage; }; -class ScreenFinalEvaluation : public ScreenEvaluation +class ScreenEvaluationStage : public ScreenEvaluation { public: - ScreenFinalEvaluation() : ScreenEvaluation(true) {}; + ScreenEvaluationStage() : ScreenEvaluation("ScreenEvaluationStage",ScreenEvaluation::stage) {}; +}; + +class ScreenEvaluationSummary : public ScreenEvaluation +{ +public: + ScreenEvaluationSummary() : ScreenEvaluation("ScreenEvaluationSummary",ScreenEvaluation::summary) {}; +}; + +class ScreenEvaluationCourse : public ScreenEvaluation +{ +public: + ScreenEvaluationCourse() : ScreenEvaluation("ScreenEvaluationCourse",ScreenEvaluation::course) {}; }; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index d99a3ef249..3f7e38f1f1 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -1487,7 +1487,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) ShowSavePrompt( SM_GoToStateAfterCleared ); break; } - SCREENMAN->SetNewScreen( "ScreenEvaluation" ); + SCREENMAN->SetNewScreen( "ScreenEvaluationStage" ); break; case SM_BeginFailed: @@ -1558,7 +1558,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) GAMESTATE->m_PlayMode == PLAY_MODE_ONI || GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS || GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2()) - SCREENMAN->SetNewScreen( "ScreenEvaluation" ); + SCREENMAN->SetNewScreen( "ScreenEvaluationSummary" ); else if( PREFSMAN->m_bEventMode ) HandleScreenMessage( SM_GoToScreenAfterBack ); else diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 26a760cd62..b93b7414d3 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -30,55 +30,50 @@ #include "GameConstantsAndTypes.h" #include "ThemeManager.h" #include "Notes.h" + +#define BANNER_FRAME_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","BannerFrameOnCommand") +#define BANNER_FRAME_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","BannerFrameOffCommand") +#define BANNER_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","BannerOnCommand") +#define BANNER_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","BannerOffCommand") +#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight") +#define BPM_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","BPMOnCommand") +#define BPM_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","BPMOffCommand") +#define STAGE_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","StageOnCommand") +#define STAGE_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","StageOffCommand") +#define CD_TITLE_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","CDTitleOnCommand") +#define CD_TITLE_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","CDTitleOffCommand") +#define DIFFICULTY_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("DifficultyFrameP%dOnCommand",p+1)) +#define DIFFICULTY_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("DifficultyFrameP%dOffCommand",p+1)) +#define DIFFICULTY_ICON_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("DifficultyIconP%dOnCommand",p+1)) +#define DIFFICULTY_ICON_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("DifficultyIconP%dOffCommand",p+1)) +#define AUTOGEN_ICON_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("AutogenIconP%dOnCommand",p+1)) +#define AUTOGEN_ICON_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("AutogenIconP%dOffCommand",p+1)) +#define RADAR_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","RadarOnCommand") +#define RADAR_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","RadarOffCommand") +#define SORT_ICON_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","SortIconOnCommand") +#define SORT_ICON_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","SortIconOffCommand") +#define SCORE_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("ScoreFrameP%dOnCommand",p+1)) +#define SCORE_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("ScoreFrameP%dOffCommand",p+1)) +#define SCORE_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("ScoreP%dOnCommand",p+1)) +#define SCORE_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("ScoreP%dOffCommand",p+1)) +#define METER_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("MeterFrameP%dOnCommand",p+1)) +#define METER_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("MeterFrameP%dOffCommand",p+1)) +#define METER_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("MeterP%dOnCommand",p+1)) +#define METER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("MeterP%dOffCommand",p+1)) +#define WHEEL_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","WheelOnCommand") +#define WHEEL_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","WheelOffCommand") +#define SONG_OPTIONS_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","SongOptionsOnCommand") +#define SONG_OPTIONS_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","SongOptionsOffCommand") +#define SONG_OPTIONS_EXTRA_COMMAND THEME->GetMetric ("ScreenSelectMusic","SongOptionsExtraCommand") +#define OPTION_ICONS_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("OptionIconsP%dOnCommand",p+1)) +#define OPTION_ICONS_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectMusic",ssprintf("OptionIconsP%dOffCommand",p+1)) +#define BALLOON_ON_COMMAND THEME->GetMetric ("ScreenSelectMusic","BalloonOnCommand") +#define BALLOON_OFF_COMMAND THEME->GetMetric ("ScreenSelectMusic","BalloonOffCommand") +#define OPTIONS_MESSAGE_SHOW_COMMAND THEME->GetMetric ("ScreenSelectMusic","OptionsMessageShowCommand") +#define SAMPLE_MUSIC_DELAY THEME->GetMetricF("ScreenSelectMusic","SampleMusicDelay") -#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","BannerFrameX") -#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY") -#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX") -#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY") -#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth") -#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight") -#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX") -#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY") -#define BPM_ZOOM THEME->GetMetricF("ScreenSelectMusic","BPMZoom") -#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX") -#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY") -#define STAGE_ZOOM THEME->GetMetricF("ScreenSelectMusic","StageZoom") -#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX") -#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY") -#define DIFFICULTY_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dX",p+1)) -#define DIFFICULTY_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dY",p+1)) -#define DIFFICULTY_ICON_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dX",p+1)) -#define DIFFICULTY_ICON_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dY",p+1)) -#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX") -#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY") -#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX") -#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY") -#define SCORE_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dX",p+1)) -#define SCORE_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dY",p+1)) -#define SCORE_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dX",p+1)) -#define SCORE_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dY",p+1)) -#define SCORE_ZOOM THEME->GetMetricF("ScreenSelectMusic","ScoreZoom") -#define METER_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dX",p+1)) -#define METER_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dY",p+1)) -#define METER_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dX",p+1)) -#define METER_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dY",p+1)) -#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX") -#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY") -#define PLAYER_OPTIONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dX",p+1)) -#define PLAYER_OPTIONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dY",p+1)) -#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX") -#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") -#define OPTION_ICONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dX",p+1)) -#define OPTION_ICONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dY",p+1)) -#define BALLOON_X THEME->GetMetricF("ScreenSelectMusic","BalloonX") -#define BALLOON_Y THEME->GetMetricF("ScreenSelectMusic","BalloonY") -#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds") -#define SCORE_CONNECTED_TO_MUSIC_WHEEL THEME->GetMetricB("ScreenSelectMusic","ScoreConnectedToMusicWheel") -#define SAMPLE_MUSIC_DELAY THEME->GetMetricF("ScreenSelectMusic","SampleMusicDelay") - -const float TWEEN_TIME = 0.5f; static const ScreenMessage SM_AllowOptionsMenuRepeat = ScreenMessage(SM_User+1); @@ -105,124 +100,77 @@ ScreenSelectMusic::ScreenSelectMusic() this->AddChild( &m_Menu ); // these guys get loaded SetSong and TweenToSong - m_Banner.SetXY( BANNER_X, BANNER_Y ); m_Banner.SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT ); this->AddChild( &m_Banner ); m_sprBannerFrame.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic banner frame") ); - m_sprBannerFrame.SetXY( BANNER_FRAME_X, BANNER_FRAME_Y ); this->AddChild( &m_sprBannerFrame ); - m_BPMDisplay.SetXY( BPM_X, BPM_Y ); - m_BPMDisplay.SetZoom( BPM_ZOOM ); this->AddChild( &m_BPMDisplay ); m_sprStage.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic stage "+GAMESTATE->GetStageText()) ); - m_sprStage.SetXY( STAGE_X, STAGE_Y ); this->AddChild( &m_sprStage ); m_sprCDTitle.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic fallback cdtitle") ); - m_sprCDTitle.EnableShadow( false ); - m_sprCDTitle.SetXY( CD_TITLE_X, CD_TITLE_Y ); this->AddChild( &m_sprCDTitle ); + this->AddChild( &m_GrooveRadar ); + + m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); + this->AddChild( &m_textSongOptions ); + + this->AddChild( &m_MusicWheel ); + for( p=0; pIsPlayerEnabled(p) ) continue; // skip m_sprDifficultyFrame[p].Load( THEME->GetPathTo("Graphics","ScreenSelectMusic difficulty frame 2x1") ); - m_sprDifficultyFrame[p].SetXY( DIFFICULTY_FRAME_X(p), DIFFICULTY_FRAME_Y(p) ); m_sprDifficultyFrame[p].StopAnimating(); m_sprDifficultyFrame[p].SetState( p ); this->AddChild( &m_sprDifficultyFrame[p] ); m_DifficultyIcon[p].Load( THEME->GetPathTo("graphics","ScreenSelectMusic difficulty icons 1x5") ); - m_DifficultyIcon[p].SetXY( DIFFICULTY_ICON_X(p), DIFFICULTY_ICON_Y(p) ); this->AddChild( &m_DifficultyIcon[p] ); m_AutoGenIcon[p].Load( THEME->GetPathTo("graphics","ScreenSelectMusic autogen") ); - m_AutoGenIcon[p].SetXY( DIFFICULTY_ICON_X(p), DIFFICULTY_ICON_Y(p) ); this->AddChild( &m_AutoGenIcon[p] ); - } - m_GrooveRadar.SetXY( RADAR_X, RADAR_Y ); - this->AddChild( &m_GrooveRadar ); - - - m_textSongOptions.LoadFromFont( THEME->GetPathTo("Fonts","normal") ); - m_textSongOptions.SetXY( SONG_OPTIONS_X, SONG_OPTIONS_Y ); - m_textSongOptions.SetZoom( 0.5f ); - if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) - m_textSongOptions.SetEffectDiffuseShift( 2.5f, RageColor(1,0,0,1), RageColor(1,1,1,1) ); // blink red - m_textSongOptions.SetDiffuse( RageColor(1,1,1,1) ); // white - this->AddChild( &m_textSongOptions ); - - for( p=0; pIsPlayerEnabled(p) ) - continue; - - m_OptionIconRow[p].SetXY( OPTION_ICONS_X(p), OPTION_ICONS_Y(p) ); m_OptionIconRow[p].Refresh( (PlayerNumber)p ); this->AddChild( &m_OptionIconRow[p] ); m_sprMeterFrame[p].Load( THEME->GetPathTo("Graphics","ScreenSelectMusic meter frame") ); - m_sprMeterFrame[p].SetXY( METER_FRAME_X(p), METER_FRAME_Y(p) ); m_sprMeterFrame[p].StopAnimating(); m_sprMeterFrame[p].SetState( p ); this->AddChild( &m_sprMeterFrame[p] ); - m_DifficultyMeter[p].SetXY( METER_X(p), METER_Y(p) ); m_DifficultyMeter[p].SetShadowLength( 2 ); this->AddChild( &m_DifficultyMeter[p] ); - } - - m_MusicWheel.SetXY( WHEEL_X, WHEEL_Y ); - this->AddChild( &m_MusicWheel ); - - for( p=0; pIsPlayerEnabled((PlayerNumber)p) ) - continue; // skip - + m_sprHighScoreFrame[p].Load( THEME->GetPathTo("Graphics","ScreenSelectMusic score frame 1x2") ); m_sprHighScoreFrame[p].StopAnimating(); m_sprHighScoreFrame[p].SetState( p ); - m_sprHighScoreFrame[p].SetXY( SCORE_X(p), SCORE_Y(p) ); this->AddChild( &m_sprHighScoreFrame[p] ); - m_HighScore[p].SetXY( SCORE_X(p), SCORE_Y(p) ); - m_HighScore[p].SetZoom( SCORE_ZOOM ); m_HighScore[p].SetDiffuse( PlayerToColor(p) ); this->AddChild( &m_HighScore[p] ); } - m_MusicSortDisplay.SetXY( SORT_ICON_X, SORT_ICON_Y ); m_MusicSortDisplay.Set( GAMESTATE->m_SongSortOrder ); this->AddChild( &m_MusicSortDisplay ); m_sprMarathonBalloon.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic marathon") ); - m_sprMarathonBalloon.StopAnimating(); - m_sprMarathonBalloon.SetXY( BALLOON_X, BALLOON_Y ); - m_sprMarathonBalloon.SetZoomY( 0 ); - m_sprMarathonBalloon.SetDiffuse( RageColor(1,1,1,1) ); - m_sprMarathonBalloon.SetEffectBob( 2, RageVector3(0,10,0) ); + m_sprMarathonBalloon.SetDiffuse( RageColor(1,1,1,0) ); this->AddChild( &m_sprMarathonBalloon ); m_sprLongBalloon.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic long") ); - m_sprLongBalloon.StopAnimating(); - m_sprLongBalloon.SetXY( BALLOON_X, BALLOON_Y ); - m_sprLongBalloon.SetZoomY( 0 ); - m_sprLongBalloon.SetDiffuse( RageColor(1,1,1,1) ); - m_sprLongBalloon.SetEffectBob( 2, RageVector3(0,10,0) ); + m_sprLongBalloon.SetDiffuse( RageColor(1,1,1,0) ); this->AddChild( &m_sprLongBalloon ); m_sprOptionsMessage.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic options message 1x2") ); m_sprOptionsMessage.StopAnimating(); - m_sprOptionsMessage.SetXY( CENTER_X, CENTER_Y ); - m_sprOptionsMessage.SetZoom( 1 ); - m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) ); + m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) ); // invisible //this->AddChild( &m_sprOptionsMessage ); // we have to draw this manually over the top of transitions @@ -261,9 +209,10 @@ void ScreenSelectMusic::DrawPrimitives() void ScreenSelectMusic::TweenOnScreen() { +/* int p; - m_sprBannerFrame.FadeOn( 0, "bounce left", TWEEN_TIME ); + m_sprBannerFrame.Command( 0, "bounce left", TWEEN_TIME ); m_Banner.FadeOn( 0, "bounce left", TWEEN_TIME ); m_BPMDisplay.FadeOn( 0, "bounce left", TWEEN_TIME ); m_sprStage.FadeOn( 0, "bounce left", TWEEN_TIME ); @@ -302,68 +251,65 @@ void ScreenSelectMusic::TweenOnScreen() } m_MusicWheel.TweenOnScreen(); +*/ + + m_sprBannerFrame.Command( BANNER_FRAME_ON_COMMAND ); + m_Banner.Command( BANNER_ON_COMMAND ); + m_BPMDisplay.Command( BPM_ON_COMMAND ); + m_sprStage.Command( STAGE_ON_COMMAND ); + m_sprCDTitle.Command( CD_TITLE_ON_COMMAND ); + m_GrooveRadar.TweenOnScreen(); + m_GrooveRadar.Command( RADAR_ON_COMMAND ); + m_textSongOptions.Command( SONG_OPTIONS_ON_COMMAND ); + m_MusicSortDisplay.Command( SORT_ICON_ON_COMMAND ); + m_MusicWheel.TweenOnScreen(); + m_MusicWheel.Command( WHEEL_ON_COMMAND ); + + for( int p=0; pIsExtraStage() || GAMESTATE->IsExtraStage2() ) + m_textSongOptions.Command( SONG_OPTIONS_EXTRA_COMMAND ); } void ScreenSelectMusic::TweenOffScreen() { - m_sprBannerFrame.FadeOff( 0, "bounce left", TWEEN_TIME ); - m_Banner.FadeOff( 0, "bounce left", TWEEN_TIME ); - m_BPMDisplay.FadeOff( 0, "bounce left", TWEEN_TIME ); - m_sprStage.FadeOff( 0, "bounce left", TWEEN_TIME ); - m_sprCDTitle.FadeOff( 0, "bounce left", TWEEN_TIME ); - - int p; - for( p=0; p apActorsInScore; - for( p=0; pBeginTweening( TWEEN_TIME, TWEEN_DECELERATE ); - apActorsInScore[i]->SetTweenX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? apActorsInScore[i]->GetX()+400 : apActorsInScore[i]->GetX()-400 ); - } - - m_sprMarathonBalloon.StopTweening(); - m_sprMarathonBalloon.BeginTweening( 0.2f ); - m_sprMarathonBalloon.SetTweenZoomY( 0 ); - m_sprLongBalloon.StopTweening(); - m_sprLongBalloon.BeginTweening( 0.2f ); - m_sprLongBalloon.SetTweenZoomY( 0 ); - + m_GrooveRadar.Command( RADAR_OFF_COMMAND ); + m_textSongOptions.Command( SONG_OPTIONS_OFF_COMMAND ); + m_MusicSortDisplay.Command( SORT_ICON_OFF_COMMAND ); m_MusicWheel.TweenOffScreen(); + m_MusicWheel.Command( WHEEL_OFF_COMMAND ); + + for( int p=0; pStopTweening(); float fOriginalX = apActorsInScore[i]->GetX(); - apActorsInScore[i]->BeginTweening( factor*TWEEN_TIME, TWEEN_DECELERATE ); // tween off screen + apActorsInScore[i]->BeginTweening( factor*0.5, TWEEN_DECELERATE ); // tween off screen apActorsInScore[i]->SetTweenX( fOriginalX+400 ); apActorsInScore[i]->BeginTweening( factor*0.5f ); // sleep @@ -725,15 +671,16 @@ void ScreenSelectMusic::MenuStart( PlayerNumber pn ) float fShowSeconds = m_Menu.m_Out.GetLengthSeconds(); // show "hold START for options" - m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) ); - m_sprOptionsMessage.BeginTweening( 0.15f ); // fade in + m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,1) ); // visible + m_sprOptionsMessage.Command( OPTIONS_MESSAGE_SHOW_COMMAND ); +/* m_sprOptionsMessage.BeginTweening( 0.15f ); // fade in m_sprOptionsMessage.SetTweenZoomY( 1 ); m_sprOptionsMessage.SetTweenDiffuse( RageColor(1,1,1,1) ); m_sprOptionsMessage.BeginTweening( fShowSeconds-0.35f ); // sleep m_sprOptionsMessage.BeginTweening( 0.15f ); // fade out m_sprOptionsMessage.SetTweenDiffuse( RageColor(1,1,1,0) ); m_sprOptionsMessage.SetTweenZoomY( 0 ); - +*/ m_bAllowOptionsMenu = true; /* Don't accept a held START for a little while, so it's not * hit accidentally. Accept an initial START right away, though, @@ -841,12 +788,8 @@ void ScreenSelectMusic::AfterMusicChange() no_banner_change = true; } - m_sprMarathonBalloon.StopTweening(); - m_sprMarathonBalloon.BeginTweening( 0.2f ); - m_sprMarathonBalloon.SetTweenZoomY( 0 ); - m_sprLongBalloon.StopTweening(); - m_sprLongBalloon.BeginTweening( 0.2f ); - m_sprLongBalloon.SetTweenZoomY( 0 ); + m_sprMarathonBalloon.Command( BALLOON_OFF_COMMAND ); + m_sprLongBalloon.Command( BALLOON_OFF_COMMAND ); switch( m_MusicWheel.GetSelectedType() ) { @@ -910,17 +853,11 @@ void ScreenSelectMusic::AfterMusicChange() * like the effect with a lot of delay. */ if( pSong->m_fMusicLengthSeconds > PREFSMAN->m_fMarathonVerSongSeconds ) { - m_sprMarathonBalloon.StopTweening(); - m_sprMarathonBalloon.BeginTweening( 0.1f ); /* delay */ - m_sprMarathonBalloon.BeginTweening( 0.2f ); - m_sprMarathonBalloon.SetTweenZoomY( 1 ); + m_sprMarathonBalloon.Command( BALLOON_ON_COMMAND ); } else if( pSong->m_fMusicLengthSeconds > PREFSMAN->m_fLongVerSongSeconds ) { - m_sprLongBalloon.StopTweening(); - m_sprMarathonBalloon.BeginTweening( 0.1f ); /* delay */ - m_sprLongBalloon.BeginTweening( 0.2f ); - m_sprLongBalloon.SetTweenZoomY( 1 ); + m_sprLongBalloon.Command( BALLOON_ON_COMMAND ); } } break; diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 7d0ef39d1a..26d8c52a9c 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -57,10 +57,10 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /pdb:none # Begin Special Build Tool IntDir=.\../Release6 -TargetDir=\temp\stepmania +TargetDir=\stepmania\stepmania TargetName=StepMania SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -92,10 +92,10 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib # Begin Special Build Tool IntDir=.\../Debug6 -TargetDir=\temp\stepmania +TargetDir=\stepmania\stepmania TargetName=StepMania-debug SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -972,14 +972,6 @@ SOURCE=.\Banner.h # End Source File # Begin Source File -SOURCE=.\BannerWithFrame.cpp -# End Source File -# Begin Source File - -SOURCE=.\BannerWithFrame.h -# End Source File -# Begin Source File - SOURCE=.\BPMDisplay.cpp # End Source File # Begin Source File diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 2690293874..c8dc223557 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -292,6 +292,12 @@ CString ThemeManager::GetMetricsPathFromName( CString sThemeName ) return GetThemeDirFromName( sThemeName ) + "metrics.ini"; } +bool ThemeManager::HasMetric( CString sClassName, CString sValueName ) +{ + CString sThrowAway; + return m_pIniMetrics->GetValue(sClassName,sValueName,sThrowAway); +} + CString ThemeManager::GetMetricRaw( CString sClassName, CString sValueName ) { #if defined(DEBUG) && defined(WIN32) diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index eccb22c7d7..bf6d3feb92 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -30,6 +30,7 @@ public: CString GetPathTo( CString sAssetCategory, CString sFileName ); // looks up the current theme in PREFSMAN CString GetPathToOptional( CString sAssetCategory, CString sFileName ); // looks up the current theme in PREFSMAN + bool HasMetric( CString sClassName, CString sValueName ); CString GetMetricRaw( CString sClassName, CString sValueName ); CString GetMetric( CString sClassName, CString sValueName ); int GetMetricI( CString sClassName, CString sValueName );