cleanup of ScreenSelect
This commit is contained in:
@@ -4,15 +4,12 @@
|
|||||||
// - ScreenSelectMode
|
// - ScreenSelectMode
|
||||||
// - ScreenInstructions
|
// - ScreenInstructions
|
||||||
// - ScreenSelectCourse
|
// - ScreenSelectCourse
|
||||||
// - ScreenSelectDifficulty
|
// - ScreenSelectMaxType2
|
||||||
// - ScreenSelectDifficultyEX
|
// - ScreenSelectMaxType2EX
|
||||||
// - ScreenSelectGroup
|
// - ScreenSelectGroup
|
||||||
// - ScreenSelectMusic
|
// - ScreenSelectMusic
|
||||||
// - ScreenSelectStyle5th
|
// - ScreenSelectMaxType15th
|
||||||
// - ScreenSelectStyle
|
// - ScreenSelectMaxType1
|
||||||
// Possible Selector names:
|
|
||||||
// - ModeSelectorMaxType1 (Max's Select Style)
|
|
||||||
// - ModeSelectorMaxType2 (Max's Select Difficulty)
|
|
||||||
|
|
||||||
[Common]
|
[Common]
|
||||||
ColorP1=0.4,1.0,0.8,1 // sea green
|
ColorP1=0.4,1.0,0.8,1 // sea green
|
||||||
@@ -42,7 +39,7 @@ HelpTextFree=No charge to join in. Press START
|
|||||||
NextScreen=ScreenCaution
|
NextScreen=ScreenCaution
|
||||||
|
|
||||||
[ScreenCaution]
|
[ScreenCaution]
|
||||||
NextScreen=ScreenSelectStyle
|
NextScreen=ScreenSelectMaxType1
|
||||||
|
|
||||||
[ScreenEz2SelectPlayer]
|
[ScreenEz2SelectPlayer]
|
||||||
JoinFrameP1X=120
|
JoinFrameP1X=120
|
||||||
@@ -60,16 +57,34 @@ SilentWait=1
|
|||||||
BounceJoinMessage=1
|
BounceJoinMessage=1
|
||||||
FoldOnJoin=1
|
FoldOnJoin=1
|
||||||
|
|
||||||
[ScreenSelectStyle]
|
[ScreenSelectMaxType1]
|
||||||
Selector=ModeSelectorMaxType1
|
ChoicesType=0 // 0=styles, 1=difficulties, 2=modes, 3=games
|
||||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||||
TimerSeconds=40
|
TimerSeconds=40
|
||||||
NextScreen=ScreenSelectDifficulty
|
NextScreen=ScreenSelectMaxType2
|
||||||
|
JointPremiumOnCommand=x,550;y,400;xoffset,400;bounceend,0.5;xoffset,-400
|
||||||
[ScreenSelectStyle5th]
|
JointPremiumOffCommand=bouncebegin,0.5;xoffset,400
|
||||||
|
Icon1OnCommand=x,60;y,84;xoffset,-800;sleep,0.20;decelerate,0.4;xoffset,800
|
||||||
|
Icon1OffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
Icon2OnCommand=x,140;y,84;xoffset,-800;sleep,0.15;decelerate,0.4;xoffset,800
|
||||||
|
Icon2OffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
Icon3OnCommand=x,220;y,84;xoffset,-800;sleep,0.10;decelerate,0.4;xoffset,800
|
||||||
|
Icon3OffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
Icon4OnCommand=x,300;y,84;xoffset,-800;sleep,0.05;decelerate,0.4;xoffset,800
|
||||||
|
Icon4OffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
Icon5OnCommand=x,380;y,84;xoffset,-800;sleep,0.00;decelerate,0.4;xoffset,800
|
||||||
|
Icon5OffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
DisabledColor=0.2,0.2,0.2,1
|
||||||
|
ExplanationOnCommand=x,480;y,170;xoffset,400;bounceend,0.5;xoffset,-400
|
||||||
|
ExplanationOffCommand=bouncebegin,0.5;xoffset,400
|
||||||
|
InfoOnCommand=x,480;y,280;zoomy,0;bounceend,0.5;zoomy,1
|
||||||
|
InfoOffCommand=bouncebegin,0.5;zoomy,0
|
||||||
|
PreviewOnCommand=x,160;y,260;diffuse,1,1,1,0;glow,1,1,1,0;linear,0.2;glow,1,1,1,1;linear,0.0;diffuse,1,1,1,1;linear,0.2;glow,1,1,1,0
|
||||||
|
PreviewOffCommand=linear,0.5;diffuse,1,1,1,0
|
||||||
|
[ScreenSelectMaxType15th]
|
||||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||||
TimerSeconds=40
|
TimerSeconds=40
|
||||||
NextScreen=ScreenSelectDifficulty
|
NextScreen=ScreenSelectMaxType2
|
||||||
|
|
||||||
[ScreenSelectMode]
|
[ScreenSelectMode]
|
||||||
JoinFrameP1X=120
|
JoinFrameP1X=120
|
||||||
@@ -95,16 +110,72 @@ FoldOnJoin=1
|
|||||||
[ScreenStyleSplash]
|
[ScreenStyleSplash]
|
||||||
NextScreen=ScreenSelectGroup
|
NextScreen=ScreenSelectGroup
|
||||||
|
|
||||||
[ScreenSelectDifficulty]
|
[ScreenSelectMaxType2]
|
||||||
|
ChoicesType=1 // 0=styles, 1=difficulties, 2=modes, 3=games
|
||||||
Choices=Beginner,Easy,Medium,Hard,Nonstop,Oni,Endless
|
Choices=Beginner,Easy,Medium,Hard,Nonstop,Oni,Endless
|
||||||
Selector=ModeSelectorMaxType2
|
|
||||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||||
TimerSeconds=40
|
TimerSeconds=40
|
||||||
NextScreenArcade=ScreenSelectGroup
|
NextScreenArcade=ScreenSelectGroup
|
||||||
NextScreenOni=ScreenInstructions
|
NextScreenOni=ScreenInstructions
|
||||||
NextScreenBattle=ScreenInstructions
|
NextScreenBattle=ScreenInstructions
|
||||||
|
NumChoicesOnPage1=4
|
||||||
|
LockInputSeconds=0.5
|
||||||
|
SleepAfterChoiceSeconds=0.5
|
||||||
|
SleepAfterTweenOffSeconds=1.3
|
||||||
|
MorePage1OnCommand=diffuse,1,1,1,0;x,580;y,90;linear,0.5;diffuse,1,1,1,1
|
||||||
|
MorePage1OffCommand=linear,0.5;diffuse,1,1,1,0
|
||||||
|
MorePage2OnCommand=x,700;y,90
|
||||||
|
MorePage2OffCommand=linear,0.5;diffuse,1,1,1,0
|
||||||
|
ExplanationPage1OnCommand=x,170;y,70;xoffset,-400;bounceend,0.5;xoffset,400;
|
||||||
|
ExplanationPage1OffCommand=bouncebegin,0.5;xoffset,-400
|
||||||
|
ExplanationPage2OnCommand=x,1100;y,70
|
||||||
|
ExplanationPage2OffCommand=bouncebegin,0.5;xoffset,400
|
||||||
|
HeaderPage1Choice1OnCommand=vertalign,bottom;x,90;y,180;xoffset,-800;sleep,0.0;decelerate,0.4;xoffset,800
|
||||||
|
HeaderPage1Choice1OffCommand=sleep,0.3;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage1Choice2OnCommand=vertalign,bottom;x,246;y,220;xoffset,-800;sleep,0.2;decelerate,0.4;xoffset,800
|
||||||
|
HeaderPage1Choice2OffCommand=sleep,0.5;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage1Choice3OnCommand=vertalign,bottom;x,394;y,180;xoffset,-800;sleep,0.4;decelerate,0.4;xoffset,800
|
||||||
|
HeaderPage1Choice3OffCommand=sleep,0.7;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage1Choice4OnCommand=vertalign,bottom;x,542;y,220;xoffset,-800;sleep,0.6;decelerate,0.4;xoffset,800
|
||||||
|
HeaderPage1Choice4OffCommand=sleep,0.9;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage2Choice1OnCommand=vertalign,bottom;x,760;y,200
|
||||||
|
HeaderPage2Choice1OffCommand=sleep,0.3;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage2Choice2OnCommand=vertalign,bottom;x,960;y,200
|
||||||
|
HeaderPage2Choice2OffCommand=sleep,0.5;accelerate,0.4;xoffset,-800
|
||||||
|
HeaderPage2Choice3OnCommand=vertalign,bottom;x,1160;y,200
|
||||||
|
HeaderPage2Choice3OffCommand=sleep,0.7;accelerate,0.4;xoffset,-800
|
||||||
|
PicturePage1Choice1OnCommand=vertalign,top;x,90;y,180;zoomy,0.0;sleep,0.4;bounceend,0.3;zoomy,1
|
||||||
|
PicturePage1Choice1OffCommand=sleep,0.0;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage1Choice2OnCommand=vertalign,top;x,246;y,220;zoomy,0.0;sleep,0.6;bounceend,0.3;zoomy,1
|
||||||
|
PicturePage1Choice2OffCommand=sleep,0.2;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage1Choice3OnCommand=vertalign,top;x,394;y,180;zoomy,0.0;sleep,0.8;bounceend,0.3;zoomy,1
|
||||||
|
PicturePage1Choice3OffCommand=sleep,0.4;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage1Choice4OnCommand=vertalign,top;x,542;y,220;zoomy,0.0;sleep,1.0;bounceend,0.3;zoomy,1
|
||||||
|
PicturePage1Choice4OffCommand=sleep,0.6;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage2Choice1OnCommand=vertalign,top;x,760;y,200;
|
||||||
|
PicturePage2Choice1OffCommand=sleep,0.0;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage2Choice2OnCommand=vertalign,top;x,960;y,200
|
||||||
|
PicturePage2Choice2OffCommand=sleep,0.2;bouncebegin,0.3;zoomy,0
|
||||||
|
PicturePage2Choice3OnCommand=vertalign,top;x,1160;y,200
|
||||||
|
PicturePage2Choice3OffCommand=sleep,0.4;bouncebegin,0.3;zoomy,0
|
||||||
|
CursorOnCommand=diffuse,1,1,1,0;rotationz,6;zoom,4;linear,0.3;diffuse,1,1,1,1;rotationz,0;zoom,1;glowshift
|
||||||
|
CursorChooseCommand=sleep,0.2;linear,0.2;xoffset,10;yoffset,10
|
||||||
|
CursorOffCommand=sleep,0.2;linear,0.3;zoom,0
|
||||||
|
CursorP1OffsetXFromPicture=-40
|
||||||
|
CursorP1OffsetYFromPicture=188
|
||||||
|
CursorP2OffsetXFromPicture=+40
|
||||||
|
CursorP2OffsetYFromPicture=188
|
||||||
|
ShadowOnCommand=diffuse,1,1,1,0;rotationz,6;zoom,4;linear,0.3;diffuse,1,1,1,1;rotationz,0;zoom,1
|
||||||
|
ShadowChooseCommand=sleep,0.2;linear,0.2;diffuse,1,1,1,0
|
||||||
|
ShadowOffCommand=sleep,0.2;linear,0.3;diffuse,1,1,1,0
|
||||||
|
ShadowLengthX=10
|
||||||
|
ShadowLengthY=10
|
||||||
|
OKOnCommand=diffuse,1,1,1,1
|
||||||
|
OKChooseCommand=diffuse,1,1,1,1;zoom,2;linear,0.2;diffuse,1,1,1,1;zoom,1
|
||||||
|
OKOffCommand=sleep,0.2;linear,0.3;zoom,0
|
||||||
|
DisabledColor=0.2,0.2,0.2,1
|
||||||
|
|
||||||
[ScreenSelectDifficultyEX]
|
[ScreenSelectMaxType2EX]
|
||||||
DifficultyP1X=216
|
DifficultyP1X=216
|
||||||
DifficultyP1Y=180
|
DifficultyP1Y=180
|
||||||
DifficultyP2X=440
|
DifficultyP2X=440
|
||||||
@@ -983,77 +1054,3 @@ TextHorizAlignP1=0
|
|||||||
TextHorizAlignP2=0
|
TextHorizAlignP2=0
|
||||||
TextZoom=0
|
TextZoom=0
|
||||||
SpacingY=0
|
SpacingY=0
|
||||||
|
|
||||||
[ModeSelectorMaxType1]
|
|
||||||
JointPremiumBannerX=550
|
|
||||||
JointPremiumBannerY=400
|
|
||||||
IconsStartX=60
|
|
||||||
IconsSpacingX=76
|
|
||||||
IconsStartY=100
|
|
||||||
IconsSpacingY=0
|
|
||||||
IconsDisabledColor=0.2,0.2,0.2,1
|
|
||||||
ExplanationX=480
|
|
||||||
ExplanationY=170
|
|
||||||
InfoX=480
|
|
||||||
InfoY=280
|
|
||||||
PreviewX=160
|
|
||||||
PreviewY=240
|
|
||||||
FadeSeconds=0.5
|
|
||||||
|
|
||||||
[ModeSelectorMaxType2]
|
|
||||||
NumChoicesOnPage1=4
|
|
||||||
LockInputSeconds=0.5
|
|
||||||
SleepAfterChoiceSeconds=0.5
|
|
||||||
SleepAfterTweenOffSeconds=1.3
|
|
||||||
MorePage1OnCommand=diffuse,1,1,1,0;x,580;y,90;linear,0.5;diffuse,1,1,1,1
|
|
||||||
MorePage1OffCommand=linear,0.5;diffuse,1,1,1,0
|
|
||||||
MorePage2OnCommand=x,700;y,90
|
|
||||||
MorePage2OffCommand=linear,0.5;diffuse,1,1,1,0
|
|
||||||
ExplanationPage1OnCommand=x,170;y,70;xoffset,-400;bounceend,0.5;xoffset,400;
|
|
||||||
ExplanationPage1OffCommand=bouncebegin,0.5;xoffset,-400
|
|
||||||
ExplanationPage2OnCommand=x,1100;y,70
|
|
||||||
ExplanationPage2OffCommand=bouncebegin,0.5;xoffset,400
|
|
||||||
HeaderPage1Choice1OnCommand=vertalign,bottom;x,90;y,180;xoffset,-800;sleep,0.0;decelerate,0.4;xoffset,800
|
|
||||||
HeaderPage1Choice1OffCommand=sleep,0.3;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage1Choice2OnCommand=vertalign,bottom;x,246;y,220;xoffset,-800;sleep,0.2;decelerate,0.4;xoffset,800
|
|
||||||
HeaderPage1Choice2OffCommand=sleep,0.5;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage1Choice3OnCommand=vertalign,bottom;x,394;y,180;xoffset,-800;sleep,0.4;decelerate,0.4;xoffset,800
|
|
||||||
HeaderPage1Choice3OffCommand=sleep,0.7;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage1Choice4OnCommand=vertalign,bottom;x,542;y,220;xoffset,-800;sleep,0.6;decelerate,0.4;xoffset,800
|
|
||||||
HeaderPage1Choice4OffCommand=sleep,0.9;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage2Choice1OnCommand=vertalign,bottom;x,760;y,200
|
|
||||||
HeaderPage2Choice1OffCommand=sleep,0.3;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage2Choice2OnCommand=vertalign,bottom;x,960;y,200
|
|
||||||
HeaderPage2Choice2OffCommand=sleep,0.5;accelerate,0.4;xoffset,-800
|
|
||||||
HeaderPage2Choice3OnCommand=vertalign,bottom;x,1160;y,200
|
|
||||||
HeaderPage2Choice3OffCommand=sleep,0.7;accelerate,0.4;xoffset,-800
|
|
||||||
PicturePage1Choice1OnCommand=vertalign,top;x,90;y,180;zoomy,0.0;sleep,0.4;bounceend,0.3;zoomy,1
|
|
||||||
PicturePage1Choice1OffCommand=sleep,0.0;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage1Choice2OnCommand=vertalign,top;x,246;y,220;zoomy,0.0;sleep,0.6;bounceend,0.3;zoomy,1
|
|
||||||
PicturePage1Choice2OffCommand=sleep,0.2;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage1Choice3OnCommand=vertalign,top;x,394;y,180;zoomy,0.0;sleep,0.8;bounceend,0.3;zoomy,1
|
|
||||||
PicturePage1Choice3OffCommand=sleep,0.4;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage1Choice4OnCommand=vertalign,top;x,542;y,220;zoomy,0.0;sleep,1.0;bounceend,0.3;zoomy,1
|
|
||||||
PicturePage1Choice4OffCommand=sleep,0.6;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage2Choice1OnCommand=vertalign,top;x,760;y,200;
|
|
||||||
PicturePage2Choice1OffCommand=sleep,0.0;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage2Choice2OnCommand=vertalign,top;x,960;y,200
|
|
||||||
PicturePage2Choice2OffCommand=sleep,0.2;bouncebegin,0.3;zoomy,0
|
|
||||||
PicturePage2Choice3OnCommand=vertalign,top;x,1160;y,200
|
|
||||||
PicturePage2Choice3OffCommand=sleep,0.4;bouncebegin,0.3;zoomy,0
|
|
||||||
CursorOnCommand=diffuse,1,1,1,0;rotationz,6;zoom,4;linear,0.3;diffuse,1,1,1,1;rotationz,0;zoom,1;glowshift
|
|
||||||
CursorChooseCommand=sleep,0.2;linear,0.2;xoffset,10;yoffset,10
|
|
||||||
CursorOffCommand=sleep,0.2;linear,0.3;zoom,0
|
|
||||||
CursorP1OffsetXFromPicture=-40
|
|
||||||
CursorP1OffsetYFromPicture=188
|
|
||||||
CursorP2OffsetXFromPicture=+40
|
|
||||||
CursorP2OffsetYFromPicture=188
|
|
||||||
ShadowOnCommand=diffuse,1,1,1,0;rotationz,6;zoom,4;linear,0.3;diffuse,1,1,1,1;rotationz,0;zoom,1
|
|
||||||
ShadowChooseCommand=sleep,0.2;linear,0.2;diffuse,1,1,1,0
|
|
||||||
ShadowOffCommand=sleep,0.2;linear,0.3;diffuse,1,1,1,0
|
|
||||||
ShadowLengthX=10
|
|
||||||
ShadowLengthY=10
|
|
||||||
OKOnCommand=diffuse,1,1,1,1
|
|
||||||
OKChooseCommand=diffuse,1,1,1,1;zoom,2;linear,0.2;diffuse,1,1,1,1;zoom,1
|
|
||||||
OKOffCommand=sleep,0.2;linear,0.3;zoom,0
|
|
||||||
DisabledColor=0.2,0.2,0.2,1
|
|
||||||
|
|||||||
@@ -1265,6 +1265,7 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
ModeChoice g_ModeChoices[] =
|
ModeChoice g_ModeChoices[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@@ -1525,7 +1526,7 @@ ModeChoice g_ModeChoices[] =
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
const int NUM_MODE_CHOICES = sizeof(g_ModeChoices) / sizeof(g_ModeChoices[0]);
|
const int NUM_MODE_CHOICES = sizeof(g_ModeChoices) / sizeof(g_ModeChoices[0]);
|
||||||
|
*/
|
||||||
|
|
||||||
GameManager::GameManager()
|
GameManager::GameManager()
|
||||||
{
|
{
|
||||||
@@ -1571,12 +1572,14 @@ Style GameManager::GetEditorStyleForNotesType( NotesType nt )
|
|||||||
return STYLE_INVALID;
|
return STYLE_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void GameManager::GetModesChoicesForGame( Game game, vector<ModeChoice*>& apChoicesAddTo )
|
void GameManager::GetModesChoicesForGame( Game game, vector<ModeChoice*>& apChoicesAddTo )
|
||||||
{
|
{
|
||||||
for( int s=0; s<NUM_MODE_CHOICES; s++ )
|
for( int s=0; s<NUM_MODE_CHOICES; s++ )
|
||||||
if( g_ModeChoices[s].game == game)
|
if( g_ModeChoices[s].game == game)
|
||||||
apChoicesAddTo.push_back( &g_ModeChoices[s] );
|
apChoicesAddTo.push_back( &g_ModeChoices[s] );
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void GameManager::GetNotesTypesForGame( Game game, vector<NotesType>& aNotesTypeAddTo )
|
void GameManager::GetNotesTypesForGame( Game game, vector<NotesType>& aNotesTypeAddTo )
|
||||||
{
|
{
|
||||||
@@ -1645,15 +1648,6 @@ NotesType GameManager::StringToNotesType( CString sNotesType )
|
|||||||
return NOTES_TYPE_DANCE_SINGLE;
|
return NOTES_TYPE_DANCE_SINGLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game GameManager::StringToGameType( CString sGameType )
|
|
||||||
{
|
|
||||||
for( int i=0; i<NUM_GAMES; i++ )
|
|
||||||
if( !sGameType.CompareNoCase(g_GameDefs[i].m_szName) )
|
|
||||||
return Game(i);
|
|
||||||
|
|
||||||
return GAME_INVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
CString GameManager::NotesTypeToString( NotesType nt )
|
CString GameManager::NotesTypeToString( NotesType nt )
|
||||||
{
|
{
|
||||||
if(nt >= NUM_NOTES_TYPES)
|
if(nt >= NUM_NOTES_TYPES)
|
||||||
@@ -1665,3 +1659,28 @@ CString GameManager::NotesTypeToString( NotesType nt )
|
|||||||
|
|
||||||
return NotesTypes[nt].name;
|
return NotesTypes[nt].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Game GameManager::StringToGameType( CString sGameType )
|
||||||
|
{
|
||||||
|
for( int i=0; i<NUM_GAMES; i++ )
|
||||||
|
if( !sGameType.CompareNoCase(g_GameDefs[i].m_szName) )
|
||||||
|
return Game(i);
|
||||||
|
|
||||||
|
return GAME_INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Style GameManager::GameAndStringToStyle( Game game, CString sStyle )
|
||||||
|
{
|
||||||
|
for( unsigned s=0; s<NUM_STYLES; s++ )
|
||||||
|
{
|
||||||
|
Style style = (Style)s;
|
||||||
|
const StyleDef* pStyleDef = GetStyleDefForStyle( style );
|
||||||
|
if( pStyleDef->m_Game != game )
|
||||||
|
continue;
|
||||||
|
if( sStyle.CompareNoCase(pStyleDef->m_szName) == 0 )
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
return STYLE_INVALID;
|
||||||
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#include "StyleDef.h"
|
#include "StyleDef.h"
|
||||||
#include "Style.h"
|
#include "Style.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "ModeChoice.h"
|
|
||||||
class IniFile;
|
class IniFile;
|
||||||
|
|
||||||
|
|
||||||
@@ -29,7 +28,6 @@ public:
|
|||||||
const StyleDef* GetStyleDefForStyle( Style s );
|
const StyleDef* GetStyleDefForStyle( Style s );
|
||||||
|
|
||||||
void GetStylesForGame( Game game, vector<Style>& aStylesAddTo, bool editor=false );
|
void GetStylesForGame( Game game, vector<Style>& aStylesAddTo, bool editor=false );
|
||||||
void GetModesChoicesForGame( Game game, vector<ModeChoice*>& apChoicesAddTo );
|
|
||||||
void GetNotesTypesForGame( Game game, vector<NotesType>& aNotesTypeAddTo );
|
void GetNotesTypesForGame( Game game, vector<NotesType>& aNotesTypeAddTo );
|
||||||
Style GetEditorStyleForNotesType( NotesType nt );
|
Style GetEditorStyleForNotesType( NotesType nt );
|
||||||
|
|
||||||
@@ -39,6 +37,7 @@ public:
|
|||||||
static NotesType StringToNotesType( CString sNotesType );
|
static NotesType StringToNotesType( CString sNotesType );
|
||||||
static CString NotesTypeToString( NotesType nt );
|
static CString NotesTypeToString( NotesType nt );
|
||||||
static Game StringToGameType( CString sGameType );
|
static Game StringToGameType( CString sGameType );
|
||||||
|
Style GameAndStringToStyle( Game game, CString sStyle );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -241,16 +241,21 @@ const StyleDef* GameState::GetCurrentStyleDef()
|
|||||||
return GAMEMAN->GetStyleDefForStyle( m_CurStyle );
|
return GAMEMAN->GetStyleDefForStyle( m_CurStyle );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameState::ApplyModeChoice( const ModeChoice* pModeChoice, PlayerNumber pn )
|
void GameState::ApplyModeChoice( const ModeChoice& mc, PlayerNumber pn )
|
||||||
{
|
{
|
||||||
if( pModeChoice->game != GAME_INVALID )
|
if( mc.game != GAME_INVALID )
|
||||||
m_CurGame = pModeChoice->game;
|
m_CurGame = mc.game;
|
||||||
if( pModeChoice->pm != PLAY_MODE_INVALID )
|
if( mc.pm != PLAY_MODE_INVALID )
|
||||||
m_PlayMode = pModeChoice->pm;
|
m_PlayMode = mc.pm;
|
||||||
if( pModeChoice->style != STYLE_INVALID )
|
if( mc.style != STYLE_INVALID )
|
||||||
m_CurStyle = pModeChoice->style;
|
m_CurStyle = mc.style;
|
||||||
if( pModeChoice->dc != DIFFICULTY_INVALID && pn != PLAYER_INVALID )
|
if( mc.dc != DIFFICULTY_INVALID && pn != PLAYER_INVALID )
|
||||||
m_PreferredDifficulty[pn] = pModeChoice->dc;
|
m_PreferredDifficulty[pn] = mc.dc;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GameState::IsPlayable( const ModeChoice& mc )
|
||||||
|
{
|
||||||
|
return mc.numSidesJoinedToPlay == GAMESTATE->GetNumSidesJoined();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameState::IsPlayerEnabled( PlayerNumber pn )
|
bool GameState::IsPlayerEnabled( PlayerNumber pn )
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ public:
|
|||||||
GameDef* GetCurrentGameDef();
|
GameDef* GetCurrentGameDef();
|
||||||
const StyleDef* GetCurrentStyleDef();
|
const StyleDef* GetCurrentStyleDef();
|
||||||
|
|
||||||
void ApplyModeChoice( const ModeChoice* pModeChoice, PlayerNumber pn );
|
void ApplyModeChoice( const ModeChoice& mc, PlayerNumber pn );
|
||||||
|
bool IsPlayable( const ModeChoice& mc );
|
||||||
|
|
||||||
bool IsPlayerEnabled( PlayerNumber pn );
|
bool IsPlayerEnabled( PlayerNumber pn );
|
||||||
bool IsPlayerEnabled( int p ) { return IsPlayerEnabled( (PlayerNumber)p ); }; // for those too lasy to cast all those p's to a PlayerNumber
|
bool IsPlayerEnabled( int p ) { return IsPlayerEnabled( (PlayerNumber)p ); }; // for those too lasy to cast all those p's to a PlayerNumber
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ void MenuElements::Load( CString sBackgroundPath, CString sTopEdgePath, CString
|
|||||||
LOG->Trace( "MenuElements::MenuElements()" );
|
LOG->Trace( "MenuElements::MenuElements()" );
|
||||||
|
|
||||||
|
|
||||||
m_Background.LoadFromAniDir( sBackgroundPath );
|
if( sBackgroundPath != "" )
|
||||||
|
m_Background.LoadFromAniDir( sBackgroundPath );
|
||||||
|
|
||||||
m_quadBrightness.SetDiffuse( RageColor(0,0,0,0) );
|
m_quadBrightness.SetDiffuse( RageColor(0,0,0,0) );
|
||||||
m_quadBrightness.StretchTo( RectI(SCREEN_LEFT, SCREEN_TOP, SCREEN_RIGHT, SCREEN_BOTTOM) );
|
m_quadBrightness.StretchTo( RectI(SCREEN_LEFT, SCREEN_TOP, SCREEN_RIGHT, SCREEN_BOTTOM) );
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
struct ModeChoice // used in SelectMode
|
struct ModeChoice // used in SelectMode
|
||||||
{
|
{
|
||||||
Game game;
|
Game game;
|
||||||
PlayMode pm;
|
|
||||||
Style style;
|
Style style;
|
||||||
|
PlayMode pm;
|
||||||
Difficulty dc;
|
Difficulty dc;
|
||||||
char name[64];
|
char name[64];
|
||||||
int numSidesJoinedToPlay;
|
int numSidesJoinedToPlay;
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ModeSelector
|
|
||||||
|
|
||||||
Desc: See header.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ModeSelector.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
#include "GameState.h"
|
|
||||||
#include "ModeChoice.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool ModeSelector::IsSelectable( const ModeChoice& choice )
|
|
||||||
{
|
|
||||||
return choice.numSidesJoinedToPlay == GAMESTATE->GetNumSidesJoined();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#include "ModeSelectorMaxType1.h"
|
|
||||||
#include "ModeSelectorMaxType2.h"
|
|
||||||
|
|
||||||
ModeSelector* ModeSelector::Create( CString sClassName )
|
|
||||||
{
|
|
||||||
if( sClassName.CompareNoCase("ModeSelectorMaxType1") == 0 ) return new ModeSelectorMaxType1;
|
|
||||||
if( sClassName.CompareNoCase("ModeSelectorMaxType2") == 0 ) return new ModeSelectorMaxType2;
|
|
||||||
|
|
||||||
RageException::Throw( "Invalid ModeSelector class name '%s'.", sClassName.GetString() );
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#ifndef ModeSelector_H
|
|
||||||
#define ModeSelector_H
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ModeSelector
|
|
||||||
|
|
||||||
Desc: Abstract class for a widget that selects a ModeChoice
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "Screen.h"
|
|
||||||
#include "PlayerNumber.h"
|
|
||||||
struct ModeChoice;
|
|
||||||
|
|
||||||
// send SM_BeginFadingOut when all players have confirmed choice
|
|
||||||
|
|
||||||
|
|
||||||
class ModeSelector : public Screen // instead of ActorFrame so we can use ScreenMessages
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ModeSelector() {};
|
|
||||||
virtual ~ModeSelector() {};
|
|
||||||
|
|
||||||
virtual void Init( const vector<ModeChoice>& choices, CString sClassName, CString sThemeElementPrefix ) = 0;
|
|
||||||
|
|
||||||
virtual void MenuLeft( PlayerNumber pn ) = 0;
|
|
||||||
virtual void MenuRight( PlayerNumber pn ) = 0;
|
|
||||||
virtual void MenuUp( PlayerNumber pn ) = 0;
|
|
||||||
virtual void MenuDown( PlayerNumber pn ) = 0;
|
|
||||||
virtual void MenuStart( PlayerNumber pn ) = 0;
|
|
||||||
virtual void MenuBack( PlayerNumber pn ) = 0;
|
|
||||||
virtual void TweenOffScreen() = 0;
|
|
||||||
virtual void TweenOnScreen() = 0;
|
|
||||||
|
|
||||||
virtual void GetSelectedModeChoice( PlayerNumber pn, ModeChoice* pModeChoiceOut ) = 0;
|
|
||||||
bool IsSelectable( const ModeChoice& choice );
|
|
||||||
virtual void UpdateSelectableChoices() = 0;
|
|
||||||
|
|
||||||
static ModeSelector* Create( CString sClassName );
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,276 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ModeSelectorMaxType1
|
|
||||||
|
|
||||||
Desc: See header.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ModeSelectorMaxType1.h"
|
|
||||||
#include "GameManager.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "ScreenManager.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define JOINT_PREMIUM_BANNER_X THEME->GetMetricF("ModeSelectorMaxType1","JointPremiumBannerX")
|
|
||||||
#define JOINT_PREMIUM_BANNER_Y THEME->GetMetricF("ModeSelectorMaxType1","JointPremiumBannerY")
|
|
||||||
#define ICONS_START_X THEME->GetMetricF("ModeSelectorMaxType1","IconsStartX")
|
|
||||||
#define ICONS_SPACING_X THEME->GetMetricF("ModeSelectorMaxType1","IconsSpacingX")
|
|
||||||
#define ICONS_START_Y THEME->GetMetricF("ModeSelectorMaxType1","IconsStartY")
|
|
||||||
#define ICONS_SPACING_Y THEME->GetMetricF("ModeSelectorMaxType1","IconsSpacingY")
|
|
||||||
#define ICONS_DISABLED_COLOR THEME->GetMetricC("ModeSelectorMaxType1","IconsDisabledColor")
|
|
||||||
#define EXPLANATION_X THEME->GetMetricF("ModeSelectorMaxType1","ExplanationX")
|
|
||||||
#define EXPLANATION_Y THEME->GetMetricF("ModeSelectorMaxType1","ExplanationY")
|
|
||||||
#define INFO_X THEME->GetMetricF("ModeSelectorMaxType1","InfoX")
|
|
||||||
#define INFO_Y THEME->GetMetricF("ModeSelectorMaxType1","InfoY")
|
|
||||||
#define PREVIEW_X THEME->GetMetricF("ModeSelectorMaxType1","PreviewX")
|
|
||||||
#define PREVIEW_Y THEME->GetMetricF("ModeSelectorMaxType1","PreviewY")
|
|
||||||
#define FADE_SECONDS THEME->GetMetricF("ModeSelectorMaxType1","FadeSeconds")
|
|
||||||
|
|
||||||
|
|
||||||
ModeSelectorMaxType1::ModeSelectorMaxType1()
|
|
||||||
{
|
|
||||||
m_iSelection = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::Init( const vector<ModeChoice>& choices, CString sClassName, CString sThemeElementPrefix )
|
|
||||||
{
|
|
||||||
m_aModeChoices = choices;
|
|
||||||
|
|
||||||
unsigned i;
|
|
||||||
for( i=0; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
const ModeChoice& mc = m_aModeChoices[i];
|
|
||||||
CString sGameName = GAMEMAN->GetGameDefForGame(mc.game)->m_szName;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Load icon
|
|
||||||
//
|
|
||||||
float fIconX = ICONS_START_X + i*ICONS_SPACING_X;
|
|
||||||
float fIconY = ICONS_START_Y + i*ICONS_SPACING_Y;
|
|
||||||
CString sIconElementName = ssprintf("%s icon %s %s", sThemeElementPrefix.GetString(), sGameName.GetString(), mc.name );
|
|
||||||
CString sIconPath = THEME->GetPathTo("Graphics",sIconElementName);
|
|
||||||
if( sIconPath.empty() ) // element doesn't exist
|
|
||||||
{
|
|
||||||
m_textIcon[i].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
|
||||||
m_textIcon[i].SetXY( fIconX, fIconY );
|
|
||||||
m_textIcon[i].SetText( mc.name );
|
|
||||||
m_textIcon[i].SetZoom(0.5f);
|
|
||||||
this->AddChild( &m_textIcon[i] );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_sprIcon[i].Load( sIconPath );
|
|
||||||
m_sprIcon[i].SetXY( fIconX, fIconY );
|
|
||||||
this->AddChild( &m_sprIcon[i] );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Load preview
|
|
||||||
//
|
|
||||||
CString sPreviewElementName = ssprintf("%s preview %s %s", sThemeElementPrefix.GetString(), sGameName.GetString(), mc.name );
|
|
||||||
CString sPreviewPath = THEME->GetPathTo("Graphics",sPreviewElementName);
|
|
||||||
if( sPreviewPath != "" )
|
|
||||||
{
|
|
||||||
m_sprPreview[i].Load( sPreviewPath );
|
|
||||||
m_sprPreview[i].SetXY( PREVIEW_X, PREVIEW_Y );
|
|
||||||
m_sprPreview[i].SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
this->AddChild( &m_sprPreview[i] );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Load info
|
|
||||||
//
|
|
||||||
CString sInfoElementName = ssprintf("%s info %s %s", sThemeElementPrefix.GetString(), sGameName.GetString(), mc.name );
|
|
||||||
CString sInfoPath = THEME->GetPathTo("Graphics",sInfoElementName);
|
|
||||||
if( sInfoPath != "" )
|
|
||||||
{
|
|
||||||
m_sprInfo[i].Load( sInfoPath );
|
|
||||||
m_sprInfo[i].SetXY( INFO_X, INFO_Y );
|
|
||||||
m_sprInfo[i].SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
this->AddChild( &m_sprInfo[i] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// fix Z ordering of Preview and Info so that they draw on top
|
|
||||||
for( i=0; i<this->m_aModeChoices.size(); i++ )
|
|
||||||
this->MoveToTail( &m_sprPreview[i] );
|
|
||||||
for( i=0; i<this->m_aModeChoices.size(); i++ )
|
|
||||||
this->MoveToTail( &m_sprInfo[i] );
|
|
||||||
|
|
||||||
|
|
||||||
this->UpdateSelectableChoices();
|
|
||||||
|
|
||||||
m_sprExplanation.Load( THEME->GetPathTo("Graphics","select style explanation") );
|
|
||||||
m_sprExplanation.SetXY( EXPLANATION_X, EXPLANATION_Y );
|
|
||||||
this->AddChild( &m_sprExplanation );
|
|
||||||
|
|
||||||
if( PREFSMAN->m_bJointPremium )
|
|
||||||
{
|
|
||||||
m_sprJointPremium.Load( THEME->GetPathTo("Graphics","select style joint premium banner") );
|
|
||||||
m_sprJointPremium.SetXY( JOINT_PREMIUM_BANNER_X, JOINT_PREMIUM_BANNER_Y );
|
|
||||||
this->AddChild( &m_sprJointPremium );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
m_soundChange.Load( THEME->GetPathTo("Sounds",sThemeElementPrefix + " change") );
|
|
||||||
m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") );
|
|
||||||
|
|
||||||
TweenOnScreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::MenuLeft( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
int iSwitchToIndex = -1; // -1 means none found
|
|
||||||
for( int i=m_iSelection-1; i>=0; i-- )
|
|
||||||
{
|
|
||||||
if( IsSelectable(m_aModeChoices[i]) )
|
|
||||||
{
|
|
||||||
iSwitchToIndex = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( iSwitchToIndex == -1 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
BeforeChange();
|
|
||||||
m_iSelection = iSwitchToIndex;
|
|
||||||
m_soundChange.Play();
|
|
||||||
AfterChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::MenuRight( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
int iSwitchToIndex = -1; // -1 means none found
|
|
||||||
for( unsigned i=m_iSelection+1; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
if( IsSelectable(m_aModeChoices[i]) )
|
|
||||||
{
|
|
||||||
iSwitchToIndex = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( iSwitchToIndex == -1 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
BeforeChange();
|
|
||||||
m_iSelection = iSwitchToIndex;
|
|
||||||
m_soundChange.Play();
|
|
||||||
AfterChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::MenuStart( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_soundSelect.Play();
|
|
||||||
SCREENMAN->SendMessageToTopScreen( SM_BeginFadingOut, 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::MenuBack( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::TweenOffScreen()
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
m_sprIcon[i].FadeOff( 0, "FoldY", FADE_SECONDS );
|
|
||||||
m_textIcon[i].FadeOff( 0, "FoldY", FADE_SECONDS );
|
|
||||||
}
|
|
||||||
m_sprExplanation.FadeOff( 0, "FoldY", FADE_SECONDS );
|
|
||||||
m_sprPreview[m_iSelection].FadeOff( 0, "FoldY", FADE_SECONDS );
|
|
||||||
m_sprInfo[m_iSelection].FadeOff( 0, "FoldY", FADE_SECONDS );
|
|
||||||
m_sprJointPremium.FadeOff( 0, "fade", FADE_SECONDS );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::TweenOnScreen()
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
m_sprIcon[i].FadeOn( (m_aModeChoices.size()-i)*0.05f, "Left Accelerate", FADE_SECONDS );
|
|
||||||
m_textIcon[i].FadeOn( (m_aModeChoices.size()-i)*0.05f, "Left Accelerate", FADE_SECONDS );
|
|
||||||
}
|
|
||||||
m_sprExplanation.FadeOn( 0, "Right Accelerate", FADE_SECONDS );
|
|
||||||
m_sprJointPremium.FadeOn( 0, "fade", FADE_SECONDS );
|
|
||||||
|
|
||||||
// let AfterChange tween Preview and Info
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::GetSelectedModeChoice( PlayerNumber pn, ModeChoice* pModeChoiceOut )
|
|
||||||
{
|
|
||||||
*pModeChoiceOut = m_aModeChoices[m_iSelection]; // doesn't depend on pn
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::UpdateSelectableChoices()
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
/* XXX: If a player joins during the tween-in, this diffuse change
|
|
||||||
* will be undone by the tween. Hmm. */
|
|
||||||
for( i=0; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
/* If the icon is text, use a dimmer diffuse, or we won't be
|
|
||||||
* able to see the glow. */
|
|
||||||
if( IsSelectable(m_aModeChoices[i]) )
|
|
||||||
{
|
|
||||||
m_sprIcon[i].SetDiffuse( RageColor(1,1,1,1) );
|
|
||||||
m_textIcon[i].SetDiffuse( RageColor(0.5f,0.5f,0.5f,1) ); // gray so glow is visible
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_sprIcon[i].SetDiffuse( ICONS_DISABLED_COLOR );
|
|
||||||
m_textIcon[i].SetDiffuse( ICONS_DISABLED_COLOR );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select first enabled choie
|
|
||||||
BeforeChange();
|
|
||||||
|
|
||||||
int iSwitchToStyleIndex = -1; // -1 means none found
|
|
||||||
for( i=0; i<m_aModeChoices.size(); i++ )
|
|
||||||
{
|
|
||||||
if( IsSelectable(m_aModeChoices[i]) )
|
|
||||||
{
|
|
||||||
iSwitchToStyleIndex = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ASSERT( iSwitchToStyleIndex != -1 ); // no styles are enabled. We're stuck! This should never happen
|
|
||||||
|
|
||||||
m_iSelection = iSwitchToStyleIndex;
|
|
||||||
AfterChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::BeforeChange()
|
|
||||||
{
|
|
||||||
// dim/hide old selection
|
|
||||||
m_sprIcon[m_iSelection].SetEffectNone();
|
|
||||||
m_textIcon[m_iSelection].SetEffectNone();
|
|
||||||
m_sprPreview[m_iSelection].StopTweening();
|
|
||||||
m_sprInfo[m_iSelection].StopTweening();
|
|
||||||
m_sprPreview[m_iSelection].SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
m_sprInfo[m_iSelection].SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
m_sprPreview[m_iSelection].SetGlow( RageColor(1,1,1,0) );
|
|
||||||
m_sprInfo[m_iSelection].SetGlow( RageColor(1,1,1,0) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModeSelectorMaxType1::AfterChange()
|
|
||||||
{
|
|
||||||
m_sprIcon[m_iSelection].SetEffectGlowShift();
|
|
||||||
m_textIcon[m_iSelection].SetEffectGlowShift();
|
|
||||||
m_sprPreview[m_iSelection].SetDiffuse( RageColor(1,1,1,1) );
|
|
||||||
m_sprInfo[m_iSelection].SetDiffuse( RageColor(1,1,1,1) );
|
|
||||||
m_sprPreview[m_iSelection].SetZoom( 1 );
|
|
||||||
m_sprInfo[m_iSelection].SetZoom( 1 );
|
|
||||||
m_sprPreview[m_iSelection].FadeOn( 0, "ghost", FADE_SECONDS );
|
|
||||||
m_sprInfo[m_iSelection].FadeOn( 0, "FoldY bounce", FADE_SECONDS );
|
|
||||||
}
|
|
||||||
@@ -71,7 +71,6 @@ PrefsManager::PrefsManager()
|
|||||||
m_bShowSelectGroup = true;
|
m_bShowSelectGroup = true;
|
||||||
m_bShowTranslations = true;
|
m_bShowTranslations = true;
|
||||||
m_bArcadeOptionsNavigation = false;
|
m_bArcadeOptionsNavigation = false;
|
||||||
m_bDDRExtremeDifficultySelect = false;
|
|
||||||
m_bSoloSingle = false; // OFF!!!!
|
m_bSoloSingle = false; // OFF!!!!
|
||||||
m_iUnloadTextureDelaySeconds = 0; // disabled 60*30; // 30 mins
|
m_iUnloadTextureDelaySeconds = 0; // disabled 60*30; // 30 mins
|
||||||
m_bCoinOpMode = false;
|
m_bCoinOpMode = false;
|
||||||
@@ -87,7 +86,6 @@ PrefsManager::PrefsManager()
|
|||||||
m_iPolygonRadar = -1;
|
m_iPolygonRadar = -1;
|
||||||
m_bShowSongOptions = true;
|
m_bShowSongOptions = true;
|
||||||
m_DefaultFailType = SongOptions::FAIL_ARCADE;
|
m_DefaultFailType = SongOptions::FAIL_ARCADE;
|
||||||
m_bDDRExtremeDifficultySelect = false;
|
|
||||||
m_bDancePointsForOni = false; //DDR-Extreme style dance points instead of max2 percent
|
m_bDancePointsForOni = false; //DDR-Extreme style dance points instead of max2 percent
|
||||||
|
|
||||||
/* DDR Extreme-style extra stage support.
|
/* DDR Extreme-style extra stage support.
|
||||||
@@ -179,8 +177,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame )
|
|||||||
ini.GetValueF( "Options", "MarathonVerSeconds", m_fMarathonVerSongSeconds );
|
ini.GetValueF( "Options", "MarathonVerSeconds", m_fMarathonVerSongSeconds );
|
||||||
ini.GetValueB( "Options", "ShowSongOptions", m_bShowSongOptions );
|
ini.GetValueB( "Options", "ShowSongOptions", m_bShowSongOptions );
|
||||||
ini.GetValueI( "Options", "DefaultFailType", (int&)m_DefaultFailType );
|
ini.GetValueI( "Options", "DefaultFailType", (int&)m_DefaultFailType );
|
||||||
ini.GetValueB( "Options", "bAllowSoftwareRenderer", m_bAllowSoftwareRenderer );
|
ini.GetValueB( "Options", "AllowSoftwareRenderer", m_bAllowSoftwareRenderer );
|
||||||
ini.GetValueB( "Options", "DDRExtremeDifficultySelect", m_bDDRExtremeDifficultySelect );
|
|
||||||
ini.GetValueB( "Options", "SoloSingle", m_bSoloSingle );
|
ini.GetValueB( "Options", "SoloSingle", m_bSoloSingle );
|
||||||
ini.GetValueB( "Options", "DancePointsForOni", m_bDancePointsForOni );
|
ini.GetValueB( "Options", "DancePointsForOni", m_bDancePointsForOni );
|
||||||
|
|
||||||
@@ -256,8 +253,7 @@ void PrefsManager::SaveGlobalPrefsToDisk()
|
|||||||
ini.SetValueF( "Options", "MarathonVerSeconds", m_fMarathonVerSongSeconds );
|
ini.SetValueF( "Options", "MarathonVerSeconds", m_fMarathonVerSongSeconds );
|
||||||
ini.SetValueB( "Options", "ShowSongOptions", m_bShowSongOptions );
|
ini.SetValueB( "Options", "ShowSongOptions", m_bShowSongOptions );
|
||||||
ini.SetValueI( "Options", "DefaultFailType", (int&)m_DefaultFailType );
|
ini.SetValueI( "Options", "DefaultFailType", (int&)m_DefaultFailType );
|
||||||
ini.SetValueB( "Options", "bAllowSoftwareRenderer", m_bAllowSoftwareRenderer );
|
ini.SetValueB( "Options", "AllowSoftwareRenderer", m_bAllowSoftwareRenderer );
|
||||||
ini.SetValueB( "Options", "DDRExtremeDifficultySelect", m_bDDRExtremeDifficultySelect );
|
|
||||||
ini.SetValueB( "Options", "SoloSingle", m_bSoloSingle );
|
ini.SetValueB( "Options", "SoloSingle", m_bSoloSingle );
|
||||||
ini.SetValueB( "Options", "DancePointsForOni", m_bDancePointsForOni );
|
ini.SetValueB( "Options", "DancePointsForOni", m_bDancePointsForOni );
|
||||||
|
|
||||||
|
|||||||
@@ -125,3 +125,113 @@ void Screen::ClearMessageQueue( const ScreenMessage SM )
|
|||||||
for( int i=m_QueuedMessages.size()-1; i>=0; i-- )
|
for( int i=m_QueuedMessages.size()-1; i>=0; i-- )
|
||||||
m_QueuedMessages.erase( m_QueuedMessages.begin()+i );
|
m_QueuedMessages.erase( m_QueuedMessages.begin()+i );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Screen classes
|
||||||
|
#include "ScreenAppearanceOptions.h"
|
||||||
|
#include "ScreenCaution.h"
|
||||||
|
#include "ScreenEdit.h"
|
||||||
|
#include "ScreenEditMenu.h"
|
||||||
|
#include "ScreenEvaluation.h"
|
||||||
|
#include "ScreenEz2SelectPlayer.h"
|
||||||
|
#include "ScreenSelectMode.h"
|
||||||
|
#include "ScreenGameOver.h"
|
||||||
|
#include "ScreenGameplay.h"
|
||||||
|
#include "ScreenGraphicOptions.h"
|
||||||
|
#include "ScreenHowToPlay.h"
|
||||||
|
#include "ScreenInputOptions.h"
|
||||||
|
#include "ScreenMachineOptions.h"
|
||||||
|
#include "ScreenMapControllers.h"
|
||||||
|
#include "ScreenMusicScroll.h"
|
||||||
|
#include "ScreenPlayerOptions.h"
|
||||||
|
#include "ScreenSelectCourse.h"
|
||||||
|
#include "ScreenSelectMaxType2.h"
|
||||||
|
#include "ScreenSelectDifficultyEX.h"
|
||||||
|
#include "ScreenSelectGame.h"
|
||||||
|
#include "ScreenSelectGroup.h"
|
||||||
|
#include "ScreenSelectMusic.h"
|
||||||
|
#include "ScreenSelectStyle5th.h"
|
||||||
|
#include "ScreenSelectMaxType1.h"
|
||||||
|
#include "ScreenSongOptions.h"
|
||||||
|
#include "ScreenSoundOptions.h"
|
||||||
|
#include "ScreenStage.h"
|
||||||
|
#include "ScreenTest.h"
|
||||||
|
#include "ScreenTestFonts.h"
|
||||||
|
#include "ScreenTestSound.h"
|
||||||
|
#include "ScreenTitleMenu.h"
|
||||||
|
#include "ScreenEz2SelectMusic.h"
|
||||||
|
#include "ScreenWarning.h"
|
||||||
|
#include "ScreenRanking.h"
|
||||||
|
#include "ScreenMemoryCard.h"
|
||||||
|
#include "ScreenCompany.h"
|
||||||
|
#include "ScreenIntroMovie.h"
|
||||||
|
#include "ScreenAlbums.h"
|
||||||
|
#include "ScreenLogo.h"
|
||||||
|
#include "ScreenUnlock.h"
|
||||||
|
#include "ScreenDemonstration.h"
|
||||||
|
#include "ScreenInstructions.h"
|
||||||
|
#include "ScreenNameEntry.h"
|
||||||
|
#include "ScreenJukebox.h"
|
||||||
|
#include "ScreenJukeboxMenu.h"
|
||||||
|
#include "ScreenOptionsMenu.h"
|
||||||
|
#include "ScreenGameplayOptions.h"
|
||||||
|
#include "ScreenStyleSplash.h"
|
||||||
|
|
||||||
|
Screen* Screen::Create( CString sClassName )
|
||||||
|
{
|
||||||
|
Screen *ret = NULL;
|
||||||
|
|
||||||
|
if( 0==stricmp(sClassName, "ScreenAppearanceOptions") ) ret = new ScreenAppearanceOptions;
|
||||||
|
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, "ScreenEz2SelectPlayer") ) ret = new ScreenEz2SelectPlayer;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectMode") ) ret = new ScreenSelectMode;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenGameOver") ) ret = new ScreenGameOver;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenGameplay") ) ret = new ScreenGameplay;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenGraphicOptions") ) ret = new ScreenGraphicOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenHowToPlay") ) ret = new ScreenHowToPlay;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) ret = new ScreenInputOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenMachineOptions") ) ret = new ScreenMachineOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenMapControllers") ) ret = new ScreenMapControllers;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) ret = new ScreenInputOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenMusicScroll") ) ret = new ScreenMusicScroll;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenPlayerOptions") ) ret = new ScreenPlayerOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectCourse") ) ret = new ScreenSelectCourse;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectMaxType2") ) ret = new ScreenSelectMaxType2;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectDifficultyEX") ) ret = new ScreenSelectDifficultyEX;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectGame") ) ret = new ScreenSelectGame;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectGroup") ) ret = new ScreenSelectGroup;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectMusic") ) ret = new ScreenSelectMusic;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectStyle5th") ) ret = new ScreenSelectStyle5th;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSelectMaxType1") ) ret = new ScreenSelectMaxType1;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSongOptions") ) ret = new ScreenSongOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenStage") ) ret = new ScreenStage;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenTest") ) ret = new ScreenTest;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenTestFonts") ) ret = new ScreenTestFonts;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenTestSound") ) ret = new ScreenTestSound;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenTitleMenu") ) ret = new ScreenTitleMenu;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenEz2SelectMusic") ) ret = new ScreenEz2SelectMusic;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenWarning") ) ret = new ScreenWarning;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenRanking") ) ret = new ScreenRanking;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenMemoryCard") ) ret = new ScreenMemoryCard;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenCompany") ) ret = new ScreenCompany;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenIntroMovie") ) ret = new ScreenIntroMovie;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenAlbums") ) ret = new ScreenAlbums;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenLogo") ) ret = new ScreenLogo;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenUnlock") ) ret = new ScreenUnlock;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenDemonstration") ) ret = (ScreenGameplay*)new ScreenDemonstration;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenInstructions") ) ret = new ScreenInstructions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenNameEntry") ) ret = new ScreenNameEntry;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenJukebox") ) ret = new ScreenJukebox;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenJukeboxMenu") ) ret = new ScreenJukeboxMenu;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenOptionsMenu") ) ret = new ScreenOptionsMenu;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenSoundOptions") ) ret = new ScreenSoundOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenGameplayOptions") ) ret = new ScreenGameplayOptions;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenStyleSplash") ) ret = new ScreenStyleSplash;
|
||||||
|
else
|
||||||
|
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
@@ -41,6 +41,8 @@ public:
|
|||||||
|
|
||||||
bool IsTransparent() { return m_bIsTransparent; }
|
bool IsTransparent() { return m_bIsTransparent; }
|
||||||
|
|
||||||
|
static Screen* Create( CString sClassName );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// structure for holding messages sent to a Screen
|
// structure for holding messages sent to a Screen
|
||||||
struct QueuedScreenMessage {
|
struct QueuedScreenMessage {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "RageDisplay.h"
|
#include "RageDisplay.h"
|
||||||
#include "Screen.h"
|
#include "Screen.h"
|
||||||
|
#include "SongManager.h"
|
||||||
|
|
||||||
|
|
||||||
ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program
|
ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program
|
||||||
@@ -165,117 +166,9 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Screen classes
|
|
||||||
#include "ScreenAppearanceOptions.h"
|
|
||||||
#include "ScreenCaution.h"
|
|
||||||
#include "ScreenEdit.h"
|
|
||||||
#include "ScreenEditMenu.h"
|
|
||||||
#include "ScreenEvaluation.h"
|
|
||||||
#include "ScreenEz2SelectPlayer.h"
|
|
||||||
#include "ScreenSelectMode.h"
|
|
||||||
#include "ScreenGameOver.h"
|
|
||||||
#include "ScreenGameplay.h"
|
|
||||||
#include "ScreenGraphicOptions.h"
|
|
||||||
#include "ScreenHowToPlay.h"
|
|
||||||
#include "ScreenInputOptions.h"
|
|
||||||
#include "ScreenMachineOptions.h"
|
|
||||||
#include "ScreenMapControllers.h"
|
|
||||||
#include "ScreenMusicScroll.h"
|
|
||||||
#include "ScreenPlayerOptions.h"
|
|
||||||
#include "ScreenSelectCourse.h"
|
|
||||||
#include "ScreenSelectDifficulty.h"
|
|
||||||
#include "ScreenSelectDifficultyEX.h"
|
|
||||||
#include "ScreenSelectGame.h"
|
|
||||||
#include "ScreenSelectGroup.h"
|
|
||||||
#include "ScreenSelectMusic.h"
|
|
||||||
#include "ScreenSelectStyle5th.h"
|
|
||||||
#include "ScreenSelectStyle.h"
|
|
||||||
#include "ScreenSongOptions.h"
|
|
||||||
#include "ScreenSoundOptions.h"
|
|
||||||
#include "ScreenStage.h"
|
|
||||||
#include "ScreenTest.h"
|
|
||||||
#include "ScreenTestFonts.h"
|
|
||||||
#include "ScreenTestSound.h"
|
|
||||||
#include "ScreenTitleMenu.h"
|
|
||||||
#include "ScreenEz2SelectMusic.h"
|
|
||||||
#include "ScreenWarning.h"
|
|
||||||
#include "ScreenRanking.h"
|
|
||||||
#include "ScreenMemoryCard.h"
|
|
||||||
#include "ScreenCompany.h"
|
|
||||||
#include "ScreenIntroMovie.h"
|
|
||||||
#include "ScreenAlbums.h"
|
|
||||||
#include "ScreenLogo.h"
|
|
||||||
#include "ScreenUnlock.h"
|
|
||||||
#include "ScreenDemonstration.h"
|
|
||||||
#include "ScreenInstructions.h"
|
|
||||||
#include "ScreenNameEntry.h"
|
|
||||||
#include "ScreenJukebox.h"
|
|
||||||
#include "ScreenJukeboxMenu.h"
|
|
||||||
#include "ScreenOptionsMenu.h"
|
|
||||||
#include "ScreenGameplayOptions.h"
|
|
||||||
#include "ScreenStyleSplash.h"
|
|
||||||
|
|
||||||
#include "ScreenPrompt.h"
|
|
||||||
#include "ScreenTextEntry.h"
|
|
||||||
#include "ScreenMiniMenu.h"
|
|
||||||
|
|
||||||
Screen* ScreenManager::MakeNewScreen( CString sClassName )
|
Screen* ScreenManager::MakeNewScreen( CString sClassName )
|
||||||
{
|
{
|
||||||
#define RETURN_IF_MATCH(className) if(0==stricmp(sClassName,"##className##")) return new className
|
Screen *ret = Screen::Create( sClassName );
|
||||||
Screen *ret = NULL;
|
|
||||||
|
|
||||||
if( 0==stricmp(sClassName, "ScreenAppearanceOptions") ) ret = new ScreenAppearanceOptions;
|
|
||||||
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, "ScreenEz2SelectPlayer") ) ret = new ScreenEz2SelectPlayer;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectMode") ) ret = new ScreenSelectMode;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenGameOver") ) ret = new ScreenGameOver;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenGameplay") ) ret = new ScreenGameplay;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenGraphicOptions") ) ret = new ScreenGraphicOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenHowToPlay") ) ret = new ScreenHowToPlay;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) ret = new ScreenInputOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenMachineOptions") ) ret = new ScreenMachineOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenMapControllers") ) ret = new ScreenMapControllers;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenInputOptions") ) ret = new ScreenInputOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenMusicScroll") ) ret = new ScreenMusicScroll;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenPlayerOptions") ) ret = new ScreenPlayerOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectCourse") ) ret = new ScreenSelectCourse;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectDifficulty") ) ret = new ScreenSelectDifficulty;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectDifficultyEX") ) ret = new ScreenSelectDifficultyEX;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectGame") ) ret = new ScreenSelectGame;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectGroup") ) ret = new ScreenSelectGroup;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectMusic") ) ret = new ScreenSelectMusic;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectStyle5th") ) ret = new ScreenSelectStyle5th;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSelectStyle") ) ret = new ScreenSelectStyle;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSongOptions") ) ret = new ScreenSongOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenStage") ) ret = new ScreenStage;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenTest") ) ret = new ScreenTest;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenTestFonts") ) ret = new ScreenTestFonts;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenTestSound") ) ret = new ScreenTestSound;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenTitleMenu") ) ret = new ScreenTitleMenu;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenEz2SelectMusic") ) ret = new ScreenEz2SelectMusic;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenWarning") ) ret = new ScreenWarning;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenRanking") ) ret = new ScreenRanking;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenMemoryCard") ) ret = new ScreenMemoryCard;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenCompany") ) ret = new ScreenCompany;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenIntroMovie") ) ret = new ScreenIntroMovie;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenAlbums") ) ret = new ScreenAlbums;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenLogo") ) ret = new ScreenLogo;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenUnlock") ) ret = new ScreenUnlock;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenDemonstration") ) ret = (ScreenGameplay*)new ScreenDemonstration;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenInstructions") ) ret = new ScreenInstructions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenNameEntry") ) ret = new ScreenNameEntry;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenJukebox") ) ret = new ScreenJukebox;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenJukeboxMenu") ) ret = new ScreenJukeboxMenu;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenOptionsMenu") ) ret = new ScreenOptionsMenu;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenSoundOptions") ) ret = new ScreenSoundOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenGameplayOptions") ) ret = new ScreenGameplayOptions;
|
|
||||||
else if( 0==stricmp(sClassName, "ScreenStyleSplash") ) ret = new ScreenStyleSplash;
|
|
||||||
else
|
|
||||||
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
|
||||||
|
|
||||||
/* Give a null update to the new screen. This bumps everything into its
|
/* Give a null update to the new screen. This bumps everything into its
|
||||||
* initial tween state, if any, so we don't show stuff at an incorrect
|
* initial tween state, if any, so we don't show stuff at an incorrect
|
||||||
@@ -355,6 +248,10 @@ void ScreenManager::AddNewScreenToTop( CString sClassName )
|
|||||||
m_ScreenStack.push_back( pNewScreen );
|
m_ScreenStack.push_back( pNewScreen );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "ScreenPrompt.h"
|
||||||
|
#include "ScreenTextEntry.h"
|
||||||
|
#include "ScreenMiniMenu.h"
|
||||||
|
|
||||||
void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() )
|
void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() )
|
||||||
{
|
{
|
||||||
// add the new state onto the back of the array
|
// add the new state onto the back of the array
|
||||||
@@ -420,7 +317,7 @@ void ScreenManager::RefreshCreditsMessages()
|
|||||||
case PrefsManager::COIN_HOME:
|
case PrefsManager::COIN_HOME:
|
||||||
if( GAMESTATE->m_bSideIsJoined[p] )
|
if( GAMESTATE->m_bSideIsJoined[p] )
|
||||||
m_textCreditInfo[p].SetText( "" );
|
m_textCreditInfo[p].SetText( "" );
|
||||||
else if( GAMESTATE->m_bPlayersCanJoin )
|
else if( GAMESTATE->m_bPlayersCanJoin ) // would (GAMESTATE->m_CurStyle!=STYLE_INVALID) do the same thing?
|
||||||
m_textCreditInfo[p].SetText( "PRESS START" );
|
m_textCreditInfo[p].SetText( "PRESS START" );
|
||||||
else
|
else
|
||||||
m_textCreditInfo[p].SetText( "NOT PRESENT" );
|
m_textCreditInfo[p].SetText( "NOT PRESENT" );
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ void ScreenOptions::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
m_SoundStart.Play();
|
m_SoundStart.Play();
|
||||||
m_Wipe.CloseWipingRight( SM_GoToNextScreen );
|
m_Wipe.CloseWipingRight( SM_GoToNextScreen );
|
||||||
|
|
||||||
m_framePage.BeginTweening( 0.3f, Actor::TWEEN_DECELERATE );
|
m_framePage.BeginTweening( 0.3f, Actor::TWEEN_ACCELERATE );
|
||||||
m_framePage.SetTweenX( SCREEN_RIGHT );
|
m_framePage.SetTweenX( SCREEN_RIGHT );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,365 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: ScreenSelect
|
||||||
|
|
||||||
|
Desc: See Header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "ScreenSelect.h"
|
||||||
|
#include "ScreenManager.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "RageSoundManager.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "GameManager.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "AnnouncerManager.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "ModeChoice.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define CHOICES_TYPE THEME->GetMetricI(m_sClassName,"ChoicesType")
|
||||||
|
#define CHOICES THEME->GetMetric (m_sClassName,"Choices")
|
||||||
|
#define HELP_TEXT THEME->GetMetric (m_sClassName,"HelpText")
|
||||||
|
#define TIMER_SECONDS THEME->GetMetricI(m_sClassName,"TimerSeconds")
|
||||||
|
#define NEXT_SCREEN THEME->GetMetric (m_sClassName,"NextScreen")
|
||||||
|
#define NEXT_SCREEN_ARCADE THEME->GetMetric (m_sClassName,"NextScreenArcade")
|
||||||
|
#define NEXT_SCREEN_ONI THEME->GetMetric (m_sClassName,"NextScreenOni")
|
||||||
|
#define NEXT_SCREEN_BATTLE THEME->GetMetric (m_sClassName,"NextScreenBattle")
|
||||||
|
|
||||||
|
|
||||||
|
ScreenSelect::ScreenSelect( CString sClassName )
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenSelect::ScreenSelect()" );
|
||||||
|
|
||||||
|
m_sClassName = sClassName;
|
||||||
|
|
||||||
|
|
||||||
|
m_type = (ChoicesType)CHOICES_TYPE;
|
||||||
|
m_sClassName = sClassName;
|
||||||
|
|
||||||
|
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = (m_type==CHOICES_STYLE)||(m_type==CHOICES_MODE);
|
||||||
|
|
||||||
|
|
||||||
|
switch( m_type )
|
||||||
|
{
|
||||||
|
case CHOICES_STYLE:
|
||||||
|
{
|
||||||
|
vector<Style> aStyles;
|
||||||
|
GAMEMAN->GetStylesForGame( GAMESTATE->m_CurGame, aStyles );
|
||||||
|
ASSERT( !aStyles.empty() ); // every game should have at least one Style, or else why have the Game? :-)
|
||||||
|
|
||||||
|
for( unsigned s=0; s<aStyles.size(); s++ )
|
||||||
|
{
|
||||||
|
Style style = aStyles[s];
|
||||||
|
const StyleDef* pStyleDef = GAMEMAN->GetStyleDefForStyle(aStyles[s]);
|
||||||
|
|
||||||
|
int iNumSidesJoinedToPlay;
|
||||||
|
switch( pStyleDef->m_StyleType )
|
||||||
|
{
|
||||||
|
case StyleDef::ONE_PLAYER_ONE_CREDIT: iNumSidesJoinedToPlay = 1; break;
|
||||||
|
case StyleDef::TWO_PLAYERS_TWO_CREDITS: iNumSidesJoinedToPlay = 2; break;
|
||||||
|
case StyleDef::ONE_PLAYER_TWO_CREDITS: iNumSidesJoinedToPlay = 2; break;
|
||||||
|
default: ASSERT(0); iNumSidesJoinedToPlay = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ModeChoice mc = {
|
||||||
|
GAMESTATE->m_CurGame,
|
||||||
|
style,
|
||||||
|
PLAY_MODE_INVALID,
|
||||||
|
DIFFICULTY_INVALID,
|
||||||
|
"",
|
||||||
|
iNumSidesJoinedToPlay
|
||||||
|
};
|
||||||
|
strcpy( mc.name, pStyleDef->m_szName );
|
||||||
|
m_aModeChoices.push_back( mc );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CHOICES_MODE:
|
||||||
|
{
|
||||||
|
CStringArray asChoices;
|
||||||
|
split( CHOICES, ",", asChoices );
|
||||||
|
|
||||||
|
for( unsigned c=0; c<asChoices.size(); c++ )
|
||||||
|
{
|
||||||
|
ModeChoice mc = { // fill this in below
|
||||||
|
GAMESTATE->m_CurGame,
|
||||||
|
STYLE_INVALID,
|
||||||
|
PLAY_MODE_INVALID,
|
||||||
|
DIFFICULTY_INVALID,
|
||||||
|
"",
|
||||||
|
1 };
|
||||||
|
|
||||||
|
CStringArray asBits;
|
||||||
|
split( asChoices[c], "-", asBits );
|
||||||
|
|
||||||
|
if( asBits.size() != 3 )
|
||||||
|
RageException::Throw(
|
||||||
|
"The mode choice '%s' is invalid. Mode choices must be in the format "
|
||||||
|
"'style-playmode-difficulty'", asChoices[c].GetString() );
|
||||||
|
|
||||||
|
mc.game = GAMESTATE->m_CurGame;
|
||||||
|
|
||||||
|
mc.style = GAMEMAN->GameAndStringToStyle( mc.game, asBits[0] );
|
||||||
|
if( mc.style == STYLE_INVALID )
|
||||||
|
RageException::Throw(
|
||||||
|
"The specified style '%s' in the mode choice '%s' is invalid.", asBits[0].GetString(), asChoices[c].GetString() );
|
||||||
|
|
||||||
|
mc.pm = StringToPlayMode( asBits[1] );
|
||||||
|
if( mc.pm == PLAY_MODE_INVALID )
|
||||||
|
RageException::Throw(
|
||||||
|
"The specified play mode '%s' in the mode choice '%s' is invalid.", asBits[1].GetString(), asChoices[c].GetString() );
|
||||||
|
|
||||||
|
mc.dc = StringToDifficulty( asBits[2] );
|
||||||
|
if( mc.dc == DIFFICULTY_INVALID )
|
||||||
|
RageException::Throw(
|
||||||
|
"The specified difficulty '%s' in the mode choice '%s' is invalid.", asBits[2].GetString(), asChoices[c].GetString() );
|
||||||
|
|
||||||
|
strcpy( mc.name, asChoices[c] );
|
||||||
|
|
||||||
|
const StyleDef* pStyleDef = GAMEMAN->GetStyleDefForStyle(mc.style);
|
||||||
|
switch( pStyleDef->m_StyleType )
|
||||||
|
{
|
||||||
|
case StyleDef::ONE_PLAYER_ONE_CREDIT:
|
||||||
|
mc.numSidesJoinedToPlay = 1;
|
||||||
|
break;
|
||||||
|
case StyleDef::TWO_PLAYERS_TWO_CREDITS:
|
||||||
|
case StyleDef::ONE_PLAYER_TWO_CREDITS:
|
||||||
|
mc.numSidesJoinedToPlay = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_aModeChoices.push_back( mc );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CHOICES_DIFFICULTY:
|
||||||
|
{
|
||||||
|
if( GAMESTATE->m_CurStyle == STYLE_INVALID )
|
||||||
|
RageException::Throw( "The current Style has not been set. A theme must set the style before it can display a difficulty selection screen." );
|
||||||
|
|
||||||
|
CStringArray asBits;
|
||||||
|
split( CHOICES, ",", asBits );
|
||||||
|
|
||||||
|
unsigned choice;
|
||||||
|
|
||||||
|
for( choice=0; choice<asBits.size(); choice++ )
|
||||||
|
{
|
||||||
|
Difficulty dc = StringToDifficulty(asBits[choice]);
|
||||||
|
PlayMode pm = StringToPlayMode(asBits[choice]);
|
||||||
|
|
||||||
|
if( dc!=DIFFICULTY_INVALID ) // valid difficulty
|
||||||
|
{
|
||||||
|
ModeChoice mc = {
|
||||||
|
GAMESTATE->m_CurGame,
|
||||||
|
GAMESTATE->m_CurStyle,
|
||||||
|
PLAY_MODE_ARCADE,
|
||||||
|
dc,
|
||||||
|
"",
|
||||||
|
GAMESTATE->GetNumSidesJoined() };
|
||||||
|
strcpy( mc.name, DifficultyToString(dc) );
|
||||||
|
m_aModeChoices.push_back( mc );
|
||||||
|
}
|
||||||
|
else if( pm!=PLAY_MODE_INVALID ) // valid play mode
|
||||||
|
{
|
||||||
|
ModeChoice mc = {
|
||||||
|
GAMESTATE->m_CurGame,
|
||||||
|
GAMESTATE->m_CurStyle,
|
||||||
|
pm,
|
||||||
|
DIFFICULTY_MEDIUM,
|
||||||
|
"",
|
||||||
|
GAMESTATE->GetNumSidesJoined() };
|
||||||
|
strcpy( mc.name, PlayModeToString(pm) );
|
||||||
|
m_aModeChoices.push_back( mc );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RageException::Throw( "Invalid Choice%d value '%s'.", choice+1, asBits[choice].GetString() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CHOICES_GAME:
|
||||||
|
ASSERT(0); // TODO
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for( unsigned c=0; c<m_aModeChoices.size(); c++ )
|
||||||
|
{
|
||||||
|
CString sBGAnimationDir = THEME->GetPathToOptional("BGAnimations",ssprintf("%s %s",m_sClassName.GetString(),m_aModeChoices[c].name));
|
||||||
|
if( sBGAnimationDir == "" )
|
||||||
|
sBGAnimationDir = THEME->GetPathTo("BGAnimations",m_sClassName.GetString());
|
||||||
|
m_BGAnimations[c].LoadFromAniDir( sBGAnimationDir );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_Menu.Load(
|
||||||
|
"", // don't load any BGAnimation. We have our own.
|
||||||
|
THEME->GetPathTo("Graphics",m_sClassName+" top edge"),
|
||||||
|
HELP_TEXT, false, true, TIMER_SECONDS
|
||||||
|
);
|
||||||
|
this->AddChild( &m_Menu );
|
||||||
|
|
||||||
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo(m_sClassName+" intro") );
|
||||||
|
|
||||||
|
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds",m_sClassName+" music") );
|
||||||
|
|
||||||
|
switch( m_type )
|
||||||
|
{
|
||||||
|
case CHOICES_STYLE:
|
||||||
|
case CHOICES_MODE:
|
||||||
|
// This is probably the first screen in the menu sequence.
|
||||||
|
m_Menu.TweenOnScreenFromBlack( SM_None );
|
||||||
|
break;
|
||||||
|
case CHOICES_DIFFICULTY:
|
||||||
|
// This is probably not the first screen in the menu sequence.
|
||||||
|
m_Menu.TweenOnScreenFromMenu( SM_None );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ScreenSelect::~ScreenSelect()
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenSelect::~ScreenSelect()" );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelect::Update( float fDelta )
|
||||||
|
{
|
||||||
|
Screen::Update( fDelta );
|
||||||
|
m_BGAnimations[ this->GetSelectionIndex(GAMESTATE->m_MasterPlayerNumber) ].Update( fDelta );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelect::DrawPrimitives()
|
||||||
|
{
|
||||||
|
m_BGAnimations[ this->GetSelectionIndex(GAMESTATE->m_MasterPlayerNumber) ].Draw();
|
||||||
|
m_Menu.DrawBottomLayer();
|
||||||
|
Screen::DrawPrimitives();
|
||||||
|
m_Menu.DrawTopLayer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelect::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenSelect::Input()" );
|
||||||
|
|
||||||
|
if( MenuI.IsValid() && MenuI.button==MENU_BUTTON_START )
|
||||||
|
{
|
||||||
|
PlayerNumber pn = MenuI.player;
|
||||||
|
switch( m_type )
|
||||||
|
{
|
||||||
|
case CHOICES_STYLE:
|
||||||
|
case CHOICES_MODE:
|
||||||
|
if( pn!=PLAYER_INVALID && !GAMESTATE->m_bSideIsJoined[pn] )
|
||||||
|
{
|
||||||
|
/* I think JP should allow playing two-pad singleplayer modes (doubles),
|
||||||
|
* but not two-pad two-player modes (battle). (Battle mode isn't "joint".)
|
||||||
|
* That means we should leave player-entry logic alone and simply enable
|
||||||
|
* couples mode if JP is on and only one person has clicked in. (However,
|
||||||
|
* that means we'll display couples even if we don't really know if we have
|
||||||
|
* a second pad, which is a little annoying.)
|
||||||
|
*
|
||||||
|
* Also, credit deduction should be handled in StepMania.cpp (along with
|
||||||
|
* the coin logic) using GAMESTATE->m_bPlayersCanJoin, since there
|
||||||
|
* are other screens you can join (eg ScreenCaution). -glenn */
|
||||||
|
if( PREFSMAN->m_CoinMode == PrefsManager::COIN_PAY )
|
||||||
|
{
|
||||||
|
if( !PREFSMAN->m_bJointPremium )
|
||||||
|
{
|
||||||
|
if( GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit )
|
||||||
|
{
|
||||||
|
/* Joint Premium is NOT enabled, and we do not have enough credits */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Joint Premium is NOT enabled, but we have enough credits. Pay up! */
|
||||||
|
GAMESTATE->m_iCoins -= PREFSMAN->m_iCoinsPerCredit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If credits had to be used, it's already taken care of.. add the player */
|
||||||
|
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu start") );
|
||||||
|
GAMESTATE->m_bSideIsJoined[pn] = true;
|
||||||
|
SCREENMAN->RefreshCreditsMessages();
|
||||||
|
this->UpdateSelectableChoices();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( m_Menu.IsClosing() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelect::HandleScreenMessage( const ScreenMessage SM )
|
||||||
|
{
|
||||||
|
switch( SM )
|
||||||
|
{
|
||||||
|
case SM_AllDoneChoosing:
|
||||||
|
{
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
if( GAMESTATE->IsPlayerEnabled((PlayerNumber)p) )
|
||||||
|
GAMESTATE->ApplyModeChoice( m_aModeChoices[this->GetSelectionIndex((PlayerNumber)p)], (PlayerNumber)p );
|
||||||
|
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = false;
|
||||||
|
SCREENMAN->RefreshCreditsMessages();
|
||||||
|
|
||||||
|
m_Menu.StopTimer();
|
||||||
|
|
||||||
|
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SM_MenuTimer:
|
||||||
|
{
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
if( GAMESTATE->IsPlayerEnabled(p) )
|
||||||
|
MenuStart( (PlayerNumber)p );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SM_GoToPrevScreen:
|
||||||
|
SOUNDMAN->StopMusic();
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||||
|
break;
|
||||||
|
case SM_GoToNextScreen:
|
||||||
|
switch( m_type )
|
||||||
|
{
|
||||||
|
case CHOICES_STYLE:
|
||||||
|
// if they only chose a style, then the play mode isn't set.
|
||||||
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
|
break;
|
||||||
|
case CHOICES_MODE:
|
||||||
|
case CHOICES_DIFFICULTY:
|
||||||
|
// go to a specific screen depending on the play mode
|
||||||
|
switch( GAMESTATE->m_PlayMode )
|
||||||
|
{
|
||||||
|
case PLAY_MODE_ARCADE: SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); break;
|
||||||
|
case PLAY_MODE_NONSTOP:
|
||||||
|
case PLAY_MODE_ONI:
|
||||||
|
case PLAY_MODE_ENDLESS: SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); break;
|
||||||
|
case PLAY_MODE_BATTLE: SCREENMAN->SetNewScreen( NEXT_SCREEN_BATTLE ); break;
|
||||||
|
default: ASSERT(0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelect::MenuBack( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
SOUNDMAN->StopMusic();
|
||||||
|
|
||||||
|
m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true );
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
#ifndef ScreenSelect_H
|
||||||
|
#define ScreenSelect_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: ScreenSelect
|
||||||
|
|
||||||
|
Desc: Base class for Style, Difficulty, and Mode selection screens.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Screen.h"
|
||||||
|
#include "MenuElements.h"
|
||||||
|
#include "BGAnimation.h"
|
||||||
|
#include "ModeChoice.h"
|
||||||
|
|
||||||
|
// Derived classes must send this when done
|
||||||
|
const ScreenMessage SM_AllDoneChoosing = (ScreenMessage)(SM_User+123); // unique
|
||||||
|
|
||||||
|
#define MAX_CHOICES 30
|
||||||
|
|
||||||
|
class ScreenSelect : public Screen
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ScreenSelect( CString sClassName );
|
||||||
|
virtual ~ScreenSelect();
|
||||||
|
|
||||||
|
virtual void Update( float fDelta );
|
||||||
|
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 MenuBack( PlayerNumber pn );
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual int GetSelectionIndex( PlayerNumber pn ) = 0;
|
||||||
|
virtual void UpdateSelectableChoices() = 0; // derived screens must handle this
|
||||||
|
|
||||||
|
enum ChoicesType { CHOICES_STYLE, CHOICES_DIFFICULTY, CHOICES_MODE, CHOICES_GAME };
|
||||||
|
ChoicesType m_type;
|
||||||
|
CString m_sClassName;
|
||||||
|
|
||||||
|
MenuElements m_Menu;
|
||||||
|
BGAnimation m_BGAnimations[MAX_CHOICES];
|
||||||
|
|
||||||
|
vector<ModeChoice> m_aModeChoices; // derived classes should look here for what choices are available
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,220 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ScreenSelectDifficulty
|
|
||||||
|
|
||||||
Desc: Testing the Screen class.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ScreenSelectDifficulty.h"
|
|
||||||
#include "ScreenManager.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "GameManager.h"
|
|
||||||
#include "RageLog.h"
|
|
||||||
#include "GameConstantsAndTypes.h"
|
|
||||||
#include "AnnouncerManager.h"
|
|
||||||
#include "GameState.h"
|
|
||||||
#include "RageSoundManager.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
#include "ModeSelector.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define CHOICES THEME->GetMetric ("ScreenSelectDifficulty","Choices")
|
|
||||||
#define SELECTOR THEME->GetMetric ("ScreenSelectDifficulty","Selector")
|
|
||||||
#define HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText")
|
|
||||||
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectDifficulty","TimerSeconds")
|
|
||||||
#define NEXT_SCREEN_ARCADE THEME->GetMetric ("ScreenSelectDifficulty","NextScreenArcade")
|
|
||||||
#define NEXT_SCREEN_ONI THEME->GetMetric ("ScreenSelectDifficulty","NextScreenOni")
|
|
||||||
#define NEXT_SCREEN_BATTLE THEME->GetMetric ("ScreenSelectDifficulty","NextScreenBattle")
|
|
||||||
|
|
||||||
|
|
||||||
const ScreenMessage SM_StartTweeningOffScreen = ScreenMessage(SM_User + 3);
|
|
||||||
const ScreenMessage SM_StartFadingOut = ScreenMessage(SM_User + 4);
|
|
||||||
|
|
||||||
|
|
||||||
ScreenSelectDifficulty::ScreenSelectDifficulty()
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectDifficulty::ScreenSelectDifficulty()" );
|
|
||||||
|
|
||||||
// Reset the current PlayMode
|
|
||||||
GAMESTATE->m_PlayMode = PLAY_MODE_INVALID;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
vector<ModeChoice> aModeChoices;
|
|
||||||
|
|
||||||
CStringArray asBits;
|
|
||||||
split( CHOICES, ",", asBits );
|
|
||||||
|
|
||||||
unsigned choice;
|
|
||||||
|
|
||||||
for( choice=0; choice<asBits.size(); choice++ )
|
|
||||||
{
|
|
||||||
Difficulty dc = StringToDifficulty(asBits[choice]);
|
|
||||||
PlayMode pm = StringToPlayMode(asBits[choice]);
|
|
||||||
|
|
||||||
if( dc!=DIFFICULTY_INVALID ) // valid difficulty
|
|
||||||
{
|
|
||||||
ModeChoice mc = {
|
|
||||||
GAMESTATE->m_CurGame,
|
|
||||||
PLAY_MODE_ARCADE,
|
|
||||||
GAMESTATE->m_CurStyle,
|
|
||||||
dc,
|
|
||||||
"",
|
|
||||||
GAMESTATE->GetNumSidesJoined() };
|
|
||||||
strcpy( mc.name, DifficultyToString(dc) );
|
|
||||||
aModeChoices.push_back( mc );
|
|
||||||
}
|
|
||||||
else if( pm!=PLAY_MODE_INVALID ) // valid play mode
|
|
||||||
{
|
|
||||||
ModeChoice mc = {
|
|
||||||
GAMESTATE->m_CurGame,
|
|
||||||
pm,
|
|
||||||
GAMESTATE->m_CurStyle,
|
|
||||||
DIFFICULTY_MEDIUM,
|
|
||||||
"",
|
|
||||||
GAMESTATE->GetNumSidesJoined() };
|
|
||||||
strcpy( mc.name, PlayModeToString(pm) );
|
|
||||||
aModeChoices.push_back( mc );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
RageException::Throw( "Invalid Choice%d value '%s'.", choice+1, asBits[choice].GetString() );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
m_pSelector = ModeSelector::Create( SELECTOR );
|
|
||||||
m_pSelector->Init( aModeChoices, "ScreenSelectDifficulty", "select difficulty" );
|
|
||||||
this->AddChild( m_pSelector );
|
|
||||||
|
|
||||||
m_Menu.Load(
|
|
||||||
THEME->GetPathTo("BGAnimations","select difficulty"),
|
|
||||||
THEME->GetPathTo("Graphics","select difficulty top edge"),
|
|
||||||
HELP_TEXT, true, true, TIMER_SECONDS
|
|
||||||
);
|
|
||||||
this->AddChild( &m_Menu );
|
|
||||||
|
|
||||||
|
|
||||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("select difficulty intro") );
|
|
||||||
|
|
||||||
m_Menu.TweenOnScreenFromMenu( SM_None );
|
|
||||||
m_pSelector->TweenOnScreen();
|
|
||||||
|
|
||||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","select difficulty music") );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ScreenSelectDifficulty::~ScreenSelectDifficulty()
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectDifficulty::~ScreenSelectDifficulty()" );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectDifficulty::Input()" );
|
|
||||||
|
|
||||||
if( m_Menu.IsClosing() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::Update( float fDeltaTime )
|
|
||||||
{
|
|
||||||
Screen::Update( fDeltaTime );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::DrawPrimitives()
|
|
||||||
{
|
|
||||||
m_Menu.DrawBottomLayer();
|
|
||||||
Screen::DrawPrimitives();
|
|
||||||
m_Menu.DrawTopLayer();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM )
|
|
||||||
{
|
|
||||||
int p;
|
|
||||||
|
|
||||||
switch( SM )
|
|
||||||
{
|
|
||||||
case SM_MenuTimer:
|
|
||||||
for( p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsPlayerEnabled(p) )
|
|
||||||
MenuStart( (PlayerNumber)p );
|
|
||||||
break;
|
|
||||||
case SM_BeginFadingOut: // sent by our ModeSelector
|
|
||||||
{
|
|
||||||
ModeChoice mc;
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsPlayerEnabled(p) )
|
|
||||||
{
|
|
||||||
m_pSelector->GetSelectedModeChoice( (PlayerNumber)p, &mc );
|
|
||||||
GAMESTATE->ApplyModeChoice( &mc, (PlayerNumber)p );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Menu.StopTimer();
|
|
||||||
m_pSelector->TweenOffScreen();
|
|
||||||
|
|
||||||
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SM_GoToPrevScreen:
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
|
||||||
break;
|
|
||||||
case SM_GoToNextScreen:
|
|
||||||
switch( GAMESTATE->m_PlayMode )
|
|
||||||
{
|
|
||||||
case PLAY_MODE_ARCADE: SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); break;
|
|
||||||
case PLAY_MODE_NONSTOP:
|
|
||||||
case PLAY_MODE_ONI:
|
|
||||||
case PLAY_MODE_ENDLESS: SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); break;
|
|
||||||
case PLAY_MODE_BATTLE: SCREENMAN->SetNewScreen( NEXT_SCREEN_BATTLE ); break;
|
|
||||||
default: ASSERT(0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SM_StartTweeningOffScreen:
|
|
||||||
m_pSelector->TweenOffScreen();
|
|
||||||
this->SendScreenMessage( SM_StartFadingOut, 0.8f );
|
|
||||||
break;
|
|
||||||
case SM_StartFadingOut:
|
|
||||||
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuLeft( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuLeft( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuRight( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuRight( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuUp( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuUp( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuDown( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuDown( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuStart( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuStart( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectDifficulty::MenuBack( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
SOUNDMAN->StopMusic();
|
|
||||||
|
|
||||||
m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true );
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
File: ScreenSelectDifficulty.h
|
|
||||||
|
|
||||||
Desc: Select the difficulty (easy, medium, hard).
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Screen.h"
|
|
||||||
#include "MenuElements.h"
|
|
||||||
class ModeSelector;
|
|
||||||
|
|
||||||
|
|
||||||
class ScreenSelectDifficulty : public Screen
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
enum Page { PAGE_1, PAGE_2, NUM_PAGES };
|
|
||||||
#define MAX_CHOICES_PER_PAGE 6
|
|
||||||
|
|
||||||
ScreenSelectDifficulty();
|
|
||||||
virtual ~ScreenSelectDifficulty();
|
|
||||||
|
|
||||||
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 );
|
|
||||||
|
|
||||||
void MenuUp( PlayerNumber pn );
|
|
||||||
void MenuDown( PlayerNumber pn );
|
|
||||||
void MenuLeft( PlayerNumber pn );
|
|
||||||
void MenuRight( PlayerNumber pn );
|
|
||||||
void MenuStart( PlayerNumber pn );
|
|
||||||
void MenuBack( PlayerNumber pn );
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
MenuElements m_Menu;
|
|
||||||
|
|
||||||
ModeSelector* m_pSelector;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,260 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: ScreenSelectMaxType1
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ScreenSelectMaxType1.h"
|
||||||
|
#include "GameManager.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "ScreenManager.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define JOINT_PREMIUM_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","JointPremiumOnCommand")
|
||||||
|
#define JOINT_PREMIUM_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","JointPremiumOffCommand")
|
||||||
|
#define ICON_ON_COMMAND( i ) THEME->GetMetric ("ScreenSelectMaxType1",ssprintf("Icon%dOnCommand",i+1))
|
||||||
|
#define ICON_OFF_COMMAND( i ) THEME->GetMetric ("ScreenSelectMaxType1",ssprintf("Icon%dOffCommand",i+1))
|
||||||
|
#define DISABLED_COLOR THEME->GetMetricC("ScreenSelectMaxType1","DisabledColor")
|
||||||
|
#define EXPLANATION_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","ExplanationOnCommand")
|
||||||
|
#define EXPLANATION_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","ExplanationOffCommand")
|
||||||
|
#define INFO_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","InfoOnCommand")
|
||||||
|
#define INFO_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","InfoOffCommand")
|
||||||
|
#define PREVIEW_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","PreviewOnCommand")
|
||||||
|
#define PREVIEW_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType1","PreviewOffCommand")
|
||||||
|
|
||||||
|
|
||||||
|
ScreenSelectMaxType1::ScreenSelectMaxType1() : ScreenSelect( "ScreenSelectMaxType1" )
|
||||||
|
{
|
||||||
|
m_iSelection = 0;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned i;
|
||||||
|
for( i=0; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
const ModeChoice& mc = m_aModeChoices[i];
|
||||||
|
CString sGameName = GAMEMAN->GetGameDefForGame(mc.game)->m_szName;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load icon
|
||||||
|
//
|
||||||
|
CString sIconElementName = ssprintf("ScreenSelectMaxType1 icon %s %s", sGameName.GetString(), mc.name );
|
||||||
|
CString sIconPath = THEME->GetPathTo("Graphics",sIconElementName);
|
||||||
|
if( sIconPath.empty() ) // element doesn't exist
|
||||||
|
{
|
||||||
|
m_textIcon[i].LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
|
m_textIcon[i].SetText( mc.name );
|
||||||
|
m_textIcon[i].SetZoom(0.5f);
|
||||||
|
this->AddChild( &m_textIcon[i] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_sprIcon[i].Load( sIconPath );
|
||||||
|
this->AddChild( &m_sprIcon[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load preview
|
||||||
|
//
|
||||||
|
CString sPreviewElementName = ssprintf("ScreenSelectMaxType1 preview %s %s", sGameName.GetString(), mc.name );
|
||||||
|
CString sPreviewPath = THEME->GetPathTo("Graphics",sPreviewElementName);
|
||||||
|
if( sPreviewPath != "" )
|
||||||
|
{
|
||||||
|
m_sprPreview[i].Load( sPreviewPath );
|
||||||
|
// m_sprPreview[i].Command( PREVIEW_X, PREVIEW_Y );
|
||||||
|
m_sprPreview[i].SetDiffuse( RageColor(1,1,1,0) );
|
||||||
|
this->AddChild( &m_sprPreview[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load info
|
||||||
|
//
|
||||||
|
CString sInfoElementName = ssprintf("ScreenSelectMaxType1 info %s %s", sGameName.GetString(), mc.name );
|
||||||
|
CString sInfoPath = THEME->GetPathTo("Graphics",sInfoElementName);
|
||||||
|
if( sInfoPath != "" )
|
||||||
|
{
|
||||||
|
m_sprInfo[i].Load( sInfoPath );
|
||||||
|
// m_sprInfo[i].SetXY( INFO_X, INFO_Y );
|
||||||
|
m_sprInfo[i].SetDiffuse( RageColor(1,1,1,0) );
|
||||||
|
this->AddChild( &m_sprInfo[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fix Z ordering of Preview and Info so that they draw on top
|
||||||
|
for( i=0; i<this->m_aModeChoices.size(); i++ )
|
||||||
|
this->MoveToTail( &m_sprPreview[i] );
|
||||||
|
for( i=0; i<this->m_aModeChoices.size(); i++ )
|
||||||
|
this->MoveToTail( &m_sprInfo[i] );
|
||||||
|
|
||||||
|
|
||||||
|
this->UpdateSelectableChoices();
|
||||||
|
|
||||||
|
m_sprExplanation.Load( THEME->GetPathTo("Graphics","ScreenSelectMaxType1 explanation") );
|
||||||
|
// m_sprExplanation.SetXY( EXPLANATION_X, EXPLANATION_Y );
|
||||||
|
this->AddChild( &m_sprExplanation );
|
||||||
|
|
||||||
|
if( PREFSMAN->m_bJointPremium )
|
||||||
|
{
|
||||||
|
m_sprJointPremium.Load( THEME->GetPathTo("Graphics","ScreenSelectMaxType1 joint premium") );
|
||||||
|
// m_sprJointPremium.SetXY( JOINT_PREMIUM_BANNER_X, JOINT_PREMIUM_BANNER_Y );
|
||||||
|
this->AddChild( &m_sprJointPremium );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
m_soundChange.Load( THEME->GetPathTo("Sounds","ScreenSelectMaxType1 change") );
|
||||||
|
m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") );
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// TweenOnScreen
|
||||||
|
//
|
||||||
|
for( i=0; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
m_textIcon[i].Command( ICON_ON_COMMAND(i) );
|
||||||
|
m_sprIcon[i].Command( ICON_ON_COMMAND(i) );
|
||||||
|
}
|
||||||
|
m_sprExplanation.Command( EXPLANATION_ON_COMMAND );
|
||||||
|
m_sprJointPremium.Command( JOINT_PREMIUM_ON_COMMAND );
|
||||||
|
|
||||||
|
// let AfterChange tween Preview and Info
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::MenuLeft( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
int iSwitchToIndex = -1; // -1 means none found
|
||||||
|
for( int i=m_iSelection-1; i>=0; i-- )
|
||||||
|
{
|
||||||
|
if( GAMESTATE->IsPlayable(m_aModeChoices[i]) )
|
||||||
|
{
|
||||||
|
iSwitchToIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( iSwitchToIndex == -1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
BeforeChange();
|
||||||
|
m_iSelection = iSwitchToIndex;
|
||||||
|
m_soundChange.Play();
|
||||||
|
AfterChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::MenuRight( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
int iSwitchToIndex = -1; // -1 means none found
|
||||||
|
for( unsigned i=m_iSelection+1; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
if( GAMESTATE->IsPlayable(m_aModeChoices[i]) )
|
||||||
|
{
|
||||||
|
iSwitchToIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( iSwitchToIndex == -1 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
BeforeChange();
|
||||||
|
m_iSelection = iSwitchToIndex;
|
||||||
|
m_soundChange.Play();
|
||||||
|
AfterChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::MenuStart( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
m_soundSelect.Play();
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_AllDoneChoosing, 0 );
|
||||||
|
|
||||||
|
//
|
||||||
|
// TweenOffScreen
|
||||||
|
//
|
||||||
|
for( unsigned i=0; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
m_sprIcon[i].Command( ICON_OFF_COMMAND(i) );
|
||||||
|
m_textIcon[i].Command( ICON_OFF_COMMAND(i) );
|
||||||
|
}
|
||||||
|
m_sprExplanation.Command( EXPLANATION_OFF_COMMAND );
|
||||||
|
m_sprPreview[m_iSelection].Command( PREVIEW_OFF_COMMAND );
|
||||||
|
m_sprInfo[m_iSelection].Command( INFO_OFF_COMMAND );
|
||||||
|
m_sprJointPremium.Command( JOINT_PREMIUM_OFF_COMMAND );
|
||||||
|
}
|
||||||
|
|
||||||
|
int ScreenSelectMaxType1::GetSelectionIndex( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
return m_iSelection;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::UpdateSelectableChoices()
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
/* XXX: If a player joins during the tween-in, this diffuse change
|
||||||
|
* will be undone by the tween. Hmm. */
|
||||||
|
for( i=0; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
/* If the icon is text, use a dimmer diffuse, or we won't be
|
||||||
|
* able to see the glow. */
|
||||||
|
if( GAMESTATE->IsPlayable(m_aModeChoices[i]) )
|
||||||
|
{
|
||||||
|
m_sprIcon[i].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
|
m_textIcon[i].SetDiffuse( RageColor(0.5f,0.5f,0.5f,1) ); // gray so glow is visible
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_sprIcon[i].SetDiffuse( DISABLED_COLOR );
|
||||||
|
m_textIcon[i].SetDiffuse( DISABLED_COLOR );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select first enabled choie
|
||||||
|
BeforeChange();
|
||||||
|
|
||||||
|
int iSwitchToStyleIndex = -1; // -1 means none found
|
||||||
|
for( i=0; i<m_aModeChoices.size(); i++ )
|
||||||
|
{
|
||||||
|
if( GAMESTATE->IsPlayable(m_aModeChoices[i]) )
|
||||||
|
{
|
||||||
|
iSwitchToStyleIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ASSERT( iSwitchToStyleIndex != -1 ); // no styles are enabled. We're stuck! This should never happen
|
||||||
|
|
||||||
|
m_iSelection = iSwitchToStyleIndex;
|
||||||
|
AfterChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::BeforeChange()
|
||||||
|
{
|
||||||
|
// dim/hide old selection
|
||||||
|
m_sprIcon[m_iSelection].SetEffectNone();
|
||||||
|
m_textIcon[m_iSelection].SetEffectNone();
|
||||||
|
m_sprPreview[m_iSelection].StopTweening();
|
||||||
|
m_sprInfo[m_iSelection].StopTweening();
|
||||||
|
m_sprPreview[m_iSelection].SetDiffuse( RageColor(1,1,1,0) );
|
||||||
|
m_sprInfo[m_iSelection].SetDiffuse( RageColor(1,1,1,0) );
|
||||||
|
m_sprPreview[m_iSelection].SetGlow( RageColor(1,1,1,0) );
|
||||||
|
m_sprInfo[m_iSelection].SetGlow( RageColor(1,1,1,0) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenSelectMaxType1::AfterChange()
|
||||||
|
{
|
||||||
|
m_sprIcon[m_iSelection].SetEffectGlowShift();
|
||||||
|
m_textIcon[m_iSelection].SetEffectGlowShift();
|
||||||
|
m_sprPreview[m_iSelection].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
|
m_sprInfo[m_iSelection].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
|
m_sprPreview[m_iSelection].SetZoom( 1 );
|
||||||
|
m_sprInfo[m_iSelection].SetZoom( 1 );
|
||||||
|
m_sprPreview[m_iSelection].Command( PREVIEW_ON_COMMAND );
|
||||||
|
m_sprInfo[m_iSelection].Command( INFO_ON_COMMAND );
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
#ifndef ModeSelectorMaxType1_H
|
#ifndef ScreenSelectMaxType1_H
|
||||||
#define ModeSelectorMaxType1_H
|
#define ScreenSelectMaxType1_H
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: ModeSelectorMaxType1
|
Class: ScreenSelectMaxType1
|
||||||
|
|
||||||
Desc: Abstract class for a widget that selects a ModeChoice
|
Desc:
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
Chris Danford
|
Chris Danford
|
||||||
@@ -12,42 +12,29 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "ModeSelector.h"
|
#include "ScreenSelect.h"
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "BitmapText.h"
|
#include "BitmapText.h"
|
||||||
#include "RageSound.h"
|
#include "RageSound.h"
|
||||||
|
|
||||||
|
|
||||||
#define MAX_MODE_CHOICES 30
|
#define MAX_MODE_CHOICES 30
|
||||||
|
|
||||||
|
class ScreenSelectMaxType1 : public ScreenSelect
|
||||||
class ModeSelectorMaxType1 : public ModeSelector
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ModeSelectorMaxType1();
|
ScreenSelectMaxType1();
|
||||||
virtual ~ModeSelectorMaxType1() {};
|
|
||||||
|
|
||||||
virtual void Init( const vector<ModeChoice>& choices, CString sClassName, CString sThemeElementPrefix );
|
|
||||||
|
|
||||||
virtual void MenuLeft( PlayerNumber pn );
|
virtual void MenuLeft( PlayerNumber pn );
|
||||||
virtual void MenuRight( PlayerNumber pn );
|
virtual void MenuRight( PlayerNumber pn );
|
||||||
virtual void MenuUp( PlayerNumber pn ) {};
|
|
||||||
virtual void MenuDown( PlayerNumber pn ) {};
|
|
||||||
virtual void MenuStart( PlayerNumber pn );
|
virtual void MenuStart( PlayerNumber pn );
|
||||||
virtual void MenuBack( PlayerNumber pn );
|
|
||||||
virtual void TweenOffScreen();
|
|
||||||
virtual void TweenOnScreen();
|
|
||||||
|
|
||||||
virtual void GetSelectedModeChoice( PlayerNumber pn, ModeChoice* pModeChoiceOut );
|
|
||||||
virtual void UpdateSelectableChoices();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual int GetSelectionIndex( PlayerNumber pn );
|
||||||
|
virtual void UpdateSelectableChoices();
|
||||||
|
|
||||||
void BeforeChange();
|
void BeforeChange();
|
||||||
void AfterChange();
|
void AfterChange();
|
||||||
|
|
||||||
vector<ModeChoice> m_aModeChoices;
|
|
||||||
int m_iSelection;
|
|
||||||
|
|
||||||
Sprite m_sprIcon[MAX_MODE_CHOICES];
|
Sprite m_sprIcon[MAX_MODE_CHOICES];
|
||||||
// Artists don't make graphics for every single Game, so
|
// Artists don't make graphics for every single Game, so
|
||||||
// have a text representation if textures are missing.
|
// have a text representation if textures are missing.
|
||||||
@@ -59,6 +46,8 @@ protected:
|
|||||||
|
|
||||||
RageSound m_soundChange;
|
RageSound m_soundChange;
|
||||||
RageSound m_soundSelect;
|
RageSound m_soundSelect;
|
||||||
|
|
||||||
|
int m_iSelection;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: ModeSelectorMaxType2
|
Class: ScreenSelectMaxType2
|
||||||
|
|
||||||
Desc: See header.
|
Desc: See header.
|
||||||
|
|
||||||
@@ -10,45 +10,46 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ModeSelectorMaxType2.h"
|
#include "ScreenSelectMaxType2.h"
|
||||||
#include "GameManager.h"
|
#include "GameManager.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "ScreenManager.h"
|
#include "ScreenManager.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "AnnouncerManager.h"
|
#include "AnnouncerManager.h"
|
||||||
|
#include "ModeChoice.h"
|
||||||
|
|
||||||
|
|
||||||
#define NUM_CHOICES_ON_PAGE_1 THEME->GetMetricI("ModeSelectorMaxType2","NumChoicesOnPage1")
|
#define NUM_CHOICES_ON_PAGE_1 THEME->GetMetricI("ScreenSelectMaxType2","NumChoicesOnPage1")
|
||||||
#define LOCK_INPUT_SECONDS THEME->GetMetricF("ModeSelectorMaxType2","LockInputSeconds")
|
#define LOCK_INPUT_SECONDS THEME->GetMetricF("ScreenSelectMaxType2","LockInputSeconds")
|
||||||
#define SLEEP_AFTER_CHOICE_SECONDS THEME->GetMetricF("ModeSelectorMaxType2","SleepAfterChoiceSeconds")
|
#define SLEEP_AFTER_CHOICE_SECONDS THEME->GetMetricF("ScreenSelectMaxType2","SleepAfterChoiceSeconds")
|
||||||
#define SLEEP_AFTER_TWEEN_OFF_SECONDS THEME->GetMetricF("ModeSelectorMaxType2","SleepAfterTweenOffSeconds")
|
#define SLEEP_AFTER_TWEEN_OFF_SECONDS THEME->GetMetricF("ScreenSelectMaxType2","SleepAfterTweenOffSeconds")
|
||||||
#define MORE_ON_COMMAND( page ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("MorePage%dOnCommand",page+1))
|
#define MORE_ON_COMMAND( page ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("MorePage%dOnCommand",page+1))
|
||||||
#define MORE_OFF_COMMAND( page ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("MorePage%dOffCommand",page+1))
|
#define MORE_OFF_COMMAND( page ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("MorePage%dOffCommand",page+1))
|
||||||
#define EXPLANATION_ON_COMMAND( page ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("ExplanationPage%dOnCommand",page+1))
|
#define EXPLANATION_ON_COMMAND( page ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("ExplanationPage%dOnCommand",page+1))
|
||||||
#define EXPLANATION_OFF_COMMAND( page ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("ExplanationPage%dOffCommand",page+1))
|
#define EXPLANATION_OFF_COMMAND( page ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("ExplanationPage%dOffCommand",page+1))
|
||||||
#define HEADER_ON_COMMAND( page, choice ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("HeaderPage%dChoice%dOnCommand",page+1,choice+1))
|
#define HEADER_ON_COMMAND( page, choice ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("HeaderPage%dChoice%dOnCommand",page+1,choice+1))
|
||||||
#define HEADER_OFF_COMMAND( page, choice ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("HeaderPage%dChoice%dOffCommand",page+1,choice+1))
|
#define HEADER_OFF_COMMAND( page, choice ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("HeaderPage%dChoice%dOffCommand",page+1,choice+1))
|
||||||
#define PICTURE_ON_COMMAND( page, choice ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("PicturePage%dChoice%dOnCommand",page+1,choice+1))
|
#define PICTURE_ON_COMMAND( page, choice ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("PicturePage%dChoice%dOnCommand",page+1,choice+1))
|
||||||
#define PICTURE_OFF_COMMAND( page, choice ) THEME->GetMetric ("ModeSelectorMaxType2",ssprintf("PicturePage%dChoice%dOffCommand",page+1,choice+1))
|
#define PICTURE_OFF_COMMAND( page, choice ) THEME->GetMetric ("ScreenSelectMaxType2",ssprintf("PicturePage%dChoice%dOffCommand",page+1,choice+1))
|
||||||
#define CURSOR_ON_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","CursorOnCommand")
|
#define CURSOR_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","CursorOnCommand")
|
||||||
#define CURSOR_CHOOSE_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","CursorChooseCommand")
|
#define CURSOR_CHOOSE_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","CursorChooseCommand")
|
||||||
#define CURSOR_OFF_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","CursorOffCommand")
|
#define CURSOR_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","CursorOffCommand")
|
||||||
#define CURSOR_OFFSET_X_FROM_PICTURE( p ) THEME->GetMetricF("ModeSelectorMaxType2",ssprintf("CursorP%dOffsetXFromPicture",p+1))
|
#define CURSOR_OFFSET_X_FROM_PICTURE( p ) THEME->GetMetricF("ScreenSelectMaxType2",ssprintf("CursorP%dOffsetXFromPicture",p+1))
|
||||||
#define CURSOR_OFFSET_Y_FROM_PICTURE( p ) THEME->GetMetricF("ModeSelectorMaxType2",ssprintf("CursorP%dOffsetYFromPicture",p+1))
|
#define CURSOR_OFFSET_Y_FROM_PICTURE( p ) THEME->GetMetricF("ScreenSelectMaxType2",ssprintf("CursorP%dOffsetYFromPicture",p+1))
|
||||||
#define SHADOW_ON_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","ShadowOnCommand")
|
#define SHADOW_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","ShadowOnCommand")
|
||||||
#define SHADOW_CHOOSE_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","ShadowChooseCommand")
|
#define SHADOW_CHOOSE_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","ShadowChooseCommand")
|
||||||
#define SHADOW_OFF_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","ShadowOffCommand")
|
#define SHADOW_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","ShadowOffCommand")
|
||||||
#define SHADOW_LENGTH_X THEME->GetMetricF("ModeSelectorMaxType2","ShadowLengthX")
|
#define SHADOW_LENGTH_X THEME->GetMetricF("ScreenSelectMaxType2","ShadowLengthX")
|
||||||
#define SHADOW_LENGTH_Y THEME->GetMetricF("ModeSelectorMaxType2","ShadowLengthY")
|
#define SHADOW_LENGTH_Y THEME->GetMetricF("ScreenSelectMaxType2","ShadowLengthY")
|
||||||
#define OK_ON_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","OKOnCommand")
|
#define OK_ON_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","OKOnCommand")
|
||||||
#define OK_CHOOSE_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","OKChooseCommand")
|
#define OK_CHOOSE_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","OKChooseCommand")
|
||||||
#define OK_OFF_COMMAND THEME->GetMetric ("ModeSelectorMaxType2","OKOffCommand")
|
#define OK_OFF_COMMAND THEME->GetMetric ("ScreenSelectMaxType2","OKOffCommand")
|
||||||
#define DISABLED_COLOR THEME->GetMetricC("ModeSelectorMaxType2","DisabledColor")
|
#define DISABLED_COLOR THEME->GetMetricC("ScreenSelectMaxType2","DisabledColor")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ModeSelectorMaxType2::ModeSelectorMaxType2()
|
ScreenSelectMaxType2::ScreenSelectMaxType2() : ScreenSelect( "ScreenSelectMaxType2" )
|
||||||
{
|
{
|
||||||
m_CurrentPage = PAGE_1;
|
m_CurrentPage = PAGE_1;
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
@@ -56,27 +57,22 @@ ModeSelectorMaxType2::ModeSelectorMaxType2()
|
|||||||
m_iChoiceOnPage[p] = 0;
|
m_iChoiceOnPage[p] = 0;
|
||||||
m_bChosen[p] = false;
|
m_bChosen[p] = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ModeSelectorMaxType2::~ModeSelectorMaxType2()
|
for( unsigned c=0; c<m_aModeChoices.size(); c++ )
|
||||||
{
|
{
|
||||||
}
|
if( (int)c < NUM_CHOICES_ON_PAGE_1 )
|
||||||
|
m_ModeChoices[PAGE_1].push_back( m_aModeChoices[c] );
|
||||||
void ModeSelectorMaxType2::Init( const vector<ModeChoice>& choices, CString sClassName, CString sThemeElementPrefix )
|
|
||||||
{
|
|
||||||
for( int c=0; c<choices.size(); c++ )
|
|
||||||
if( c < NUM_CHOICES_ON_PAGE_1 )
|
|
||||||
m_ModeChoices[PAGE_1].push_back( choices[c] );
|
|
||||||
else
|
else
|
||||||
m_ModeChoices[PAGE_2].push_back( choices[c] );
|
m_ModeChoices[PAGE_2].push_back( m_aModeChoices[c] );
|
||||||
|
}
|
||||||
|
|
||||||
for( int page=0; page<NUM_PAGES; page++ )
|
for( int page=0; page<NUM_PAGES; page++ )
|
||||||
{
|
{
|
||||||
|
|
||||||
for( int choice=0; choice<m_ModeChoices[page].size(); choice++ )
|
for( unsigned choice=0; choice<m_ModeChoices[page].size(); choice++ )
|
||||||
{
|
{
|
||||||
CString sHeaderFile = ssprintf( "%s header %s", sThemeElementPrefix.GetString(), m_ModeChoices[page][choice].name );
|
CString sHeaderFile = ssprintf( "select difficulty header %s", m_ModeChoices[page][choice].name );
|
||||||
CString sPictureFile = ssprintf( "%s picture %s", sThemeElementPrefix.GetString(), m_ModeChoices[page][choice].name );
|
CString sPictureFile = ssprintf( "select difficulty picture %s", m_ModeChoices[page][choice].name );
|
||||||
|
|
||||||
m_sprPicture[page][choice].Load( THEME->GetPathTo("Graphics",sPictureFile) );
|
m_sprPicture[page][choice].Load( THEME->GetPathTo("Graphics",sPictureFile) );
|
||||||
m_framePages.AddChild( &m_sprPicture[page][choice] );
|
m_framePages.AddChild( &m_sprPicture[page][choice] );
|
||||||
@@ -86,17 +82,17 @@ void ModeSelectorMaxType2::Init( const vector<ModeChoice>& choices, CString sCla
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
m_sprMore[page].Load( THEME->GetPathTo("Graphics", ssprintf("%s more page%d",sThemeElementPrefix.GetString(),page+1) ) );
|
m_sprMore[page].Load( THEME->GetPathTo("Graphics", ssprintf("select difficulty more page%d",page+1) ) );
|
||||||
m_framePages.AddChild( &m_sprMore[page] );
|
m_framePages.AddChild( &m_sprMore[page] );
|
||||||
|
|
||||||
m_sprExplanation[page].Load( THEME->GetPathTo("Graphics", ssprintf("%s explanation",sThemeElementPrefix.GetString())) );
|
m_sprExplanation[page].Load( THEME->GetPathTo("Graphics", "select difficulty explanation") );
|
||||||
m_sprExplanation[page].StopAnimating();
|
m_sprExplanation[page].StopAnimating();
|
||||||
m_sprExplanation[page].SetState( page );
|
m_sprExplanation[page].SetState( page );
|
||||||
m_framePages.AddChild( &m_sprExplanation[page] );
|
m_framePages.AddChild( &m_sprExplanation[page] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
for( p=0; p<NUM_PLAYERS; p++ )
|
||||||
{
|
{
|
||||||
CLAMP( m_iChoiceOnPage[p], 0, (int)m_ModeChoices[0].size()-1 );
|
CLAMP( m_iChoiceOnPage[p], 0, (int)m_ModeChoices[0].size()-1 );
|
||||||
m_bChosen[p] = false;
|
m_bChosen[p] = false;
|
||||||
@@ -129,15 +125,17 @@ void ModeSelectorMaxType2::Init( const vector<ModeChoice>& choices, CString sCla
|
|||||||
m_soundDifficult.Load( ANNOUNCER->GetPathTo("select difficulty challenge") );
|
m_soundDifficult.Load( ANNOUNCER->GetPathTo("select difficulty challenge") );
|
||||||
|
|
||||||
m_fLockInputTime = LOCK_INPUT_SECONDS;
|
m_fLockInputTime = LOCK_INPUT_SECONDS;
|
||||||
|
|
||||||
|
TweenOnScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::Update( float fDelta )
|
void ScreenSelectMaxType2::Update( float fDelta )
|
||||||
{
|
{
|
||||||
ModeSelector::Update( fDelta );
|
ScreenSelect::Update( fDelta );
|
||||||
m_fLockInputTime = max( 0, m_fLockInputTime-fDelta );
|
m_fLockInputTime = max( 0, m_fLockInputTime-fDelta );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::HandleScreenMessage( const ScreenMessage SM )
|
void ScreenSelectMaxType2::HandleScreenMessage( const ScreenMessage SM )
|
||||||
{
|
{
|
||||||
switch( SM )
|
switch( SM )
|
||||||
{
|
{
|
||||||
@@ -148,12 +146,16 @@ void ModeSelectorMaxType2::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::GetSelectedModeChoice( PlayerNumber pn, ModeChoice* pModeChoiceOut )
|
int ScreenSelectMaxType2::GetSelectionIndex( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
*pModeChoiceOut = m_ModeChoices[m_CurrentPage][ m_iChoiceOnPage[pn] ]; // doesn't depend on pn
|
int index = 0;
|
||||||
|
for( int page=0; page<m_CurrentPage; page++ )
|
||||||
|
index += m_ModeChoices[page].size();
|
||||||
|
index += m_iChoiceOnPage[pn];
|
||||||
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::UpdateSelectableChoices()
|
void ScreenSelectMaxType2::UpdateSelectableChoices()
|
||||||
{
|
{
|
||||||
for( int page=0; page<NUM_PAGES; page++ )
|
for( int page=0; page<NUM_PAGES; page++ )
|
||||||
{
|
{
|
||||||
@@ -163,7 +165,7 @@ void ModeSelectorMaxType2::UpdateSelectableChoices()
|
|||||||
{
|
{
|
||||||
/* If the icon is text, use a dimmer diffuse, or we won't be
|
/* If the icon is text, use a dimmer diffuse, or we won't be
|
||||||
* able to see the glow. */
|
* able to see the glow. */
|
||||||
if( IsSelectable(m_ModeChoices[page][i]) )
|
if( GAMESTATE->IsPlayable(m_ModeChoices[page][i]) )
|
||||||
{
|
{
|
||||||
m_sprHeader[page][i].SetDiffuse( RageColor(1,1,1,1) );
|
m_sprHeader[page][i].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
m_sprPicture[page][i].SetDiffuse( RageColor(1,1,1,1) );
|
m_sprPicture[page][i].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
@@ -184,7 +186,7 @@ void ModeSelectorMaxType2::UpdateSelectableChoices()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::MenuLeft( PlayerNumber pn )
|
void ScreenSelectMaxType2::MenuLeft( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
if( m_fLockInputTime > 0 )
|
if( m_fLockInputTime > 0 )
|
||||||
return;
|
return;
|
||||||
@@ -200,7 +202,7 @@ void ModeSelectorMaxType2::MenuLeft( PlayerNumber pn )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ModeSelectorMaxType2::MenuRight( PlayerNumber pn )
|
void ScreenSelectMaxType2::MenuRight( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
if( m_fLockInputTime > 0 )
|
if( m_fLockInputTime > 0 )
|
||||||
return;
|
return;
|
||||||
@@ -215,7 +217,7 @@ void ModeSelectorMaxType2::MenuRight( PlayerNumber pn )
|
|||||||
ChangeWithinPage( pn, m_iChoiceOnPage[pn]+1, false );
|
ChangeWithinPage( pn, m_iChoiceOnPage[pn]+1, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::ChangePage( Page newPage )
|
void ScreenSelectMaxType2::ChangePage( Page newPage )
|
||||||
{
|
{
|
||||||
int p;
|
int p;
|
||||||
|
|
||||||
@@ -244,7 +246,7 @@ void ModeSelectorMaxType2::ChangePage( Page newPage )
|
|||||||
m_framePages.SetTweenX( (float)newPage*-SCREEN_WIDTH );
|
m_framePages.SetTweenX( (float)newPage*-SCREEN_WIDTH );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::ChangeWithinPage( PlayerNumber pn, int iNewChoice, bool bChangingPages )
|
void ScreenSelectMaxType2::ChangeWithinPage( PlayerNumber pn, int iNewChoice, bool bChangingPages )
|
||||||
{
|
{
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
{
|
{
|
||||||
@@ -273,7 +275,7 @@ void ModeSelectorMaxType2::ChangeWithinPage( PlayerNumber pn, int iNewChoice, bo
|
|||||||
m_soundChange.Play();
|
m_soundChange.Play();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::MenuStart( PlayerNumber pn )
|
void ScreenSelectMaxType2::MenuStart( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
if( m_fLockInputTime > 0 )
|
if( m_fLockInputTime > 0 )
|
||||||
return;
|
return;
|
||||||
@@ -316,15 +318,15 @@ void ModeSelectorMaxType2::MenuStart( PlayerNumber pn )
|
|||||||
if( GAMESTATE->IsPlayerEnabled((PlayerNumber)p) && m_bChosen[p] == false )
|
if( GAMESTATE->IsPlayerEnabled((PlayerNumber)p) && m_bChosen[p] == false )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->SendScreenMessage( SM_BeginFadingOut, SLEEP_AFTER_CHOICE_SECONDS ); // tell our owner it's time to move on
|
this->SendScreenMessage( SM_AllDoneChoosing, SLEEP_AFTER_CHOICE_SECONDS ); // tell our owner it's time to move on
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ModeSelectorMaxType2::MenuBack( PlayerNumber pn )
|
void ScreenSelectMaxType2::MenuBack( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::TweenOnScreen()
|
void ScreenSelectMaxType2::TweenOnScreen()
|
||||||
{
|
{
|
||||||
unsigned p;
|
unsigned p;
|
||||||
|
|
||||||
@@ -363,7 +365,7 @@ void ModeSelectorMaxType2::TweenOnScreen()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorMaxType2::TweenOffScreen()
|
void ScreenSelectMaxType2::TweenOffScreen()
|
||||||
{
|
{
|
||||||
const int page = m_CurrentPage;
|
const int page = m_CurrentPage;
|
||||||
|
|
||||||
@@ -383,7 +385,7 @@ void ModeSelectorMaxType2::TweenOffScreen()
|
|||||||
|
|
||||||
for( unsigned c=0; c<m_ModeChoices[page].size(); c++ )
|
for( unsigned c=0; c<m_ModeChoices[page].size(); c++ )
|
||||||
{
|
{
|
||||||
const float fPause = c*0.2f;
|
// const float fPause = c*0.2f;
|
||||||
|
|
||||||
// roll up
|
// roll up
|
||||||
//m_sprPicture[page][c].FadeOff( fPause, "foldy bounce", 0.3f );
|
//m_sprPicture[page][c].FadeOff( fPause, "foldy bounce", 0.3f );
|
||||||
@@ -396,12 +398,12 @@ void ModeSelectorMaxType2::TweenOffScreen()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float ModeSelectorMaxType2::GetCursorX( PlayerNumber pn )
|
float ScreenSelectMaxType2::GetCursorX( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
return m_sprPicture[m_CurrentPage][m_iChoiceOnPage[pn]].GetX() + CURSOR_OFFSET_X_FROM_PICTURE(pn);
|
return m_sprPicture[m_CurrentPage][m_iChoiceOnPage[pn]].GetX() + CURSOR_OFFSET_X_FROM_PICTURE(pn);
|
||||||
}
|
}
|
||||||
|
|
||||||
float ModeSelectorMaxType2::GetCursorY( PlayerNumber pn )
|
float ScreenSelectMaxType2::GetCursorY( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
return m_sprPicture[m_CurrentPage][m_iChoiceOnPage[pn]].GetY() + CURSOR_OFFSET_Y_FROM_PICTURE(pn);
|
return m_sprPicture[m_CurrentPage][m_iChoiceOnPage[pn]].GetY() + CURSOR_OFFSET_Y_FROM_PICTURE(pn);
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#ifndef ModeSelectorMaxType2_H
|
#ifndef ScreenSelectMaxType2_H
|
||||||
#define ModeSelectorMaxType2_H
|
#define ScreenSelectMaxType2_H
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: ModeSelectorMaxType2
|
Class: ScreenSelectMaxType2
|
||||||
|
|
||||||
Desc: Abstract class for a widget that selects a ModeChoice
|
Desc: Abstract class for a widget that selects a ModeChoice
|
||||||
|
|
||||||
@@ -12,25 +12,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "ModeSelector.h"
|
#include "ScreenSelect.h"
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "BitmapText.h"
|
#include "BitmapText.h"
|
||||||
#include "RageSound.h"
|
#include "RageSound.h"
|
||||||
#include "RandomSample.h"
|
#include "RandomSample.h"
|
||||||
|
|
||||||
|
#define MAX_CHOICES_PER_PAGE 15
|
||||||
|
|
||||||
#define MAX_CHOICES_PER_PAGE 10
|
class ScreenSelectMaxType2 : public ScreenSelect
|
||||||
|
|
||||||
|
|
||||||
class ModeSelectorMaxType2 : public ModeSelector
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum Page { PAGE_1, PAGE_2, NUM_PAGES };
|
ScreenSelectMaxType2();
|
||||||
|
|
||||||
ModeSelectorMaxType2();
|
|
||||||
virtual ~ModeSelectorMaxType2();
|
|
||||||
|
|
||||||
virtual void Init( const vector<ModeChoice>& choices, CString sClassName, CString sThemeElementPrefix );
|
|
||||||
|
|
||||||
virtual void Update( float fDelta );
|
virtual void Update( float fDelta );
|
||||||
|
|
||||||
@@ -43,12 +36,14 @@ public:
|
|||||||
virtual void TweenOffScreen();
|
virtual void TweenOffScreen();
|
||||||
virtual void TweenOnScreen();
|
virtual void TweenOnScreen();
|
||||||
|
|
||||||
virtual void GetSelectedModeChoice( PlayerNumber pn, ModeChoice* pModeChoiceOut );
|
|
||||||
virtual void UpdateSelectableChoices();
|
|
||||||
|
|
||||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
enum Page { PAGE_1, PAGE_2, NUM_PAGES };
|
||||||
|
|
||||||
|
virtual int GetSelectionIndex( PlayerNumber pn );
|
||||||
|
virtual void UpdateSelectableChoices();
|
||||||
|
|
||||||
float GetCursorX( PlayerNumber pn );
|
float GetCursorX( PlayerNumber pn );
|
||||||
float GetCursorY( PlayerNumber pn );
|
float GetCursorY( PlayerNumber pn );
|
||||||
void ChangeWithinPage( PlayerNumber pn, int iNewChoice, bool bChangingPages );
|
void ChangeWithinPage( PlayerNumber pn, int iNewChoice, bool bChangingPages );
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
/****************************************
|
/****************************************
|
||||||
ScreenEzSelectPlayer,cpp
|
ScreenSelectModeOld,cpp
|
||||||
Desc: See Header
|
Desc: See Header
|
||||||
Copyright (C):
|
Copyright (C):
|
||||||
Andrew Livy
|
Andrew Livy
|
||||||
@@ -247,7 +247,7 @@ void ScreenSelectMode::RefreshModeChoices()
|
|||||||
{
|
{
|
||||||
int iNumSidesJoined = GAMESTATE->GetNumSidesJoined();
|
int iNumSidesJoined = GAMESTATE->GetNumSidesJoined();
|
||||||
|
|
||||||
GAMEMAN->GetModesChoicesForGame( GAMESTATE->m_CurGame, m_apPossibleModeChoices );
|
// GAMEMAN->GetModesChoicesForGame( GAMESTATE->m_CurGame, m_apPossibleModeChoices ); // FIXME
|
||||||
ASSERT( !m_apPossibleModeChoices.empty() );
|
ASSERT( !m_apPossibleModeChoices.empty() );
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Andrew Livy
|
|||||||
|
|
||||||
/* Class Definition */
|
/* Class Definition */
|
||||||
|
|
||||||
const int MAX_MODE_CHOICES = 10;
|
#define MAX_MODE_CHOICES2 10
|
||||||
|
|
||||||
|
|
||||||
class ScreenSelectMode : public Screen
|
class ScreenSelectMode : public Screen
|
||||||
@@ -56,14 +56,14 @@ protected:
|
|||||||
Sprite m_ChoiceListHighlight;
|
Sprite m_ChoiceListHighlight;
|
||||||
Sprite m_Guide;
|
Sprite m_Guide;
|
||||||
|
|
||||||
Sprite m_Infotext[MAX_MODE_CHOICES];
|
Sprite m_Infotext[MAX_MODE_CHOICES2];
|
||||||
|
|
||||||
vector<ModeChoice*> m_apPossibleModeChoices;
|
vector<ModeChoice*> m_apPossibleModeChoices;
|
||||||
|
|
||||||
ScrollingList m_ScrollingList;
|
ScrollingList m_ScrollingList;
|
||||||
void RefreshModeChoices();
|
void RefreshModeChoices();
|
||||||
|
|
||||||
BGAnimation m_BGAnimations[MAX_MODE_CHOICES];
|
BGAnimation m_BGAnimations[MAX_MODE_CHOICES2];
|
||||||
MenuElements m_Menu;
|
MenuElements m_Menu;
|
||||||
|
|
||||||
RageSound m_soundSelect;
|
RageSound m_soundSelect;
|
||||||
|
|||||||
@@ -1,220 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ScreenSelectStyle
|
|
||||||
|
|
||||||
Desc: See Header.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ScreenSelectStyle.h"
|
|
||||||
#include "ScreenManager.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "RageSoundManager.h"
|
|
||||||
#include "GameConstantsAndTypes.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "GameManager.h"
|
|
||||||
#include "RageLog.h"
|
|
||||||
#include "AnnouncerManager.h"
|
|
||||||
#include "GameState.h"
|
|
||||||
#include "GameConstantsAndTypes.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
#include "ModeSelector.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define SELECTOR THEME->GetMetric ("ScreenSelectStyle","Selector")
|
|
||||||
#define HELP_TEXT THEME->GetMetric ("ScreenSelectStyle","HelpText")
|
|
||||||
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectStyle","TimerSeconds")
|
|
||||||
#define NEXT_SCREEN THEME->GetMetric ("ScreenSelectStyle","NextScreen")
|
|
||||||
|
|
||||||
|
|
||||||
ScreenSelectStyle::ScreenSelectStyle()
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectStyle::ScreenSelectStyle()" );
|
|
||||||
|
|
||||||
|
|
||||||
GAMESTATE->m_bPlayersCanJoin = true;
|
|
||||||
|
|
||||||
|
|
||||||
vector<ModeChoice> aModeChoices;
|
|
||||||
|
|
||||||
vector<Style> aStyles;
|
|
||||||
GAMEMAN->GetStylesForGame( GAMESTATE->m_CurGame, aStyles );
|
|
||||||
ASSERT( !aStyles.empty() ); // every game should have at least one Style, or else why have the Game? :-)
|
|
||||||
|
|
||||||
for( unsigned s=0; s<aStyles.size(); s++ )
|
|
||||||
{
|
|
||||||
Style style = aStyles[s];
|
|
||||||
const StyleDef* pStyleDef = GAMEMAN->GetStyleDefForStyle(aStyles[s]);
|
|
||||||
|
|
||||||
int iNumSidesJoinedToPlay;
|
|
||||||
switch( pStyleDef->m_StyleType )
|
|
||||||
{
|
|
||||||
case StyleDef::ONE_PLAYER_ONE_CREDIT: iNumSidesJoinedToPlay = 1; break;
|
|
||||||
case StyleDef::TWO_PLAYERS_TWO_CREDITS: iNumSidesJoinedToPlay = 2; break;
|
|
||||||
case StyleDef::ONE_PLAYER_TWO_CREDITS: iNumSidesJoinedToPlay = 2; break;
|
|
||||||
default: ASSERT(0); iNumSidesJoinedToPlay = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ModeChoice mc = {
|
|
||||||
GAMESTATE->m_CurGame,
|
|
||||||
PLAY_MODE_INVALID,
|
|
||||||
style,
|
|
||||||
DIFFICULTY_INVALID,
|
|
||||||
"",
|
|
||||||
iNumSidesJoinedToPlay
|
|
||||||
};
|
|
||||||
strcpy( mc.name, pStyleDef->m_szName );
|
|
||||||
aModeChoices.push_back( mc );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_pSelector = ModeSelector::Create( SELECTOR );
|
|
||||||
m_pSelector->Init( aModeChoices, "ScreenSelectStyle", "select style" );
|
|
||||||
this->AddChild( m_pSelector );
|
|
||||||
|
|
||||||
m_Menu.Load(
|
|
||||||
THEME->GetPathTo("BGAnimations","select style"),
|
|
||||||
THEME->GetPathTo("Graphics","select style top edge"),
|
|
||||||
HELP_TEXT, false, true, TIMER_SECONDS
|
|
||||||
);
|
|
||||||
this->AddChild( &m_Menu );
|
|
||||||
|
|
||||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("select style intro") );
|
|
||||||
|
|
||||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","select style music") );
|
|
||||||
|
|
||||||
m_Menu.TweenOnScreenFromBlack( SM_None );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ScreenSelectStyle::~ScreenSelectStyle()
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectStyle::~ScreenSelectStyle()" );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::Update( float fDelta )
|
|
||||||
{
|
|
||||||
Screen::Update( fDelta );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::DrawPrimitives()
|
|
||||||
{
|
|
||||||
m_Menu.DrawBottomLayer();
|
|
||||||
Screen::DrawPrimitives();
|
|
||||||
m_Menu.DrawTopLayer();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
|
||||||
{
|
|
||||||
LOG->Trace( "ScreenSelectStyle::Input()" );
|
|
||||||
|
|
||||||
if( m_Menu.IsClosing() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::HandleScreenMessage( const ScreenMessage SM )
|
|
||||||
{
|
|
||||||
switch( SM )
|
|
||||||
{
|
|
||||||
case SM_BeginFadingOut: // sent by our ModeSelector
|
|
||||||
ModeChoice mc;
|
|
||||||
m_pSelector->GetSelectedModeChoice( GAMESTATE->m_MasterPlayerNumber, &mc );
|
|
||||||
GAMESTATE->ApplyModeChoice( &mc, GAMESTATE->m_MasterPlayerNumber );
|
|
||||||
|
|
||||||
GAMESTATE->m_bPlayersCanJoin = false;
|
|
||||||
SCREENMAN->RefreshCreditsMessages();
|
|
||||||
|
|
||||||
m_Menu.StopTimer();
|
|
||||||
m_pSelector->TweenOffScreen();
|
|
||||||
|
|
||||||
m_Menu.TweenOffScreenToMenu( SM_GoToNextScreen );
|
|
||||||
break;
|
|
||||||
case SM_MenuTimer:
|
|
||||||
{
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsPlayerEnabled(p) )
|
|
||||||
MenuStart( (PlayerNumber)p );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SM_GoToPrevScreen:
|
|
||||||
SOUNDMAN->StopMusic();
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
|
||||||
break;
|
|
||||||
case SM_GoToNextScreen:
|
|
||||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuLeft( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuLeft( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuRight( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuRight( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuUp( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuUp( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuDown( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
m_pSelector->MenuDown( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuStart( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
if( pn!=PLAYER_INVALID && !GAMESTATE->m_bSideIsJoined[pn] )
|
|
||||||
{
|
|
||||||
/* I think JP should allow playing two-pad singleplayer modes (doubles),
|
|
||||||
* but not two-pad two-player modes (battle). (Battle mode isn't "joint".)
|
|
||||||
* That means we should leave player-entry logic alone and simply enable
|
|
||||||
* couples mode if JP is on and only one person has clicked in. (However,
|
|
||||||
* that means we'll display couples even if we don't really know if we have
|
|
||||||
* a second pad, which is a little annoying.)
|
|
||||||
*
|
|
||||||
* Also, credit deduction should be handled in StepMania.cpp (along with
|
|
||||||
* the coin logic) using GAMESTATE->m_bPlayersCanJoin, since there
|
|
||||||
* are other screens you can join (eg ScreenCaution). -glenn */
|
|
||||||
if( PREFSMAN->m_CoinMode == PrefsManager::COIN_PAY )
|
|
||||||
{
|
|
||||||
if( !PREFSMAN->m_bJointPremium )
|
|
||||||
{
|
|
||||||
if( GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit )
|
|
||||||
{
|
|
||||||
/* Joint Premium is NOT enabled, and we do not have enough credits */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Joint Premium is NOT enabled, but we have enough credits. Pay up! */
|
|
||||||
GAMESTATE->m_iCoins -= PREFSMAN->m_iCoinsPerCredit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If credits had to be used, it's already taken care of.. add the player */
|
|
||||||
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu start") );
|
|
||||||
GAMESTATE->m_bSideIsJoined[pn] = true;
|
|
||||||
SCREENMAN->RefreshCreditsMessages();
|
|
||||||
m_pSelector->UpdateSelectableChoices();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_pSelector->MenuStart( pn );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenSelectStyle::MenuBack( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
SOUNDMAN->StopMusic();
|
|
||||||
|
|
||||||
m_Menu.TweenOffScreenToBlack( SM_GoToPrevScreen, true );
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#ifndef ScreenSelectStyle_H
|
|
||||||
#define ScreenSelectStyle_H
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: ScreenSelectStyle
|
|
||||||
|
|
||||||
Desc: Base class for Style, Difficulty, and Mode selection screens.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "Screen.h"
|
|
||||||
#include "MenuElements.h"
|
|
||||||
class ModeSelector;
|
|
||||||
|
|
||||||
class ScreenSelectStyle : public Screen
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ScreenSelectStyle();
|
|
||||||
virtual ~ScreenSelectStyle();
|
|
||||||
|
|
||||||
virtual void Update( float fDelta );
|
|
||||||
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 MenuLeft( PlayerNumber pn );
|
|
||||||
virtual void MenuRight( PlayerNumber pn );
|
|
||||||
virtual void MenuUp( PlayerNumber pn );
|
|
||||||
virtual void MenuDown( PlayerNumber pn );
|
|
||||||
virtual void MenuStart( PlayerNumber pn );
|
|
||||||
virtual void MenuBack( PlayerNumber pn );
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
MenuElements m_Menu;
|
|
||||||
|
|
||||||
ModeSelector* m_pSelector;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+30
-42
@@ -60,7 +60,7 @@ IntDir=.\../Release6
|
|||||||
TargetDir=\stepmania\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=StepMania
|
TargetName=StepMania
|
||||||
SOURCE="$(InputPath)"
|
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
|
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||||
# End Special Build Tool
|
# End Special Build Tool
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ IntDir=.\../Debug6
|
|||||||
TargetDir=\stepmania\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=StepMania-debug
|
TargetName=StepMania-debug
|
||||||
SOURCE="$(InputPath)"
|
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
|
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||||
# End Special Build Tool
|
# End Special Build Tool
|
||||||
|
|
||||||
@@ -371,6 +371,10 @@ SOURCE=.\Inventory.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ModeChoice.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\NoteData.cpp
|
SOURCE=.\NoteData.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1104,30 +1108,6 @@ SOURCE=.\MenuTimer.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ModeSelector.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ModeSelector.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ModeSelectorMaxType1.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ModeSelectorMaxType1.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ModeSelectorMaxType2.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ModeSelectorMaxType2.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\MusicBannerWheel.cpp
|
SOURCE=.\MusicBannerWheel.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1777,6 +1757,14 @@ SOURCE=.\ScreenSandbox.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelect.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelect.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectCourse.cpp
|
SOURCE=.\ScreenSelectCourse.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1785,14 +1773,6 @@ SOURCE=.\ScreenSelectCourse.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectDifficulty.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectDifficulty.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectDifficultyEX.cpp
|
SOURCE=.\ScreenSelectDifficultyEX.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1817,6 +1797,22 @@ SOURCE=.\ScreenSelectGroup.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelectMaxType1.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelectMaxType1.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelectMaxType2.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenSelectMaxType2.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectMode.cpp
|
SOURCE=.\ScreenSelectMode.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1833,14 +1829,6 @@ SOURCE=.\ScreenSelectMusic.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectStyle.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectStyle.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\ScreenSelectStyle5th.cpp
|
SOURCE=.\ScreenSelectStyle5th.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|||||||
@@ -375,18 +375,18 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<File
|
<File
|
||||||
RelativePath="ScreenSandbox.h">
|
RelativePath="ScreenSandbox.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelect.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelect.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectCourse.cpp">
|
RelativePath="ScreenSelectCourse.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectCourse.h">
|
RelativePath="ScreenSelectCourse.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="ScreenSelectDifficulty.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="ScreenSelectDifficulty.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectDifficultyEX.cpp">
|
RelativePath="ScreenSelectDifficultyEX.cpp">
|
||||||
</File>
|
</File>
|
||||||
@@ -405,6 +405,18 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectGroup.h">
|
RelativePath="ScreenSelectGroup.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelectMaxType1.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelectMaxType1.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelectMaxType2.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenSelectMaxType2.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectMode.cpp">
|
RelativePath="ScreenSelectMode.cpp">
|
||||||
</File>
|
</File>
|
||||||
@@ -417,12 +429,6 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectMusic.h">
|
RelativePath="ScreenSelectMusic.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="ScreenSelectStyle.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="ScreenSelectStyle.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenSelectStyle5th.cpp">
|
RelativePath="ScreenSelectStyle5th.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
Reference in New Issue
Block a user