add scripting support to ScreenSelectMusic and ScreenEvaluation

This commit is contained in:
Chris Danford
2003-03-24 21:37:13 +00:00
parent b27b2a1fb9
commit a9f187c3de
19 changed files with 954 additions and 814 deletions
@@ -0,0 +1 @@
_shared background fade in
@@ -0,0 +1 @@
_options to options
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1 @@
_shared footer.png
@@ -0,0 +1 @@
ScreenEvaluation extra1.mp3
+333 -144
View File
@@ -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
+84 -53
View File
@@ -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
}
}
}
+2 -2
View File
@@ -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; }
+2 -1
View File
@@ -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;
+3 -2
View File
@@ -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;
+355 -398
View File
@@ -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<Song*> 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; p<NUM_PLAYERS; p++ )
for( int p=0; p<NUM_PLAYERS; p++ ) // foreach line
for( int r=0; r<NUM_RADAR_CATEGORIES; r++ ) // foreach line
{
if( !GAMESTATE->IsPlayerEnabled(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; i<vSongsToShow.size(); i++ )
{
m_BannerWithFrame[i].LoadFromSong( vSongsToShow[i] );
float fBannerOffset = i - (vSongsToShow.size()-1)/2.0f;
m_BannerWithFrame[i].SetXY( BANNER_X + fBannerOffset*32, BANNER_Y + fBannerOffset*16 );
m_BannerWithFrame[i].SetZoom( 0.70f );
this->AddChild( &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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled( (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; p<NUM_PLAYERS; p++ )
if( GAMESTATE->IsPlayerEnabled(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; p<NUM_PLAYERS; p++ )
switch( m_Type )
{
case stage:
{
m_Banner[0].SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT );
m_Banner[0].LoadFromSong( GAMESTATE->m_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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(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; i<vSongsToShow.size(); i++ )
{
m_Banner[i].SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT );
m_Banner[i].LoadFromSong( vSongsToShow[i] );
m_Banner[i].Command( BANNER_ON_COMMAND(i) );
this->AddChild( &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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled( (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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled( (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; r<NUM_RADAR_CATEGORIES; r++ ) // foreach line
{
case RM_COURSE:
{
m_sprPercentFrame[p].Load( THEME->GetPathTo("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; r<NUM_RADAR_CATEGORIES; r++ ) // foreach line
{
m_sprPossibleBar[p][r].Load( THEME->GetPathTo("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; l<NUM_JUDGE_LINES; l++ )
{
// EZ2 should hide these things by placing them off screen with theme metrics
m_sprJudgeLabels[l].Load( THEME->GetPathTo("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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
@@ -483,11 +410,10 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
for( l=0; l<NUM_JUDGE_LINES; l++ )
{
m_textJudgeNumbers[l][p].LoadFromNumbers( THEME->GetPathTo("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; s<NUM_SCORE_LINES; s++ )
{
m_sprScoreLabel[s].Load( GET_THEME_ELEMENT_FALLBACK("Graphics"," score labels 1x2") );
m_sprScoreLabel[s].SetState( s );
m_sprScoreLabel[s].StopAnimating();
m_sprScoreLabel[s].Command( SCORE_LABEL_ON_COMMAND(s) );
this->AddChild( &m_sprScoreLabel[s] );
}
for( p=0; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
continue; // skip
for( int s=0; s<NUM_SCORE_LINES; s++ )
{
m_ScoreDisplay[s][p].Init( (PlayerNumber)p );
m_ScoreDisplay[s][p].Command( SCORE_NUMBER_ON_COMMAND(s,p) );
this->AddChild( &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; p<NUM_PLAYERS; p++ )
@@ -516,15 +471,14 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
if( m_bTryExtraStage )
{
m_sprTryExtraStage.Load( THEME->GetPathTo("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; i<apActorsInGradeOrPercentFrame.size(); i++ )
{
@@ -669,60 +619,67 @@ void ScreenEvaluation::TweenOnScreen()
m_sprTryExtraStage.BeginTweening( MENU_ELEMENTS_TWEEN_TIME );
m_sprTryExtraStage.SetTweenZoomY( fOriginalZoomY );
}
*/
void ScreenEvaluation::TweenOffScreen()
{
int i, p;
int p;
for( i=0; i<MAX_SONGS_TO_SHOW; i++ )
m_BannerWithFrame[i].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprStage.FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
for( p=0; p<NUM_PLAYERS; p++ )
m_DifficultyIcon[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
for( i=0; i<NUM_JUDGE_LINES; i++ )
// banner area
for( unsigned i=0; i<MAX_SONGS_TO_SHOW; i++ )
{
m_sprJudgeLabels[i].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
for( int p=0; p<NUM_PLAYERS; p++ )
m_textJudgeNumbers[i][p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_Banner[i].Command( BANNER_OFF_COMMAND(i) );
m_sprBannerFrame[i].Command( BANNER_OFF_COMMAND(i) );
}
m_sprScoreLabel.FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
for( p=0; p<NUM_PLAYERS; p++ )
m_ScoreDisplay[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprStage.Command( STAGE_OFF_COMMAND );
for( p=0; p<NUM_PLAYERS; p++ )
{
int i;
m_Grades[p].SettleImmediately();
for( i=0; i<NUM_RADAR_CATEGORIES; i++ )
{
m_sprPossibleBar[p][i].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprActualBar[p][i].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
}
m_sprCourseFrame[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_textTime[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_textSongsSurvived[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprBonusFrame[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprGradeFrame[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_Grades[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprPercentFrame[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentLarge[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_textOniPercentSmall[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_sprNewRecord[p].FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
m_DifficultyIcon[p].Command( DIFFICULTY_ICON_OFF_COMMAND(p) );
m_textPlayerOptions[p].Command( PLAYER_OPTIONS_OFF_COMMAND(p) );
}
m_sprTryExtraStage.FadeOff( 0, "foldy", MENU_ELEMENTS_TWEEN_TIME );
// grade area
for( p=0; p<NUM_PLAYERS; p++ )
{
m_sprGradeFrame[p].Command( GRADE_FRAME_OFF_COMMAND(p) );
m_Grades[p].Command( GRADE_OFF_COMMAND(p) );
m_textPercentWhole[p].Command( PERCENT_WHOLE_OFF_COMMAND(p) );
m_textPercentRemainder[p].Command( PERCENT_REMAINDER_OFF_COMMAND(p) );
m_textDancePoints[p].Command( DANCE_POINTS_OFF_COMMAND(p) );
}
// bonus area
for( p=0; p<NUM_PLAYERS; p++ )
{
m_sprBonusFrame[p].Command( BONUS_FRAME_OFF_COMMAND(p) );
for( int r=0; r<NUM_RADAR_CATEGORIES; r++ ) // foreach line
{
m_sprPossibleBar[p][r].Command( BAR_POSSIBLE_OFF_COMMAND(r,p) );
m_sprActualBar[p][r].Command( BAR_ACTUAL_OFF_COMMAND(r,p) );
}
m_textSongsSurvived[p].Command( SONGS_SURVIVED_OFF_COMMAND(p) );
}
// judgement area
int l;
for( l=0; l<NUM_JUDGE_LINES; l++ )
m_sprJudgeLabels[l].Command( JUDGE_LABEL_OFF_COMMAND(l) );
for( p=0; p<NUM_PLAYERS; p++ )
for( l=0; l<NUM_JUDGE_LINES; l++ )
m_textJudgeNumbers[l][p].Command( JUDGE_NUMBER_OFF_COMMAND(l,p) );
// score area
for( int s=0; s<NUM_SCORE_LINES; s++ )
m_sprScoreLabel[s].Command( SCORE_LABEL_OFF_COMMAND(s) );
for( p=0; p<NUM_PLAYERS; p++ )
{
for( int s=0; s<NUM_SCORE_LINES; s++ )
m_ScoreDisplay[s][p].Command( SCORE_NUMBER_OFF_COMMAND(s,p) );
m_sprNewRecord[p].Command( NEW_RECORD_OFF_COMMAND(p) );
}
m_sprTryExtraStage.Command( TRY_EXTRA_STAGE_OFF_COMMAND );
}
@@ -819,9 +776,9 @@ void ScreenEvaluation::MenuStart( PlayerNumber pn )
}
else // not event mode
{
switch( m_ResultMode )
switch( m_Type )
{
case RM_ARCADE_STAGE:
case stage:
if( m_bTryExtraStage )
{
m_Menu.StartTransitioning( SM_GoToSelectMusic );
@@ -839,18 +796,18 @@ void ScreenEvaluation::MenuStart( PlayerNumber pn )
m_Menu.StartTransitioning( SM_GoToSelectMusic );
}
break;
case RM_ARCADE_SUMMARY:
case summary:
m_Menu.StartTransitioning( SM_GoToGameFinished );
break;
case RM_COURSE:
case course:
m_Menu.StartTransitioning( SM_GoToGameFinished );
break;
}
}
switch( m_ResultMode )
switch( m_Type )
{
case RM_ARCADE_STAGE:
case stage:
// Increment the stage counter.
int iNumStagesOfLastSong;
iNumStagesOfLastSong = SongManager::GetNumStagesForSong( GAMESTATE->m_pCurSong );
+45 -24
View File
@@ -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) {};
};
+2 -2
View File
@@ -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
+113 -176
View File
@@ -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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(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; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled((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; p<NUM_PLAYERS; p++ )
{
m_sprDifficultyFrame[p].Command( DIFFICULTY_FRAME_ON_COMMAND(p) );
m_sprMeterFrame[p].Command( METER_FRAME_ON_COMMAND(p) );
m_OptionIconRow[p].Command( OPTION_ICONS_ON_COMMAND(p) );
m_DifficultyIcon[p].Command( DIFFICULTY_ICON_ON_COMMAND(p) );
m_AutoGenIcon[p].Command( AUTOGEN_ICON_ON_COMMAND(p) );
m_DifficultyMeter[p].Command( METER_ON_COMMAND(p) );
m_sprHighScoreFrame[p].Command( SCORE_FRAME_ON_COMMAND(p) );
m_HighScore[p].Command( SCORE_ON_COMMAND(p) );
}
if( GAMESTATE->IsExtraStage() || 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<NUM_PLAYERS; p++ )
{
m_sprDifficultyFrame[p].FadeOff( 0, "fade", TWEEN_TIME );
m_sprMeterFrame[p].FadeOff( 0, "fade", TWEEN_TIME );
}
m_sprBannerFrame.Command( BANNER_FRAME_OFF_COMMAND );
m_Banner.Command( BANNER_OFF_COMMAND );
m_BPMDisplay.Command( BPM_OFF_COMMAND );
m_sprStage.Command( STAGE_OFF_COMMAND );
m_sprCDTitle.Command( CD_TITLE_OFF_COMMAND );
m_GrooveRadar.TweenOffScreen();
m_textSongOptions.FadeOff( 0, "foldy", TWEEN_TIME );
for( p=0; p<NUM_PLAYERS; p++ )
{
m_OptionIconRow[p].FadeOff( 0, "foldy", TWEEN_TIME );
// m_textPlayerOptions[p].FadeOff( 0, "fade", TWEEN_TIME );
m_DifficultyIcon[p].FadeOff( 0, "foldy", TWEEN_TIME );
m_AutoGenIcon[p].FadeOff( 0, "foldy", TWEEN_TIME );
m_DifficultyMeter[p].FadeOff( 0, "foldy", TWEEN_TIME );
}
m_MusicSortDisplay.FadeOff( 0, "fade", TWEEN_TIME );
vector<Actor*> apActorsInScore;
for( p=0; p<NUM_PLAYERS; p++ )
{
apActorsInScore.push_back( &m_sprHighScoreFrame[p] );
apActorsInScore.push_back( &m_HighScore[p] );
}
for( unsigned i=0; i<apActorsInScore.size(); i++ )
{
apActorsInScore[i]->BeginTweening( 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; p<NUM_PLAYERS; p++ )
{
m_sprDifficultyFrame[p].Command( DIFFICULTY_FRAME_OFF_COMMAND(p) );
m_sprMeterFrame[p].Command( METER_FRAME_OFF_COMMAND(p) );
m_OptionIconRow[p].Command( OPTION_ICONS_OFF_COMMAND(p) );
m_DifficultyIcon[p].Command( DIFFICULTY_ICON_OFF_COMMAND(p) );
m_AutoGenIcon[p].Command( AUTOGEN_ICON_OFF_COMMAND(p) );
m_DifficultyMeter[p].Command( METER_OFF_COMMAND(p) );
m_sprHighScoreFrame[p].Command( SCORE_FRAME_OFF_COMMAND(p) );
m_HighScore[p].Command( SCORE_OFF_COMMAND(p) );
}
}
void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
{
if( !SCORE_CONNECTED_TO_MUSIC_WHEEL )
return; // do nothing
/* XXX metric this with MusicWheel::TweenOnScreen */
float factor = 0.25f;
@@ -382,7 +328,7 @@ void ScreenSelectMusic::TweenScoreOnAndOffAfterChangeSort()
apActorsInScore[i]->StopTweening();
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;
+4 -12
View File
@@ -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
+6
View File
@@ -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)
+1
View File
@@ -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 );