fixed broken screen gameplay, started adding coin-op logic
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
----------------------- Version 3.01 ---------------------------
|
----------------------- Version 3.01 ---------------------------
|
||||||
|
NEW FEATURE: New High Score screen
|
||||||
|
NEW FEATURE: Full "attract" sequence
|
||||||
NEW FEATURE: .SM files can now contain UTF-8 text.
|
NEW FEATURE: .SM files can now contain UTF-8 text.
|
||||||
NEW FEATURE: New alignment tags for bitmap fonts.
|
NEW FEATURE: New alignment tags for bitmap fonts.
|
||||||
NEW FEATURE: Bitmap fonts now support full Unicode mapping.
|
NEW FEATURE: Bitmap fonts now support full Unicode mapping.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// - ScreenCaution
|
// - ScreenCaution
|
||||||
// - ScreenEz2SelectPlayer
|
// - ScreenEz2SelectPlayer
|
||||||
// - ScreenSelectMode
|
// - ScreenSelectMode
|
||||||
// - ScreenHowToPlay
|
// - ScreenInstructions
|
||||||
// - ScreenSelectCourse
|
// - ScreenSelectCourse
|
||||||
// - ScreenSelectDifficulty
|
// - ScreenSelectDifficulty
|
||||||
// - ScreenSelectGroup
|
// - ScreenSelectGroup
|
||||||
@@ -133,7 +133,7 @@ CursorShadowLengthY=10
|
|||||||
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=ScreenHowToPlay
|
NextScreenOni=ScreenInstructions
|
||||||
|
|
||||||
[ScreenSelectGroup]
|
[ScreenSelectGroup]
|
||||||
FrameX=180
|
FrameX=180
|
||||||
@@ -161,9 +161,9 @@ TitlesRows=10
|
|||||||
TitlesZoom=0.5
|
TitlesZoom=0.5
|
||||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||||
TimerSeconds=40
|
TimerSeconds=40
|
||||||
NextScreen=ScreenHowToPlay
|
NextScreen=ScreenInstructions
|
||||||
|
|
||||||
[ScreenHowToPlay]
|
[ScreenInstructions]
|
||||||
NextScreenArcade=ScreenSelectMusic
|
NextScreenArcade=ScreenSelectMusic
|
||||||
NextScreenOni=ScreenSelectCourse
|
NextScreenOni=ScreenSelectCourse
|
||||||
HelpText=Press START to continue
|
HelpText=Press START to continue
|
||||||
@@ -438,8 +438,8 @@ CreditsP1Y=472
|
|||||||
CreditsP2X=540
|
CreditsP2X=540
|
||||||
CreditsP2Y=472
|
CreditsP2Y=472
|
||||||
CreditsColor=1,1,1,1
|
CreditsColor=1,1,1,1
|
||||||
CreditsShadowLength=2
|
CreditsShadowLength=0
|
||||||
CreditsZoom=0.5
|
CreditsZoom=1.0
|
||||||
|
|
||||||
[WheelItemDisplay]
|
[WheelItemDisplay]
|
||||||
IconX=-136
|
IconX=-136
|
||||||
@@ -722,19 +722,19 @@ SecondsToShow=10
|
|||||||
NextScreen=ScreenHighScores
|
NextScreen=ScreenHighScores
|
||||||
|
|
||||||
[ScreenHighScores]
|
[ScreenHighScores]
|
||||||
SecondsToShow=10
|
SecondsToShow=30
|
||||||
NextScreen=ScreenMemoryCard
|
NextScreen=ScreenMemoryCard
|
||||||
|
|
||||||
[ScreenMemoryCard]
|
[ScreenMemoryCard]
|
||||||
SecondsToShow=10
|
SecondsToShow=5
|
||||||
NextScreen=ScreenWarning
|
NextScreen=ScreenWarning
|
||||||
|
|
||||||
[ScreenWarning]
|
[ScreenWarning]
|
||||||
SecondsToShow=10
|
SecondsToShow=5
|
||||||
NextScreen=ScreenCompany
|
NextScreen=ScreenCompany
|
||||||
|
|
||||||
[ScreenCompany]
|
[ScreenCompany]
|
||||||
SecondsToShow=10
|
SecondsToShow=5
|
||||||
NextScreen=ScreenAlbums
|
NextScreen=ScreenAlbums
|
||||||
|
|
||||||
[ScreenAlbums]
|
[ScreenAlbums]
|
||||||
@@ -742,9 +742,13 @@ SecondsToShow=10
|
|||||||
NextScreen=ScreenLogo
|
NextScreen=ScreenLogo
|
||||||
|
|
||||||
[ScreenLogo]
|
[ScreenLogo]
|
||||||
SecondsToShow=20
|
SecondsToShow=5
|
||||||
NextScreen=ScreenDemonstration
|
NextScreen=ScreenDemonstration
|
||||||
|
|
||||||
[ScreenDemonstration]
|
[ScreenDemonstration]
|
||||||
SecondsToShow=30
|
SecondsToShow=30
|
||||||
|
NextScreen=ScreenHowToPlay
|
||||||
|
|
||||||
|
[ScreenHowToPlay]
|
||||||
|
SecondsToShow=30
|
||||||
NextScreen=ScreenUnlock
|
NextScreen=ScreenUnlock
|
||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
Actor::Actor()
|
Actor::Actor()
|
||||||
{
|
{
|
||||||
|
m_bFirstUpdate = true;
|
||||||
|
|
||||||
m_iNumTweenStates = 0;
|
m_iNumTweenStates = 0;
|
||||||
|
|
||||||
m_size = RageVector2( 1, 1 );
|
m_size = RageVector2( 1, 1 );
|
||||||
@@ -198,10 +200,26 @@ void Actor::UpdateTweening( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Actor::IsFirstUpdate()
|
||||||
|
{
|
||||||
|
return m_bFirstUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Actor::FirstUpdate()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void Actor::Update( float fDeltaTime )
|
void Actor::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
// LOG->Trace( "Actor::Update( %f )", fDeltaTime );
|
// LOG->Trace( "Actor::Update( %f )", fDeltaTime );
|
||||||
|
|
||||||
|
if( m_bFirstUpdate )
|
||||||
|
{
|
||||||
|
this->FirstUpdate();
|
||||||
|
m_bFirstUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
// update effect
|
// update effect
|
||||||
switch( m_Effect )
|
switch( m_Effect )
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-10
@@ -49,6 +49,8 @@ public:
|
|||||||
virtual void BeginDraw(); // pushes transform onto world matrix stack
|
virtual void BeginDraw(); // pushes transform onto world matrix stack
|
||||||
virtual void DrawPrimitives() = 0; // override with Actor specific action
|
virtual void DrawPrimitives() = 0; // override with Actor specific action
|
||||||
virtual void EndDraw(); // pops transform from world matrix stack
|
virtual void EndDraw(); // pops transform from world matrix stack
|
||||||
|
bool IsFirstUpdate();
|
||||||
|
virtual void FirstUpdate(); // called after object is constructed, but before the first call to Update()
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
virtual void UpdateTweening( float fDeltaTime );
|
virtual void UpdateTweening( float fDeltaTime );
|
||||||
|
|
||||||
@@ -188,19 +190,11 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/*
|
bool m_bFirstUpdate;
|
||||||
RageVector2 m_size; // width, height
|
|
||||||
RageVector3 m_pos; // X-Y coordinate of where the center point will appear on screen
|
|
||||||
RageVector3 m_rotation; // X, Y, and Z m_rotation
|
|
||||||
RageVector2 m_scale; // X and Y zooming
|
|
||||||
RageColor m_colorDiffuse[4]; // 4 corner colors - left to right, top to bottom
|
|
||||||
RageColor m_colorGlow;
|
|
||||||
*/
|
|
||||||
//
|
//
|
||||||
// Stuff for tweening
|
// Stuff for tweening
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
struct TweenState
|
struct TweenState
|
||||||
{
|
{
|
||||||
// start and end position for tweening
|
// start and end position for tweening
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ enum // DanceButtons
|
|||||||
DANCE_BUTTON_MENURIGHT,
|
DANCE_BUTTON_MENURIGHT,
|
||||||
DANCE_BUTTON_MENUUP,
|
DANCE_BUTTON_MENUUP,
|
||||||
DANCE_BUTTON_MENUDOWN,
|
DANCE_BUTTON_MENUDOWN,
|
||||||
|
DANCE_BUTTON_INSERTCOIN,
|
||||||
NUM_DANCE_BUTTONS, // leave this at the end
|
NUM_DANCE_BUTTONS, // leave this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -50,6 +51,7 @@ enum // PumpButtons
|
|||||||
PUMP_BUTTON_MENURIGHT,
|
PUMP_BUTTON_MENURIGHT,
|
||||||
PUMP_BUTTON_MENUUP,
|
PUMP_BUTTON_MENUUP,
|
||||||
PUMP_BUTTON_MENUDOWN,
|
PUMP_BUTTON_MENUDOWN,
|
||||||
|
PUMP_BUTTON_INSERTCOIN,
|
||||||
NUM_PUMP_BUTTONS, // leave this at the end
|
NUM_PUMP_BUTTONS, // leave this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -68,6 +70,7 @@ enum // EZ2Buttons
|
|||||||
EZ2_BUTTON_MENURIGHT,
|
EZ2_BUTTON_MENURIGHT,
|
||||||
EZ2_BUTTON_MENUUP,
|
EZ2_BUTTON_MENUUP,
|
||||||
EZ2_BUTTON_MENUDOWN,
|
EZ2_BUTTON_MENUDOWN,
|
||||||
|
EZ2_BUTTON_INSERTCOIN,
|
||||||
NUM_EZ2_BUTTONS, // leave this at the end
|
NUM_EZ2_BUTTONS, // leave this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -84,6 +87,7 @@ enum // ParaButtons
|
|||||||
PARA_BUTTON_MENURIGHT,
|
PARA_BUTTON_MENURIGHT,
|
||||||
PARA_BUTTON_MENUUP,
|
PARA_BUTTON_MENUUP,
|
||||||
PARA_BUTTON_MENUDOWN,
|
PARA_BUTTON_MENUDOWN,
|
||||||
|
PARA_BUTTON_INSERTCOIN,
|
||||||
NUM_PARA_BUTTONS, // leave this at the end
|
NUM_PARA_BUTTONS, // leave this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -103,6 +107,7 @@ enum // 3DDX Buttons
|
|||||||
DS3DDX_BUTTON_MENURIGHT,
|
DS3DDX_BUTTON_MENURIGHT,
|
||||||
DS3DDX_BUTTON_MENUUP,
|
DS3DDX_BUTTON_MENUUP,
|
||||||
DS3DDX_BUTTON_MENUDOWN,
|
DS3DDX_BUTTON_MENUDOWN,
|
||||||
|
DS3DDX_BUTTON_INSERTCOIN,
|
||||||
NUM_DS3DDX_BUTTONS, // leave this at the end.
|
NUM_DS3DDX_BUTTONS, // leave this at the end.
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -125,6 +130,7 @@ enum // BM Buttons
|
|||||||
BM_BUTTON_MENURIGHT,
|
BM_BUTTON_MENURIGHT,
|
||||||
BM_BUTTON_MENUUP,
|
BM_BUTTON_MENUUP,
|
||||||
BM_BUTTON_MENUDOWN,
|
BM_BUTTON_MENUDOWN,
|
||||||
|
BM_BUTTON_INSERTCOIN,
|
||||||
NUM_BM_BUTTONS, // leave this at the end.
|
NUM_BM_BUTTONS, // leave this at the end.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuLeft)",
|
"(MenuLeft)",
|
||||||
@@ -92,6 +93,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
DANCE_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
DANCE_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -100,6 +102,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
DANCE_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
DANCE_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
DANCE_BUTTON_START, // MENU_BUTTON_START
|
DANCE_BUTTON_START, // MENU_BUTTON_START
|
||||||
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
DANCE_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
DANCE_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
DANCE_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -108,6 +111,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
DANCE_BUTTON_DOWN, // MENU_BUTTON_DOWN
|
DANCE_BUTTON_DOWN, // MENU_BUTTON_DOWN
|
||||||
DANCE_BUTTON_START, // MENU_BUTTON_START
|
DANCE_BUTTON_START, // MENU_BUTTON_START
|
||||||
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
DANCE_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -123,6 +127,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // DANCE_BUTTON_MENURIGHT
|
-1, //no default key // DANCE_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // DANCE_BUTTON_MENUUP
|
SDLK_UP, // DANCE_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // DANCE_BUTTON_MENUDOWN
|
SDLK_DOWN, // DANCE_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // DANCE_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
SDLK_KP4, // DANCE_BUTTON_LEFT,
|
SDLK_KP4, // DANCE_BUTTON_LEFT,
|
||||||
@@ -137,6 +142,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // DANCE_BUTTON_MENURIGHT
|
-1, //no default key // DANCE_BUTTON_MENURIGHT
|
||||||
-1, //no default key // DANCE_BUTTON_MENUUP
|
-1, //no default key // DANCE_BUTTON_MENUUP
|
||||||
-1, //no default key // DANCE_BUTTON_MENUDOWN
|
-1, //no default key // DANCE_BUTTON_MENUDOWN
|
||||||
|
SDLK_F2, // DANCE_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -157,6 +163,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuUp)",
|
"(MenuUp)",
|
||||||
@@ -170,6 +177,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
PUMP_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
PUMP_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -178,6 +186,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
PUMP_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
PUMP_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
PUMP_BUTTON_START, // MENU_BUTTON_START
|
PUMP_BUTTON_START, // MENU_BUTTON_START
|
||||||
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
PUMP_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
PUMP_BUTTON_DOWNLEFT, // MENU_BUTTON_LEFT
|
PUMP_BUTTON_DOWNLEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -186,6 +195,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
PUMP_BUTTON_UPRIGHT, // MENU_BUTTON_DOWN
|
PUMP_BUTTON_UPRIGHT, // MENU_BUTTON_DOWN
|
||||||
PUMP_BUTTON_CENTER, // MENU_BUTTON_START
|
PUMP_BUTTON_CENTER, // MENU_BUTTON_START
|
||||||
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
PUMP_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -200,6 +210,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
SDLK_RIGHT, // PUMP_BUTTON_MENURIGHT
|
SDLK_RIGHT, // PUMP_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // PUMP_BUTTON_MENUUP
|
SDLK_UP, // PUMP_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // PUMP_BUTTON_MENUDOWN
|
SDLK_DOWN, // PUMP_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // PUMP_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
SDLK_KP7, // PUMP_BUTTON_UPLEFT,
|
SDLK_KP7, // PUMP_BUTTON_UPLEFT,
|
||||||
@@ -213,6 +224,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // PUMP_BUTTON_MENURIGHT
|
-1, //no default key // PUMP_BUTTON_MENURIGHT
|
||||||
-1, //no default key // PUMP_BUTTON_MENUUP
|
-1, //no default key // PUMP_BUTTON_MENUUP
|
||||||
-1, //no default key // PUMP_BUTTON_MENUDOWN
|
-1, //no default key // PUMP_BUTTON_MENUDOWN
|
||||||
|
SDLK_F2, // PUMP_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -235,6 +247,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuUp)",
|
"(MenuUp)",
|
||||||
@@ -250,6 +263,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
EZ2_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
EZ2_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -258,6 +272,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
EZ2_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
EZ2_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
EZ2_BUTTON_START, // MENU_BUTTON_START
|
EZ2_BUTTON_START, // MENU_BUTTON_START
|
||||||
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
EZ2_BUTTON_INSERTCOIN, // MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
EZ2_BUTTON_HANDUPLEFT, // MENU_BUTTON_LEFT
|
EZ2_BUTTON_HANDUPLEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -266,6 +281,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
EZ2_BUTTON_FOOTUPRIGHT, // MENU_BUTTON_DOWN
|
EZ2_BUTTON_FOOTUPRIGHT, // MENU_BUTTON_DOWN
|
||||||
EZ2_BUTTON_FOOTDOWN, // MENU_BUTTON_START
|
EZ2_BUTTON_FOOTDOWN, // MENU_BUTTON_START
|
||||||
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
EZ2_BUTTON_INSERTCOIN, // MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -282,6 +298,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
SDLK_RIGHT, // EZ2_BUTTON_MENURIGHT
|
SDLK_RIGHT, // EZ2_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // EZ2_BUTTON_MENUUP
|
SDLK_UP, // EZ2_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // EZ2_BUTTON_MENUDOWN
|
SDLK_DOWN, // EZ2_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // EZ2_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
-1, // EZ2_BUTTON_FOOTUPLEFT,
|
-1, // EZ2_BUTTON_FOOTUPLEFT,
|
||||||
@@ -297,6 +314,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // EZ2_BUTTON_MENURIGHT
|
-1, //no default key // EZ2_BUTTON_MENURIGHT
|
||||||
-1, //no default key // EZ2_BUTTON_MENUUP
|
-1, //no default key // EZ2_BUTTON_MENUUP
|
||||||
-1, //no default key // EZ2_BUTTON_MENUDOWN
|
-1, //no default key // EZ2_BUTTON_MENUDOWN
|
||||||
|
SDLK_F2, // EZ2_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -317,6 +335,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuLeft)",
|
"(MenuLeft)",
|
||||||
@@ -330,6 +349,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
PARA_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
PARA_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -338,6 +358,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
PARA_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
PARA_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
PARA_BUTTON_START, // MENU_BUTTON_START
|
PARA_BUTTON_START, // MENU_BUTTON_START
|
||||||
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
PARA_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
PARA_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
PARA_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -346,6 +367,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
PARA_BUTTON_UPLEFT, // MENU_BUTTON_DOWN
|
PARA_BUTTON_UPLEFT, // MENU_BUTTON_DOWN
|
||||||
PARA_BUTTON_START, // MENU_BUTTON_START
|
PARA_BUTTON_START, // MENU_BUTTON_START
|
||||||
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
PARA_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -360,6 +382,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
SDLK_RIGHT, //no default key // PARA_BUTTON_MENURIGHT
|
SDLK_RIGHT, //no default key // PARA_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // PARA_BUTTON_MENUUP
|
SDLK_UP, // PARA_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // PARA_BUTTON_MENUDOWN
|
SDLK_DOWN, // PARA_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // PARA_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
-1, // PARA_BUTTON_LEFT,
|
-1, // PARA_BUTTON_LEFT,
|
||||||
@@ -373,6 +396,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // PARA_BUTTON_MENURIGHT
|
-1, //no default key // PARA_BUTTON_MENURIGHT
|
||||||
-1, // PARA_BUTTON_MENUUP
|
-1, // PARA_BUTTON_MENUUP
|
||||||
-1,
|
-1,
|
||||||
|
-1, // PARA_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -396,6 +420,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuLeft)",
|
"(MenuLeft)",
|
||||||
@@ -412,6 +437,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
DS3DDX_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
DS3DDX_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -420,6 +446,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
DS3DDX_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
DS3DDX_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
||||||
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
DS3DDX_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
DS3DDX_BUTTON_HANDLEFT, // MENU_BUTTON_LEFT
|
DS3DDX_BUTTON_HANDLEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -428,6 +455,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
DS3DDX_BUTTON_HANDDOWN, // MENU_BUTTON_DOWN
|
DS3DDX_BUTTON_HANDDOWN, // MENU_BUTTON_DOWN
|
||||||
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
||||||
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
DS3DDX_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -445,6 +473,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
SDLK_RIGHT, //no default key // DS3DDX_BUTTON_MENURIGHT
|
SDLK_RIGHT, //no default key // DS3DDX_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // DS3DDX_BUTTON_MENUUP
|
SDLK_UP, // DS3DDX_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // DS3DDX_BUTTON_MENUDOWN
|
SDLK_DOWN, // DS3DDX_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // DS3DDX_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
-1, // DS3DDX_BUTTON_HANDLEFT,
|
-1, // DS3DDX_BUTTON_HANDLEFT,
|
||||||
@@ -461,6 +490,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, //no default key // DS3DDX_BUTTON_MENURIGHT
|
-1, //no default key // DS3DDX_BUTTON_MENURIGHT
|
||||||
-1, // DS3DDX_BUTTON_MENUUP
|
-1, // DS3DDX_BUTTON_MENUUP
|
||||||
-1, // DS3DDX_BUTTON_MENUDOWN
|
-1, // DS3DDX_BUTTON_MENUDOWN
|
||||||
|
-1, // DS3DDX_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -485,6 +515,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"MenuRight",
|
"MenuRight",
|
||||||
"MenuUp",
|
"MenuUp",
|
||||||
"MenuDown",
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
},
|
},
|
||||||
{ // m_szSecondaryFunction
|
{ // m_szSecondaryFunction
|
||||||
"(MenuLeft)",
|
"(MenuLeft)",
|
||||||
@@ -503,6 +534,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
"(dedicated)",
|
"(dedicated)",
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
{ // m_DedicatedMenuButton
|
{ // m_DedicatedMenuButton
|
||||||
BM_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
BM_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
@@ -511,6 +543,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
BM_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
BM_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
BM_BUTTON_START, // MENU_BUTTON_START
|
BM_BUTTON_START, // MENU_BUTTON_START
|
||||||
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
||||||
|
BM_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_SecondaryMenuButton
|
{ // m_SecondaryMenuButton
|
||||||
BM_BUTTON_KEY1, // MENU_BUTTON_LEFT
|
BM_BUTTON_KEY1, // MENU_BUTTON_LEFT
|
||||||
@@ -519,6 +552,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
BM_BUTTON_SCRATCHDOWN, // MENU_BUTTON_DOWN
|
BM_BUTTON_SCRATCHDOWN, // MENU_BUTTON_DOWN
|
||||||
BM_BUTTON_START, // MENU_BUTTON_START
|
BM_BUTTON_START, // MENU_BUTTON_START
|
||||||
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
||||||
|
BM_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // m_iDefaultKeyboardKey
|
{ // m_iDefaultKeyboardKey
|
||||||
{ // PLAYER_1
|
{ // PLAYER_1
|
||||||
@@ -537,6 +571,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
SDLK_RIGHT, // BM_BUTTON_MENURIGHT
|
SDLK_RIGHT, // BM_BUTTON_MENURIGHT
|
||||||
SDLK_UP, // BM_BUTTON_MENUUP
|
SDLK_UP, // BM_BUTTON_MENUUP
|
||||||
SDLK_DOWN, // BM_BUTTON_MENUDOWN
|
SDLK_DOWN, // BM_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // BM_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
{ // PLAYER_2
|
{ // PLAYER_2
|
||||||
-1, // BM_BUTTON_KEY1,
|
-1, // BM_BUTTON_KEY1,
|
||||||
@@ -554,6 +589,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
-1, // BM_BUTTON_MENURIGHT
|
-1, // BM_BUTTON_MENURIGHT
|
||||||
-1, // BM_BUTTON_MENUUP
|
-1, // BM_BUTTON_MENUUP
|
||||||
-1, // BM_BUTTON_MENUDOWN
|
-1, // BM_BUTTON_MENUDOWN
|
||||||
|
-1, // BM_BUTTON_INSERTCOIN
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ enum MenuButton
|
|||||||
MENU_BUTTON_DOWN,
|
MENU_BUTTON_DOWN,
|
||||||
MENU_BUTTON_START,
|
MENU_BUTTON_START,
|
||||||
MENU_BUTTON_BACK,
|
MENU_BUTTON_BACK,
|
||||||
|
MENU_BUTTON_INSERTCOIN,
|
||||||
NUM_MENU_BUTTONS, // leave this at the end
|
NUM_MENU_BUTTONS, // leave this at the end
|
||||||
MENU_BUTTON_INVALID
|
MENU_BUTTON_INVALID
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
Screen::Screen()
|
Screen::Screen()
|
||||||
{
|
{
|
||||||
m_FirstUpdate = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Screen::~Screen()
|
Screen::~Screen()
|
||||||
@@ -106,10 +105,3 @@ void Screen::SendScreenMessage( ScreenMessage SM, float fDelay )
|
|||||||
QSM.fDelayRemaining = fDelay;
|
QSM.fDelayRemaining = fDelay;
|
||||||
m_QueuedMessages.push_back( QSM );
|
m_QueuedMessages.push_back( QSM );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Screen::FirstUpdate()
|
|
||||||
{
|
|
||||||
bool ret = m_FirstUpdate;
|
|
||||||
m_FirstUpdate = false;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ public:
|
|||||||
void SendScreenMessage( const ScreenMessage SM, const float fDelay );
|
void SendScreenMessage( const ScreenMessage SM, const float fDelay );
|
||||||
void ClearMessageQueue() { m_QueuedMessages.clear(); }
|
void ClearMessageQueue() { m_QueuedMessages.clear(); }
|
||||||
|
|
||||||
/* Used only by ScreenManager::Update. */
|
|
||||||
bool FirstUpdate();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// structure for holding messages sent to a Screen
|
// structure for holding messages sent to a Screen
|
||||||
|
|||||||
@@ -37,33 +37,6 @@ const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+3);
|
|||||||
ScreenAttract::ScreenAttract()
|
ScreenAttract::ScreenAttract()
|
||||||
{
|
{
|
||||||
LOG->Trace( "ScreenAttract::ScreenAttract()" );
|
LOG->Trace( "ScreenAttract::ScreenAttract()" );
|
||||||
|
|
||||||
m_bFirstUpdate = true;
|
|
||||||
|
|
||||||
//
|
|
||||||
// I think it's better to do all the initialization here rather than have it scattered
|
|
||||||
// about in all the global singleton classes
|
|
||||||
//
|
|
||||||
GAMESTATE->Reset();
|
|
||||||
PREFSMAN->ReadGamePrefsFromDisk();
|
|
||||||
INPUTMAPPER->ReadMappingsFromDisk();
|
|
||||||
GAMESTATE->m_bPlayersCanJoin = true;
|
|
||||||
|
|
||||||
if( !GAMEMAN->DoesNoteSkinExist( GAMEMAN->GetCurNoteSkin() ) )
|
|
||||||
{
|
|
||||||
CStringArray asNoteSkinNames;
|
|
||||||
GAMEMAN->GetNoteSkinNames( asNoteSkinNames );
|
|
||||||
GAMEMAN->SwitchNoteSkin( asNoteSkinNames[0] );
|
|
||||||
}
|
|
||||||
if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) )
|
|
||||||
{
|
|
||||||
CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;
|
|
||||||
if( THEME->DoesThemeExist( sGameName ) )
|
|
||||||
THEME->SwitchTheme( sGameName );
|
|
||||||
else
|
|
||||||
THEME->SwitchTheme( "default" );
|
|
||||||
}
|
|
||||||
PREFSMAN->SaveGamePrefsToDisk();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -77,36 +50,59 @@ void ScreenAttract::Input( const DeviceInput& DeviceI, const InputEventType type
|
|||||||
{
|
{
|
||||||
// LOG->Trace( "ScreenAttract::Input()" );
|
// LOG->Trace( "ScreenAttract::Input()" );
|
||||||
|
|
||||||
|
if(type != IET_FIRST_PRESS) return; // don't care
|
||||||
|
|
||||||
if( m_Fade.IsClosing() )
|
if( m_Fade.IsClosing() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
if( MenuI.IsValid() )
|
||||||
|
{
|
||||||
|
switch( MenuI.button )
|
||||||
|
{
|
||||||
|
case MENU_BUTTON_LEFT:
|
||||||
|
case MENU_BUTTON_RIGHT:
|
||||||
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||||
|
break;
|
||||||
|
case MENU_BUTTON_START:
|
||||||
|
GAMESTATE->m_bSideIsJoined[MenuI.player] = true;
|
||||||
|
GAMESTATE->m_MasterPlayerNumber = MenuI.player;
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = false;
|
||||||
|
|
||||||
|
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") );
|
||||||
|
::Sleep( 1000 ); // do a little pause, like the arcade does
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||||
|
break;
|
||||||
|
case MENU_BUTTON_BACK:
|
||||||
|
Exit();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenAttract::FirstUpdate()
|
||||||
|
{
|
||||||
|
// We have to do initialization in the first update because this->GetElementName() won't
|
||||||
|
// work until the object has been fully constructed.
|
||||||
|
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations",this->GetElementName()) );
|
||||||
|
this->AddChild( &m_Background );
|
||||||
|
|
||||||
|
m_Fade.SetClosed();
|
||||||
|
m_Fade.OpenWipingRight( SM_None );
|
||||||
|
this->AddChild( &m_Fade );
|
||||||
|
|
||||||
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo(this->GetElementName()) );
|
||||||
|
|
||||||
|
m_soundStart.Load( THEME->GetPathTo("Sounds","menu start") );
|
||||||
|
|
||||||
|
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds",this->GetElementName() + " music") );
|
||||||
|
|
||||||
|
this->SendScreenMessage( SM_BeginFadingOut, SECONDS_TO_SHOW );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenAttract::Update( float fDelta )
|
void ScreenAttract::Update( float fDelta )
|
||||||
{
|
{
|
||||||
// We have to do initialization in the first update because this->GetElementName() won't
|
|
||||||
// work until the object has been fully constructed.
|
|
||||||
if( m_bFirstUpdate )
|
|
||||||
{
|
|
||||||
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations",this->GetElementName()) );
|
|
||||||
this->AddChild( &m_Background );
|
|
||||||
|
|
||||||
m_Fade.SetClosed();
|
|
||||||
m_Fade.OpenWipingRight( SM_None );
|
|
||||||
this->AddChild( &m_Fade );
|
|
||||||
|
|
||||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo(this->GetElementName()) );
|
|
||||||
|
|
||||||
m_soundStart.Load( THEME->GetPathTo("Sounds","menu start") );
|
|
||||||
|
|
||||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds",this->GetElementName() + " music") );
|
|
||||||
|
|
||||||
this->SendScreenMessage( SM_BeginFadingOut, SECONDS_TO_SHOW );
|
|
||||||
|
|
||||||
m_bFirstUpdate = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Screen::Update(fDelta);
|
Screen::Update(fDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,21 +111,11 @@ void ScreenAttract::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
switch( SM )
|
switch( SM )
|
||||||
{
|
{
|
||||||
case SM_BeginFadingOut:
|
case SM_BeginFadingOut:
|
||||||
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
if( !m_Fade.IsClosing() )
|
||||||
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||||
break;
|
break;
|
||||||
case SM_GoToNextScreen:
|
case SM_GoToNextScreen:
|
||||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenAttract::MenuStart( PlayerNumber pn )
|
|
||||||
{
|
|
||||||
GAMESTATE->m_bSideIsJoined[pn] = true;
|
|
||||||
GAMESTATE->m_MasterPlayerNumber = pn;
|
|
||||||
GAMESTATE->m_bPlayersCanJoin = false;
|
|
||||||
|
|
||||||
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") );
|
|
||||||
::Sleep( 1000 ); // do a little pause, like the arcade does
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: ScreenAttract
|
Class: ScreenAttract
|
||||||
|
|
||||||
Desc: Base class for all attraction screens.
|
Desc: Base class for all attraction screens. This class handles input
|
||||||
|
and coin logic
|
||||||
|
|
||||||
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
|
||||||
@@ -27,16 +28,15 @@ public:
|
|||||||
virtual ~ScreenAttract();
|
virtual ~ScreenAttract();
|
||||||
|
|
||||||
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||||
|
virtual void FirstUpdate();
|
||||||
virtual void Update( float fDelta );
|
virtual void Update( float fDelta );
|
||||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void MenuStart( PlayerNumber pn );
|
|
||||||
virtual CString GetMetricName() = 0; // used to loop up theme metrics
|
virtual CString GetMetricName() = 0; // used to loop up theme metrics
|
||||||
virtual CString GetElementName() = 0; // used to loop up theme elements
|
virtual CString GetElementName() = 0; // used to loop up theme elements
|
||||||
|
|
||||||
bool m_bFirstUpdate;
|
|
||||||
|
|
||||||
BGAnimation m_Background;
|
BGAnimation m_Background;
|
||||||
TransitionFade m_Fade;
|
TransitionFade m_Fade;
|
||||||
RandomSample m_soundStart;
|
RandomSample m_soundStart;
|
||||||
|
|||||||
@@ -10,3 +10,199 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ScreenDemonstration.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "SongManager.h"
|
||||||
|
#include "StepMania.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SECONDS_TO_SHOW THEME->GetMetricF("ScreenDemonstration","SecondsToShow")
|
||||||
|
#define NEXT_SCREEN THEME->GetMetric("ScreenDemonstration","NextScreen")
|
||||||
|
|
||||||
|
|
||||||
|
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+101); // MUST be same as in ScreenGameplay
|
||||||
|
const ScreenMessage SM_BeginFadingToNextScreen = ScreenMessage(SM_User+1000);
|
||||||
|
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+1002);
|
||||||
|
|
||||||
|
|
||||||
|
ScreenDemonstration::ScreenDemonstration() : ScreenGameplay( false )
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenDemonstration::ScreenDemonstration()" );
|
||||||
|
GAMESTATE->m_bDemonstration = true;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set the current song to prepare for a demonstration
|
||||||
|
//
|
||||||
|
|
||||||
|
switch( GAMESTATE->m_CurGame )
|
||||||
|
{
|
||||||
|
case GAME_DANCE: GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS; break;
|
||||||
|
case GAME_PUMP: GAMESTATE->m_CurStyle = STYLE_PUMP_VERSUS; break;
|
||||||
|
case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break;
|
||||||
|
case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break;
|
||||||
|
case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break;
|
||||||
|
case GAME_BM: GAMESTATE->m_CurStyle = STYLE_BM_SINGLE; break;
|
||||||
|
default: ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Search for a Song and Steps to play during the demo
|
||||||
|
//
|
||||||
|
for( int i=0; i<600; i++ ) // try 600 times
|
||||||
|
{
|
||||||
|
Song* pSong = SONGMAN->GetRandomSong();
|
||||||
|
if( pSong == NULL ) // returns NULL there are no songs
|
||||||
|
{
|
||||||
|
// we didn't find a song. Abort demonstration.
|
||||||
|
this->SendScreenMessage( SM_GoToNextScreen, 0 );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pSong->m_apNotes.empty() )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
if( !pSong->HasMusic() )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
vector<Notes*> apNotes;
|
||||||
|
pSong->GetNotesThatMatch( GAMESTATE->GetCurrentStyleDef()->m_NotesType, apNotes );
|
||||||
|
|
||||||
|
if( apNotes.empty() )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
// Found something we can use!
|
||||||
|
Notes* pNotes = apNotes[ rand()%apNotes.size() ];
|
||||||
|
|
||||||
|
GAMESTATE->m_pCurSong = pSong;
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
GAMESTATE->m_pCurNotes[p] = pNotes;
|
||||||
|
|
||||||
|
break; // done looking
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT( GAMESTATE->m_pCurSong );
|
||||||
|
|
||||||
|
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
|
||||||
|
|
||||||
|
// choose some cool options
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
{
|
||||||
|
if( !GAMESTATE->IsPlayerEnabled(p) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
GAMESTATE->m_PlayerOptions[p] = PlayerOptions();
|
||||||
|
|
||||||
|
if( RandomFloat(0,1)>0.8f )
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_fArrowScrollSpeed = 1.5f;
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_bEffects[ rand()%PlayerOptions::NUM_EFFECT_TYPES ] = true;
|
||||||
|
if( RandomFloat(0,1)>0.9f )
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_HIDDEN;
|
||||||
|
if( RandomFloat(0,1)>0.9f )
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_SUDDEN;
|
||||||
|
if( RandomFloat(0,1)>0.7f )
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_bReverseScroll = true;
|
||||||
|
if( RandomFloat(0,1)>0.8f )
|
||||||
|
GAMESTATE->m_PlayerOptions[p].m_bDark = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
GAMESTATE->m_SongOptions = SongOptions();
|
||||||
|
|
||||||
|
GAMESTATE->m_SongOptions.m_LifeType = (randomf(0,1)>0.8f) ? SongOptions::LIFE_BATTERY : SongOptions::LIFE_BAR;
|
||||||
|
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScreenDemonstration::~ScreenDemonstration()
|
||||||
|
{
|
||||||
|
GAMESTATE->m_bDemonstration = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenDemonstration::FirstUpdate()
|
||||||
|
{
|
||||||
|
LOG->Trace( "ScreenDemonstration::FirstUpdate()" );
|
||||||
|
|
||||||
|
ScreenGameplay::FirstUpdate();
|
||||||
|
|
||||||
|
|
||||||
|
m_sprDemonstrationOverlay.Load( THEME->GetPathTo("Graphics","demonstration overlay") );
|
||||||
|
m_sprDemonstrationOverlay.SetXY( CENTER_X, CENTER_Y );
|
||||||
|
this->AddChild( &m_sprDemonstrationOverlay );
|
||||||
|
|
||||||
|
m_sprDemonstrationBlink.Load( THEME->GetPathTo("Graphics","demonstration blink") );
|
||||||
|
m_sprDemonstrationBlink.SetXY( CENTER_X, CENTER_Y );
|
||||||
|
m_sprDemonstrationBlink.SetEffectBlinking();
|
||||||
|
this->AddChild( &m_sprDemonstrationBlink );
|
||||||
|
|
||||||
|
m_Fade.OpenWipingRight();
|
||||||
|
|
||||||
|
this->ClearMessageQueue(); // remove all of the messages set in ScreenGameplay that animate "ready", "here we go", etc.
|
||||||
|
|
||||||
|
m_StarWipe.SetOpened();
|
||||||
|
m_DancingState = STATE_DANCING;
|
||||||
|
this->SendScreenMessage( SM_BeginFadingToNextScreen, SECONDS_TO_SHOW );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenDemonstration::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
ScreenGameplay::Update( fDeltaTime );
|
||||||
|
|
||||||
|
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,0) ); // hide autoplay
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenDemonstration::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||||
|
{
|
||||||
|
//LOG->Trace( "ScreenDemonstration::Input()" );
|
||||||
|
|
||||||
|
if(type != IET_FIRST_PRESS) return; // don't care
|
||||||
|
|
||||||
|
if( m_Fade.IsClosing() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( MenuI.IsValid() )
|
||||||
|
{
|
||||||
|
switch( MenuI.button )
|
||||||
|
{
|
||||||
|
case MENU_BUTTON_LEFT:
|
||||||
|
case MENU_BUTTON_RIGHT:
|
||||||
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||||
|
break;
|
||||||
|
case MENU_BUTTON_START:
|
||||||
|
m_soundMusic.Stop();
|
||||||
|
GAMESTATE->m_bSideIsJoined[MenuI.player] = true;
|
||||||
|
GAMESTATE->m_MasterPlayerNumber = MenuI.player;
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = false;
|
||||||
|
|
||||||
|
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") );
|
||||||
|
::Sleep( 1000 ); // do a little pause, like the arcade does
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||||
|
break;
|
||||||
|
case MENU_BUTTON_BACK:
|
||||||
|
Exit();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenDemonstration::HandleScreenMessage( const ScreenMessage SM )
|
||||||
|
{
|
||||||
|
switch( SM )
|
||||||
|
{
|
||||||
|
case SM_NotesEnded:
|
||||||
|
this->SendScreenMessage( SM_BeginFadingToNextScreen, 0 );
|
||||||
|
return;
|
||||||
|
case SM_BeginFadingToNextScreen:
|
||||||
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||||
|
return;
|
||||||
|
case SM_GoToNextScreen:
|
||||||
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScreenGameplay::HandleScreenMessage( SM );
|
||||||
|
}
|
||||||
@@ -9,16 +9,25 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ScreenAttract.h"
|
#include "ScreenGameplay.h"
|
||||||
|
#include "Sprite.h"
|
||||||
|
|
||||||
|
|
||||||
class ScreenDemonstration : public ScreenAttract
|
class ScreenDemonstration : public ScreenGameplay
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
ScreenDemonstration();
|
||||||
|
~ScreenDemonstration();
|
||||||
|
|
||||||
|
virtual void FirstUpdate();
|
||||||
|
virtual void Update( float fDeltaTime );
|
||||||
|
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||||
|
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Sprite m_sprDemonstrationOverlay;
|
||||||
|
Sprite m_sprDemonstrationBlink;
|
||||||
|
|
||||||
private:
|
|
||||||
virtual CString GetMetricName() { return "Demonstration"; }; // used to look up theme metrics
|
|
||||||
virtual CString GetElementName() { return "demonstration"; }; // used to look up theme elements
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+102
-155
@@ -72,7 +72,6 @@
|
|||||||
#define SURVIVE_TIME_X THEME->GetMetricF("ScreenGameplay","SurviveTimeX")
|
#define SURVIVE_TIME_X THEME->GetMetricF("ScreenGameplay","SurviveTimeX")
|
||||||
#define SURVIVE_TIME_Y THEME->GetMetricF("ScreenGameplay","SurviveTimeY")
|
#define SURVIVE_TIME_Y THEME->GetMetricF("ScreenGameplay","SurviveTimeY")
|
||||||
#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenGameplay","SecondsBetweenComments")
|
#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenGameplay","SecondsBetweenComments")
|
||||||
#define DEMONSTRATION_SECONDS THEME->GetMetricF("ScreenGameplay","DemonstrationSeconds")
|
|
||||||
#define TICK_EARLY_SECONDS THEME->GetMetricF("ScreenGameplay","TickEarlySeconds")
|
#define TICK_EARLY_SECONDS THEME->GetMetricF("ScreenGameplay","TickEarlySeconds")
|
||||||
|
|
||||||
float g_fTickEarlySecondsCache = 0; // reading directly out of theme metrics is slow
|
float g_fTickEarlySecondsCache = 0; // reading directly out of theme metrics is slow
|
||||||
@@ -81,7 +80,6 @@ float g_fTickEarlySecondsCache = 0; // reading directly out of theme metrics is
|
|||||||
// received while STATE_DANCING
|
// received while STATE_DANCING
|
||||||
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+101);
|
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+101);
|
||||||
const ScreenMessage SM_BeginLoadingNextSong = ScreenMessage(SM_User+102);
|
const ScreenMessage SM_BeginLoadingNextSong = ScreenMessage(SM_User+102);
|
||||||
const ScreenMessage SM_BeginFadingToTitleMenu = ScreenMessage(SM_User+103);
|
|
||||||
const ScreenMessage SM_PlayToastySound = ScreenMessage(SM_User+105);
|
const ScreenMessage SM_PlayToastySound = ScreenMessage(SM_User+105);
|
||||||
|
|
||||||
// received while STATE_OUTRO
|
// received while STATE_OUTRO
|
||||||
@@ -95,16 +93,20 @@ const ScreenMessage SM_BeginFailed = ScreenMessage(SM_User+121);
|
|||||||
const ScreenMessage SM_ShowFailed = ScreenMessage(SM_User+122);
|
const ScreenMessage SM_ShowFailed = ScreenMessage(SM_User+122);
|
||||||
const ScreenMessage SM_PlayFailComment = ScreenMessage(SM_User+123);
|
const ScreenMessage SM_PlayFailComment = ScreenMessage(SM_User+123);
|
||||||
const ScreenMessage SM_GoToScreenAfterFail = ScreenMessage(SM_User+125);
|
const ScreenMessage SM_GoToScreenAfterFail = ScreenMessage(SM_User+125);
|
||||||
const ScreenMessage SM_GoToTitleMenu = ScreenMessage(SM_User+126);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ScreenGameplay::ScreenGameplay()
|
ScreenGameplay::ScreenGameplay( bool bLoadSounds )
|
||||||
{
|
{
|
||||||
LOG->Trace( "ScreenGameplay::ScreenGameplay()" );
|
LOG->Trace( "ScreenGameplay::ScreenGameplay()" );
|
||||||
|
|
||||||
int p;
|
/* Important! Don't do any with GAMESTATE in the ScreenGameplay constructor.
|
||||||
for( p=0; p<NUM_PLAYERS; p++ )
|
* ScreenDemonstration sets the song and other properties in its constructor,
|
||||||
|
* which is always called after the ScreenGameplay constructor. Instead,
|
||||||
|
* do this initialization in FirstUpdate()
|
||||||
|
*/
|
||||||
|
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
{
|
{
|
||||||
m_pLifeMeter[p] = NULL;
|
m_pLifeMeter[p] = NULL;
|
||||||
m_pScoreDisplay[p] = NULL;
|
m_pScoreDisplay[p] = NULL;
|
||||||
@@ -115,16 +117,55 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
|
|
||||||
SOUNDMAN->music->StopPlaying();
|
SOUNDMAN->music->StopPlaying();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m_soundToasty.Load( THEME->GetPathTo("Sounds","gameplay toasty") );
|
||||||
|
|
||||||
|
|
||||||
|
if( bLoadSounds ) // don't load sounds if just playing demonstration
|
||||||
|
{
|
||||||
|
m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") );
|
||||||
|
m_soundTryExtraStage.Load( THEME->GetPathTo("Sounds","gameplay try extra stage") );
|
||||||
|
m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") );
|
||||||
|
m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") );
|
||||||
|
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
|
||||||
|
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go extra") );
|
||||||
|
else if( GAMESTATE->IsFinalStage() )
|
||||||
|
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go final") );
|
||||||
|
else
|
||||||
|
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") );
|
||||||
|
m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") );
|
||||||
|
m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment good") );
|
||||||
|
m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") );
|
||||||
|
m_announcerOni.Load( ANNOUNCER->GetPathTo("gameplay comment oni") );
|
||||||
|
|
||||||
|
m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay 100 combo") );
|
||||||
|
m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay 200 combo") );
|
||||||
|
m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay 300 combo") );
|
||||||
|
m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay 400 combo") );
|
||||||
|
m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay 500 combo") );
|
||||||
|
m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay 600 combo") );
|
||||||
|
m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay 700 combo") );
|
||||||
|
m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay 800 combo") );
|
||||||
|
m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") );
|
||||||
|
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
|
||||||
|
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_iRowLastCrossed = -1;
|
||||||
|
|
||||||
|
m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenGameplay::FirstUpdate()
|
||||||
|
{
|
||||||
|
Screen::FirstUpdate();
|
||||||
|
|
||||||
|
/* It's OK to operate on GAMESTATE here, but not in the constructor */
|
||||||
GAMESTATE->ResetStageStatistics(); // clear values
|
GAMESTATE->ResetStageStatistics(); // clear values
|
||||||
|
|
||||||
const bool bExtra = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2();
|
|
||||||
const bool bReverse[NUM_PLAYERS] = {
|
|
||||||
GAMESTATE->m_PlayerOptions[0].m_bReverseScroll,
|
|
||||||
GAMESTATE->m_PlayerOptions[1].m_bReverseScroll
|
|
||||||
};
|
|
||||||
|
|
||||||
// Update possible dance points
|
// Update possible dance points
|
||||||
for( p=0; p<NUM_PLAYERS; p++ )
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
{
|
{
|
||||||
if( !GAMESTATE->IsPlayerEnabled(p) )
|
if( !GAMESTATE->IsPlayerEnabled(p) )
|
||||||
continue; // skip
|
continue; // skip
|
||||||
@@ -158,6 +199,16 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const bool bExtra = GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2();
|
||||||
|
const bool bReverse[NUM_PLAYERS] = {
|
||||||
|
GAMESTATE->m_PlayerOptions[0].m_bReverseScroll,
|
||||||
|
GAMESTATE->m_PlayerOptions[1].m_bReverseScroll
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
m_bChangedOffsetOrBPM = (GAMESTATE->m_SongOptions.m_AutoAdjust == SongOptions::ADJUST_ON);
|
m_bChangedOffsetOrBPM = (GAMESTATE->m_SongOptions.m_AutoAdjust == SongOptions::ADJUST_ON);
|
||||||
|
|
||||||
|
|
||||||
@@ -232,16 +283,6 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
m_textStageNumber.SetText( GAMESTATE->GetStageText() );
|
m_textStageNumber.SetText( GAMESTATE->GetStageText() );
|
||||||
m_textStageNumber.SetDiffuse( GAMESTATE->GetStageColor() );
|
m_textStageNumber.SetDiffuse( GAMESTATE->GetStageColor() );
|
||||||
|
|
||||||
Song* pSong;
|
|
||||||
pSong = GAMESTATE->m_pCurSong;
|
|
||||||
m_BPMDisplay.SetXY( BPM_X, BPM_Y );
|
|
||||||
m_BPMDisplay.SetZoom( BPM_ZOOM );
|
|
||||||
this->AddChild( &m_BPMDisplay );
|
|
||||||
float fMinBPM, fMaxBPM;
|
|
||||||
pSong->GetMinMaxBPM( fMinBPM, fMaxBPM );
|
|
||||||
m_BPMDisplay.SetBPMRange( fMinBPM, fMaxBPM );
|
|
||||||
|
|
||||||
|
|
||||||
for( p=0; p<NUM_PLAYERS; p++ )
|
for( p=0; p<NUM_PLAYERS; p++ )
|
||||||
{
|
{
|
||||||
m_textCourseSongNumber[p].LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
|
m_textCourseSongNumber[p].LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
|
||||||
@@ -323,7 +364,6 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
m_textPlayerOptions[p].SetXY( PLAYER_OPTIONS_X(p), PLAYER_OPTIONS_Y(p,bExtra) );
|
m_textPlayerOptions[p].SetXY( PLAYER_OPTIONS_X(p), PLAYER_OPTIONS_Y(p,bExtra) );
|
||||||
m_textPlayerOptions[p].SetZoom( 0.5f );
|
m_textPlayerOptions[p].SetZoom( 0.5f );
|
||||||
m_textPlayerOptions[p].SetDiffuse( RageColor(1,1,1,1) );
|
m_textPlayerOptions[p].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
|
|
||||||
this->AddChild( &m_textPlayerOptions[p] );
|
this->AddChild( &m_textPlayerOptions[p] );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +395,7 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
m_textAutoPlay.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
m_textAutoPlay.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
m_textAutoPlay.SetXY( AUTOPLAY_X, AUTOPLAY_Y );
|
m_textAutoPlay.SetXY( AUTOPLAY_X, AUTOPLAY_Y );
|
||||||
m_textAutoPlay.SetText( "AutoPlay is ON" );
|
m_textAutoPlay.SetText( "AutoPlay is ON" );
|
||||||
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,1) );
|
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,PREFSMAN->m_bAutoPlay?1:0) );
|
||||||
this->AddChild( &m_textAutoPlay );
|
this->AddChild( &m_textAutoPlay );
|
||||||
|
|
||||||
|
|
||||||
@@ -390,20 +430,6 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
m_sprTryExtraStage.SetDiffuse( RageColor(1,1,1,0) );
|
m_sprTryExtraStage.SetDiffuse( RageColor(1,1,1,0) );
|
||||||
this->AddChild( &m_sprTryExtraStage );
|
this->AddChild( &m_sprTryExtraStage );
|
||||||
|
|
||||||
if( GAMESTATE->m_bDemonstration )
|
|
||||||
{
|
|
||||||
m_sprDemonstrationOverlay.Load( THEME->GetPathTo("Graphics","gameplay demonstration overlay") );
|
|
||||||
m_sprDemonstrationOverlay.SetXY( CENTER_X, CENTER_Y );
|
|
||||||
this->AddChild( &m_sprDemonstrationOverlay );
|
|
||||||
|
|
||||||
m_sprDemonstrationBlink.Load( THEME->GetPathTo("Graphics","gameplay demonstration blink") );
|
|
||||||
m_sprDemonstrationBlink.SetXY( CENTER_X, CENTER_Y );
|
|
||||||
m_sprDemonstrationBlink.SetEffectBlinking();
|
|
||||||
this->AddChild( &m_sprDemonstrationBlink );
|
|
||||||
|
|
||||||
m_Fade.OpenWipingRight();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_Fade.SetOpened();
|
m_Fade.SetOpened();
|
||||||
this->AddChild( &m_Fade );
|
this->AddChild( &m_Fade );
|
||||||
|
|
||||||
@@ -419,60 +445,22 @@ ScreenGameplay::ScreenGameplay()
|
|||||||
m_sprToasty.SetDiffuse( RageColor(1,1,1,0) );
|
m_sprToasty.SetDiffuse( RageColor(1,1,1,0) );
|
||||||
this->AddChild( &m_sprToasty );
|
this->AddChild( &m_sprToasty );
|
||||||
|
|
||||||
m_soundToasty.Load( THEME->GetPathTo("Sounds","gameplay toasty") );
|
Song* pSong;
|
||||||
|
pSong = GAMESTATE->m_pCurSong;
|
||||||
|
m_BPMDisplay.SetXY( BPM_X, BPM_Y );
|
||||||
|
m_BPMDisplay.SetZoom( BPM_ZOOM );
|
||||||
|
this->AddChild( &m_BPMDisplay );
|
||||||
|
float fMinBPM, fMaxBPM;
|
||||||
|
pSong->GetMinMaxBPM( fMinBPM, fMaxBPM );
|
||||||
|
m_BPMDisplay.SetBPMRange( fMinBPM, fMaxBPM );
|
||||||
|
|
||||||
|
|
||||||
if( !GAMESTATE->m_bDemonstration ) // don't load sounds if just playing demonstration
|
|
||||||
{
|
|
||||||
m_soundFail.Load( THEME->GetPathTo("Sounds","gameplay failed") );
|
|
||||||
m_soundTryExtraStage.Load( THEME->GetPathTo("Sounds","gameplay try extra stage") );
|
|
||||||
m_soundOniDie.Load( THEME->GetPathTo("Sounds","gameplay oni die") );
|
|
||||||
m_announcerReady.Load( ANNOUNCER->GetPathTo("gameplay ready") );
|
|
||||||
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
|
|
||||||
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go extra") );
|
|
||||||
else if( GAMESTATE->IsFinalStage() )
|
|
||||||
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go final") );
|
|
||||||
else
|
|
||||||
m_announcerHereWeGo.Load( ANNOUNCER->GetPathTo("gameplay here we go normal") );
|
|
||||||
m_announcerDanger.Load( ANNOUNCER->GetPathTo("gameplay comment danger") );
|
|
||||||
m_announcerGood.Load( ANNOUNCER->GetPathTo("gameplay comment good") );
|
|
||||||
m_announcerHot.Load( ANNOUNCER->GetPathTo("gameplay comment hot") );
|
|
||||||
m_announcerOni.Load( ANNOUNCER->GetPathTo("gameplay comment oni") );
|
|
||||||
|
|
||||||
m_announcer100Combo.Load( ANNOUNCER->GetPathTo("gameplay 100 combo") );
|
|
||||||
m_announcer200Combo.Load( ANNOUNCER->GetPathTo("gameplay 200 combo") );
|
|
||||||
m_announcer300Combo.Load( ANNOUNCER->GetPathTo("gameplay 300 combo") );
|
|
||||||
m_announcer400Combo.Load( ANNOUNCER->GetPathTo("gameplay 400 combo") );
|
|
||||||
m_announcer500Combo.Load( ANNOUNCER->GetPathTo("gameplay 500 combo") );
|
|
||||||
m_announcer600Combo.Load( ANNOUNCER->GetPathTo("gameplay 600 combo") );
|
|
||||||
m_announcer700Combo.Load( ANNOUNCER->GetPathTo("gameplay 700 combo") );
|
|
||||||
m_announcer800Combo.Load( ANNOUNCER->GetPathTo("gameplay 800 combo") );
|
|
||||||
m_announcer900Combo.Load( ANNOUNCER->GetPathTo("gameplay 900 combo") );
|
|
||||||
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
|
|
||||||
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_iRowLastCrossed = -1;
|
|
||||||
|
|
||||||
m_soundAssistTick.Load( THEME->GetPathTo("Sounds","gameplay assist tick") );
|
|
||||||
|
|
||||||
TweenOnScreen();
|
TweenOnScreen();
|
||||||
|
|
||||||
/* XXX: We set m_textPlayerOptions[p] above, so that won't
|
for( int i=0; i<30; i++ )
|
||||||
* include options set by the course. Should it? -glenn */
|
this->SendScreenMessage( ScreenMessage(SM_User+i), i/2.0f ); // Send messages to we can get the introduction rolling
|
||||||
LoadNextSong( true );
|
|
||||||
|
|
||||||
if( GAMESTATE->m_bDemonstration )
|
LoadNextSong( true );
|
||||||
{
|
|
||||||
m_StarWipe.SetOpened();
|
|
||||||
m_DancingState = STATE_DANCING;
|
|
||||||
this->SendScreenMessage( SM_BeginFadingToTitleMenu, DEMONSTRATION_SECONDS );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for( int i=0; i<30; i++ )
|
|
||||||
this->SendScreenMessage( ScreenMessage(SM_User+i), i/2.0f ); // Send messages to we can get the introduction rolling
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenGameplay::~ScreenGameplay()
|
ScreenGameplay::~ScreenGameplay()
|
||||||
@@ -572,6 +560,9 @@ void ScreenGameplay::LoadNextSong( bool bFirstLoad )
|
|||||||
if( !GAMESTATE->IsPlayerEnabled(p) )
|
if( !GAMESTATE->IsPlayerEnabled(p) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
|
||||||
|
|
||||||
|
|
||||||
// reset oni game over graphic
|
// reset oni game over graphic
|
||||||
m_sprOniGameOver[p].SetY( SCREEN_TOP - m_sprOniGameOver[p].GetZoomedHeight()/2 );
|
m_sprOniGameOver[p].SetY( SCREEN_TOP - m_sprOniGameOver[p].GetZoomedHeight()/2 );
|
||||||
m_sprOniGameOver[p].SetDiffuse( RageColor(1,1,1,0) ); // 0 alpha so we don't waste time drawing while not visible
|
m_sprOniGameOver[p].SetDiffuse( RageColor(1,1,1,0) ); // 0 alpha so we don't waste time drawing while not visible
|
||||||
@@ -661,7 +652,7 @@ bool ScreenGameplay::AllFailedEarlier()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// play assist ticks
|
// play assist ticks
|
||||||
bool ScreenGameplay::PlayTicks() const
|
bool ScreenGameplay::IsTimeToPlayTicks() const
|
||||||
{
|
{
|
||||||
// Sound cards have a latency between when a sample is Play()ed and when the sound
|
// Sound cards have a latency between when a sample is Play()ed and when the sound
|
||||||
// will start coming out the speaker. Compensate for this by boosting
|
// will start coming out the speaker. Compensate for this by boosting
|
||||||
@@ -709,6 +700,8 @@ hehe - Andy)
|
|||||||
|
|
||||||
void ScreenGameplay::Update( float fDeltaTime )
|
void ScreenGameplay::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
|
Screen::Update( fDeltaTime );
|
||||||
|
|
||||||
int pn;
|
int pn;
|
||||||
|
|
||||||
if( GAMESTATE->m_pCurSong == NULL )
|
if( GAMESTATE->m_pCurSong == NULL )
|
||||||
@@ -803,29 +796,25 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
//
|
//
|
||||||
// Check to see if it's time to play a gameplay comment
|
// Check to see if it's time to play a gameplay comment
|
||||||
//
|
//
|
||||||
if( !GAMESTATE->m_bDemonstration ) // don't play announcer comments in demonstration
|
m_fTimeLeftBeforeDancingComment -= fDeltaTime;
|
||||||
|
if( m_fTimeLeftBeforeDancingComment <= 0 )
|
||||||
{
|
{
|
||||||
m_fTimeLeftBeforeDancingComment -= fDeltaTime;
|
switch( GAMESTATE->m_PlayMode )
|
||||||
if( m_fTimeLeftBeforeDancingComment <= 0 )
|
|
||||||
{
|
{
|
||||||
switch( GAMESTATE->m_PlayMode )
|
case PLAY_MODE_ARCADE:
|
||||||
{
|
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
||||||
case PLAY_MODE_ARCADE:
|
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
||||||
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
else m_announcerGood.PlayRandom();
|
||||||
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
break;
|
||||||
else m_announcerGood.PlayRandom();
|
case PLAY_MODE_ONI:
|
||||||
break;
|
case PLAY_MODE_ENDLESS:
|
||||||
case PLAY_MODE_ONI:
|
m_announcerOni.PlayRandom();
|
||||||
case PLAY_MODE_ENDLESS:
|
break;
|
||||||
m_announcerOni.PlayRandom();
|
default:
|
||||||
break;
|
ASSERT(0);
|
||||||
default:
|
|
||||||
ASSERT(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; // reset for the next comment
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; // reset for the next comment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -849,16 +838,8 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
m_iRowLastCrossed = iRowNow;
|
m_iRowLastCrossed = iRowNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(IsTimeToPlayTicks())
|
||||||
if(PlayTicks())
|
|
||||||
m_soundAssistTick.Play();
|
m_soundAssistTick.Play();
|
||||||
|
|
||||||
if( PREFSMAN->m_bAutoPlay && !GAMESTATE->m_bDemonstration )
|
|
||||||
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,1) );
|
|
||||||
else
|
|
||||||
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
|
|
||||||
Screen::Update( fDeltaTime );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -873,26 +854,6 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
//LOG->Trace( "ScreenGameplay::Input()" );
|
//LOG->Trace( "ScreenGameplay::Input()" );
|
||||||
if(type == IET_RELEASE) return; // don't care
|
if(type == IET_RELEASE) return; // don't care
|
||||||
|
|
||||||
if( GAMESTATE->m_bDemonstration )
|
|
||||||
{
|
|
||||||
/* Special case:always allow escape. */
|
|
||||||
if( DeviceI.device==DEVICE_KEYBOARD && DeviceI.button==SDLK_ESCAPE && !m_Fade.IsClosing() )
|
|
||||||
{
|
|
||||||
this->SendScreenMessage( SM_BeginFadingToTitleMenu, 0 );
|
|
||||||
}
|
|
||||||
/* Since escape backs out, we want to allow any other back buttons to
|
|
||||||
* work, too, to avoid confusion. */
|
|
||||||
else if( (MenuI.button==MENU_BUTTON_START || MenuI.button==MENU_BUTTON_BACK)
|
|
||||||
&& !m_Fade.IsClosing() )
|
|
||||||
{
|
|
||||||
m_soundMusic.StopPlaying();
|
|
||||||
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") );
|
|
||||||
::Sleep( 1000 ); // do a little pause, like the arcade does
|
|
||||||
this->SendScreenMessage( SM_GoToTitleMenu, 0 );
|
|
||||||
}
|
|
||||||
return; // don't fall through below
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle special keys to adjust the offset
|
// Handle special keys to adjust the offset
|
||||||
if( DeviceI.device == DEVICE_KEYBOARD )
|
if( DeviceI.device == DEVICE_KEYBOARD )
|
||||||
{
|
{
|
||||||
@@ -928,6 +889,7 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
break;
|
break;
|
||||||
case SDLK_F8:
|
case SDLK_F8:
|
||||||
PREFSMAN->m_bAutoPlay = !PREFSMAN->m_bAutoPlay;
|
PREFSMAN->m_bAutoPlay = !PREFSMAN->m_bAutoPlay;
|
||||||
|
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,PREFSMAN->m_bAutoPlay?1:0) );
|
||||||
break;
|
break;
|
||||||
case SDLK_F9:
|
case SDLK_F9:
|
||||||
case SDLK_F10:
|
case SDLK_F10:
|
||||||
@@ -1146,12 +1108,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
// received while STATE_DANCING
|
// received while STATE_DANCING
|
||||||
case SM_NotesEnded:
|
case SM_NotesEnded:
|
||||||
{
|
{
|
||||||
if( GAMESTATE->m_bDemonstration ) // Don't show "CLEARED" in Demo
|
|
||||||
{
|
|
||||||
this->SendScreenMessage( SM_BeginFadingToTitleMenu, 0 );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// save any statistics
|
// save any statistics
|
||||||
int p;
|
int p;
|
||||||
for( p=0; p<NUM_PLAYERS; p++ )
|
for( p=0; p<NUM_PLAYERS; p++ )
|
||||||
@@ -1237,9 +1193,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
LoadNextSong( false );
|
LoadNextSong( false );
|
||||||
m_OniFade.OpenWipingRight( SM_None );
|
m_OniFade.OpenWipingRight( SM_None );
|
||||||
break;
|
break;
|
||||||
case SM_BeginFadingToTitleMenu:
|
|
||||||
m_Fade.CloseWipingRight( SM_GoToTitleMenu );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SM_BeginToasty:
|
case SM_BeginToasty:
|
||||||
this->SendScreenMessage( SM_PlayToastySound, 0.3f );
|
this->SendScreenMessage( SM_PlayToastySound, 0.3f );
|
||||||
@@ -1490,9 +1443,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( "ScreenGameOver" );
|
SCREENMAN->SetNewScreen( "ScreenGameOver" );
|
||||||
break;
|
break;
|
||||||
case SM_GoToTitleMenu:
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1512,8 +1462,7 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
{
|
{
|
||||||
float fOriginalY = apActorsInLifeFrame[i]->GetY();
|
float fOriginalY = apActorsInLifeFrame[i]->GetY();
|
||||||
apActorsInLifeFrame[i]->SetY( fOriginalY-100 );
|
apActorsInLifeFrame[i]->SetY( fOriginalY-100 );
|
||||||
if( !GAMESTATE->m_bDemonstration )
|
apActorsInLifeFrame[i]->BeginTweening( 0.5f ); // sleep
|
||||||
apActorsInLifeFrame[i]->BeginTweening( 0.5f ); // sleep
|
|
||||||
apActorsInLifeFrame[i]->BeginTweening( 1 );
|
apActorsInLifeFrame[i]->BeginTweening( 1 );
|
||||||
apActorsInLifeFrame[i]->SetTweenY( fOriginalY );
|
apActorsInLifeFrame[i]->SetTweenY( fOriginalY );
|
||||||
}
|
}
|
||||||
@@ -1533,8 +1482,7 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
{
|
{
|
||||||
float fOriginalY = apActorsInScoreFrame[i]->GetY();
|
float fOriginalY = apActorsInScoreFrame[i]->GetY();
|
||||||
apActorsInScoreFrame[i]->SetY( fOriginalY+100 );
|
apActorsInScoreFrame[i]->SetY( fOriginalY+100 );
|
||||||
if( !GAMESTATE->m_bDemonstration )
|
apActorsInScoreFrame[i]->BeginTweening( 0.5f ); // sleep
|
||||||
apActorsInScoreFrame[i]->BeginTweening( 0.5f ); // sleep
|
|
||||||
apActorsInScoreFrame[i]->BeginTweening( 1 );
|
apActorsInScoreFrame[i]->BeginTweening( 1 );
|
||||||
apActorsInScoreFrame[i]->SetTweenY( fOriginalY );
|
apActorsInScoreFrame[i]->SetTweenY( fOriginalY );
|
||||||
}
|
}
|
||||||
@@ -1543,8 +1491,7 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
{
|
{
|
||||||
float fOriginalX = m_DifficultyIcon[p].GetX();
|
float fOriginalX = m_DifficultyIcon[p].GetX();
|
||||||
m_DifficultyIcon[p].SetX( (p==PLAYER_1) ? fOriginalX-200 : fOriginalX+200 );
|
m_DifficultyIcon[p].SetX( (p==PLAYER_1) ? fOriginalX-200 : fOriginalX+200 );
|
||||||
if( !GAMESTATE->m_bDemonstration )
|
m_DifficultyIcon[p].BeginTweening( 0.5f ); // sleep
|
||||||
m_DifficultyIcon[p].BeginTweening( 0.5f ); // sleep
|
|
||||||
m_DifficultyIcon[p].BeginTweening( 1 );
|
m_DifficultyIcon[p].BeginTweening( 1 );
|
||||||
m_DifficultyIcon[p].SetTweenX( fOriginalX );
|
m_DifficultyIcon[p].SetTweenX( fOriginalX );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#ifndef SCREENGAMEPLAY_H
|
||||||
|
#define SCREENGAMEPLAY_H
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: ScreenGameplay
|
Class: ScreenGameplay
|
||||||
@@ -47,15 +49,16 @@ const ScreenMessage SM_ComboStopped = ScreenMessage(SM_User+210);
|
|||||||
class ScreenGameplay : public Screen
|
class ScreenGameplay : public Screen
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ScreenGameplay();
|
ScreenGameplay( bool bLoadSounds = true );
|
||||||
virtual ~ScreenGameplay();
|
virtual ~ScreenGameplay();
|
||||||
|
virtual void FirstUpdate();
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
virtual void DrawPrimitives();
|
virtual void DrawPrimitives();
|
||||||
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
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 HandleScreenMessage( const ScreenMessage SM );
|
||||||
|
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void TweenOnScreen();
|
void TweenOnScreen();
|
||||||
void TweenOffScreen();
|
void TweenOffScreen();
|
||||||
|
|
||||||
@@ -66,7 +69,7 @@ private:
|
|||||||
bool AllAreInDanger();
|
bool AllAreInDanger();
|
||||||
bool AllAreFailing();
|
bool AllAreFailing();
|
||||||
bool AllFailedEarlier();
|
bool AllFailedEarlier();
|
||||||
bool PlayTicks() const;
|
bool IsTimeToPlayTicks() const;
|
||||||
|
|
||||||
enum DancingState {
|
enum DancingState {
|
||||||
STATE_INTRO = 0, // not allowed to press Back
|
STATE_INTRO = 0, // not allowed to press Back
|
||||||
@@ -123,9 +126,6 @@ private:
|
|||||||
|
|
||||||
Sprite m_sprToasty; // easter egg
|
Sprite m_sprToasty; // easter egg
|
||||||
|
|
||||||
Sprite m_sprDemonstrationOverlay;
|
|
||||||
Sprite m_sprDemonstrationBlink;
|
|
||||||
|
|
||||||
RandomSample m_soundFail;
|
RandomSample m_soundFail;
|
||||||
RandomSample m_soundOniDie;
|
RandomSample m_soundOniDie;
|
||||||
RandomSample m_soundTryExtraStage;
|
RandomSample m_soundTryExtraStage;
|
||||||
@@ -156,4 +156,4 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -37,8 +37,8 @@ ScreenInstructions::ScreenInstructions()
|
|||||||
LOG->Trace( "ScreenInstructions::ScreenInstructions()" );
|
LOG->Trace( "ScreenInstructions::ScreenInstructions()" );
|
||||||
|
|
||||||
m_Menu.Load(
|
m_Menu.Load(
|
||||||
THEME->GetPathTo("BGAnimations","How To Play"),
|
THEME->GetPathTo("BGAnimations","Instructions"),
|
||||||
THEME->GetPathTo("Graphics","How To Play Top Edge"),
|
THEME->GetPathTo("Graphics","Instructions Top Edge"),
|
||||||
HELP_TEXT, false, true, TIMER_SECONDS
|
HELP_TEXT, false, true, TIMER_SECONDS
|
||||||
);
|
);
|
||||||
this->AddChild( &m_Menu );
|
this->AddChild( &m_Menu );
|
||||||
@@ -56,13 +56,13 @@ ScreenInstructions::ScreenInstructions()
|
|||||||
switch( GAMESTATE->m_PlayMode )
|
switch( GAMESTATE->m_PlayMode )
|
||||||
{
|
{
|
||||||
case PLAY_MODE_ARCADE:
|
case PLAY_MODE_ARCADE:
|
||||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play arcade");
|
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions arcade");
|
||||||
break;
|
break;
|
||||||
case PLAY_MODE_ENDLESS:
|
case PLAY_MODE_ENDLESS:
|
||||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play endless");
|
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions endless");
|
||||||
break;
|
break;
|
||||||
case PLAY_MODE_ONI:
|
case PLAY_MODE_ONI:
|
||||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play oni");
|
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions oni");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
@@ -77,7 +77,7 @@ ScreenInstructions::ScreenInstructions()
|
|||||||
m_sprHowToPlay.BeginTweening( 0.6f, Actor::TWEEN_BIAS_BEGIN );
|
m_sprHowToPlay.BeginTweening( 0.6f, Actor::TWEEN_BIAS_BEGIN );
|
||||||
m_sprHowToPlay.SetTweenX( CENTER_X );
|
m_sprHowToPlay.SetTweenX( CENTER_X );
|
||||||
|
|
||||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","how to play music") );
|
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","instructions music") );
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenInstructions::~ScreenInstructions()
|
ScreenInstructions::~ScreenInstructions()
|
||||||
@@ -96,7 +96,7 @@ void ScreenInstructions::DrawPrimitives()
|
|||||||
{
|
{
|
||||||
m_Menu.DrawBottomLayer();
|
m_Menu.DrawBottomLayer();
|
||||||
m_Menu.DrawTopLayer();
|
m_Menu.DrawTopLayer();
|
||||||
Screen::DrawPrimitives(); // draw How To Play graphic on top of all the others!
|
Screen::DrawPrimitives(); // draw instructions graphic on top of all the others!
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenInstructions::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
void ScreenInstructions::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||||
|
|||||||
@@ -102,10 +102,10 @@ void ScreenManager::Update( float fDeltaTime )
|
|||||||
*
|
*
|
||||||
* So, let's just drop the first update for every screen.
|
* So, let's just drop the first update for every screen.
|
||||||
*/
|
*/
|
||||||
if(m_ScreenStack[i]->FirstUpdate())
|
if( m_ScreenStack[i]->IsFirstUpdate() )
|
||||||
continue;
|
m_ScreenStack[i]->Update( 0 );
|
||||||
|
else
|
||||||
m_ScreenStack[i]->Update( fDeltaTime );
|
m_ScreenStack[i]->Update( fDeltaTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -197,6 +197,7 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type
|
|||||||
#include "ScreenLogo.h"
|
#include "ScreenLogo.h"
|
||||||
#include "ScreenUnlock.h"
|
#include "ScreenUnlock.h"
|
||||||
#include "ScreenDemonstration.h"
|
#include "ScreenDemonstration.h"
|
||||||
|
#include "ScreenInstructions.h"
|
||||||
#include "ScreenPrompt.h"
|
#include "ScreenPrompt.h"
|
||||||
#include "ScreenTextEntry.h"
|
#include "ScreenTextEntry.h"
|
||||||
|
|
||||||
@@ -243,6 +244,7 @@ Screen* ScreenManager::MakeNewScreen( CString sClassName )
|
|||||||
else if( 0==stricmp(sClassName, "ScreenLogo") ) ret = new ScreenLogo;
|
else if( 0==stricmp(sClassName, "ScreenLogo") ) ret = new ScreenLogo;
|
||||||
else if( 0==stricmp(sClassName, "ScreenUnlock") ) ret = new ScreenUnlock;
|
else if( 0==stricmp(sClassName, "ScreenUnlock") ) ret = new ScreenUnlock;
|
||||||
else if( 0==stricmp(sClassName, "ScreenDemonstration") ) ret = new ScreenDemonstration;
|
else if( 0==stricmp(sClassName, "ScreenDemonstration") ) ret = new ScreenDemonstration;
|
||||||
|
else if( 0==stricmp(sClassName, "ScreenInstructions") ) ret = new ScreenInstructions;
|
||||||
else
|
else
|
||||||
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public:
|
|||||||
void RefreshCreditsMessages();
|
void RefreshCreditsMessages();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
vector<Screen*> m_ScreenStack;
|
vector<Screen*> m_ScreenStack; // bottommost to topmost
|
||||||
vector<Screen*> m_ScreensToDelete;
|
vector<Screen*> m_ScreensToDelete;
|
||||||
Screen *m_ScreenBuffered;
|
Screen *m_ScreenBuffered;
|
||||||
|
|
||||||
|
|||||||
@@ -95,6 +95,19 @@ void ScreenPrompt::Input( const DeviceInput& DeviceI, const InputEventType type,
|
|||||||
if( m_Fade.IsOpening() )
|
if( m_Fade.IsOpening() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if( DeviceI.device == DEVICE_KEYBOARD )
|
||||||
|
{
|
||||||
|
switch( DeviceI.button )
|
||||||
|
{
|
||||||
|
case SDLK_LEFT:
|
||||||
|
this->MenuLeft( StyleI.player );
|
||||||
|
return;
|
||||||
|
case SDLK_RIGHT:
|
||||||
|
this->MenuLeft( StyleI.player );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "InputMapper.h"
|
#include "InputMapper.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
|
#include "StepMania.h"
|
||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -100,12 +101,12 @@ void ScreenSelectGame::ExportOptions()
|
|||||||
|
|
||||||
void ScreenSelectGame::GoToPrevState()
|
void ScreenSelectGame::GoToPrevState()
|
||||||
{
|
{
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenSelectGame::GoToNextState()
|
void ScreenSelectGame::GoToNextState()
|
||||||
{
|
{
|
||||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ void ScreenSelectStyle::UpdateEnabledDisabled()
|
|||||||
if( IsEnabled(i) )
|
if( IsEnabled(i) )
|
||||||
m_sprIcon[i].SetDiffuse( RageColor(1,1,1,1) );
|
m_sprIcon[i].SetDiffuse( RageColor(1,1,1,1) );
|
||||||
else
|
else
|
||||||
m_sprIcon[i].SetDiffuse( RageColor(0.5f,0.5f,0.5f,1) );
|
m_sprIcon[i].SetDiffuse( RageColor(0.25f,0.25f,0.25f,1) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select first enabled style
|
// Select first enabled style
|
||||||
|
|||||||
@@ -58,47 +58,19 @@ const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = {
|
|||||||
#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected")
|
#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected")
|
||||||
#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected")
|
#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected")
|
||||||
#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected")
|
#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected")
|
||||||
#define SECONDS_BEFORE_DEMONSTRATION THEME->GetMetricF("ScreenTitleMenu","SecondsBeforeDemonstration")
|
|
||||||
#define SECONDS_BETWEEN_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenAttract")
|
#define SECONDS_BETWEEN_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenAttract")
|
||||||
#define HELP_TEXT THEME->GetMetric("ScreenTitleMenu","HelpText")
|
#define HELP_TEXT THEME->GetMetric("ScreenTitleMenu","HelpText")
|
||||||
#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen")
|
#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen")
|
||||||
|
|
||||||
const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1);
|
const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1);
|
||||||
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+12);
|
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+12);
|
||||||
const ScreenMessage SM_GoToDemonstration = ScreenMessage(SM_User+13);
|
const ScreenMessage SM_GoToAttractLoop = ScreenMessage(SM_User+13);
|
||||||
|
|
||||||
|
|
||||||
ScreenTitleMenu::ScreenTitleMenu()
|
ScreenTitleMenu::ScreenTitleMenu()
|
||||||
{
|
{
|
||||||
LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" );
|
LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" );
|
||||||
|
|
||||||
//
|
|
||||||
// I think it's better to do all the initialization here rather than have it scattered
|
|
||||||
// about in all the global singleton classes
|
|
||||||
//
|
|
||||||
GAMESTATE->Reset();
|
|
||||||
PREFSMAN->ReadGamePrefsFromDisk();
|
|
||||||
INPUTMAPPER->ReadMappingsFromDisk();
|
|
||||||
GAMESTATE->m_bPlayersCanJoin = true;
|
|
||||||
|
|
||||||
if( !GAMEMAN->DoesNoteSkinExist( GAMEMAN->GetCurNoteSkin() ) )
|
|
||||||
{
|
|
||||||
CStringArray asNoteSkinNames;
|
|
||||||
GAMEMAN->GetNoteSkinNames( asNoteSkinNames );
|
|
||||||
GAMEMAN->SwitchNoteSkin( asNoteSkinNames[0] );
|
|
||||||
}
|
|
||||||
if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) )
|
|
||||||
{
|
|
||||||
CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;
|
|
||||||
if( THEME->DoesThemeExist( sGameName ) )
|
|
||||||
THEME->SwitchTheme( sGameName );
|
|
||||||
else
|
|
||||||
THEME->SwitchTheme( "default" );
|
|
||||||
}
|
|
||||||
PREFSMAN->SaveGamePrefsToDisk();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations","title menu") );
|
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations","title menu") );
|
||||||
this->AddChild( &m_Background );
|
this->AddChild( &m_Background );
|
||||||
|
|
||||||
@@ -190,79 +162,14 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty
|
|||||||
if( m_Fade.IsClosing() )
|
if( m_Fade.IsClosing() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Reset the demonstration timer when a key is pressed. */
|
|
||||||
TimeToDemonstration.GetDeltaTime();
|
|
||||||
|
|
||||||
if(DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_F1 && type == IET_FIRST_PRESS)
|
|
||||||
{
|
|
||||||
FadeToDemonstration();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenTitleMenu::Update( float fDelta )
|
void ScreenTitleMenu::Update( float fDelta )
|
||||||
{
|
{
|
||||||
if(TimeToDemonstration.PeekDeltaTime() >= SECONDS_BEFORE_DEMONSTRATION)
|
|
||||||
{
|
|
||||||
FadeToDemonstration();
|
|
||||||
TimeToDemonstration.GetDeltaTime();
|
|
||||||
}
|
|
||||||
Screen::Update(fDelta);
|
Screen::Update(fDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenTitleMenu::FadeToDemonstration()
|
|
||||||
{
|
|
||||||
// Set up the game state for a demonstration
|
|
||||||
switch( GAMESTATE->m_CurGame )
|
|
||||||
{
|
|
||||||
case GAME_DANCE: GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS; break;
|
|
||||||
case GAME_PUMP: GAMESTATE->m_CurStyle = STYLE_PUMP_VERSUS; break;
|
|
||||||
case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break;
|
|
||||||
case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break;
|
|
||||||
case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break;
|
|
||||||
case GAME_BM: GAMESTATE->m_CurStyle = STYLE_BM_SINGLE; break;
|
|
||||||
default: ASSERT(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE;
|
|
||||||
|
|
||||||
if(!SONGMAN->ChooseRandomSong())
|
|
||||||
{
|
|
||||||
// Couldn't find Song/Notes to play. Abort demonstration!
|
|
||||||
GAMESTATE->Reset();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSERT( GAMESTATE->m_pCurSong );
|
|
||||||
|
|
||||||
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
|
|
||||||
|
|
||||||
// choose some cool options
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
{
|
|
||||||
if( !GAMESTATE->IsPlayerEnabled(p) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( RandomFloat(0,1)>0.8f )
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_fArrowScrollSpeed = 1.5f;
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_bEffects[ rand()%PlayerOptions::NUM_EFFECT_TYPES ] = true;
|
|
||||||
if( RandomFloat(0,1)>0.9f )
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_HIDDEN;
|
|
||||||
if( RandomFloat(0,1)>0.9f )
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_SUDDEN;
|
|
||||||
if( RandomFloat(0,1)>0.7f )
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_bReverseScroll = true;
|
|
||||||
if( RandomFloat(0,1)>0.8f )
|
|
||||||
GAMESTATE->m_PlayerOptions[p].m_bDark = true;
|
|
||||||
}
|
|
||||||
GAMESTATE->m_SongOptions.m_LifeType = (randomf(0,1)>0.8f) ? SongOptions::LIFE_BATTERY : SongOptions::LIFE_BAR;
|
|
||||||
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_OFF;
|
|
||||||
|
|
||||||
GAMESTATE->m_bDemonstration = true;
|
|
||||||
m_Fade.CloseWipingRight( SM_GoToDemonstration );
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
||||||
{
|
{
|
||||||
@@ -310,11 +217,8 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_GoToDemonstration:
|
case SM_GoToAttractLoop:
|
||||||
{
|
SCREENMAN->SetNewScreen( "ScreenCompany" );
|
||||||
ASSERT( GAMESTATE->m_pCurSong );
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenGameplay" );
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -406,11 +310,7 @@ void ScreenTitleMenu::MenuStart( PlayerNumber pn )
|
|||||||
break;
|
break;
|
||||||
case CHOICE_EXIT: {
|
case CHOICE_EXIT: {
|
||||||
m_soundSelect.PlayRandom();
|
m_soundSelect.PlayRandom();
|
||||||
|
Exit();
|
||||||
SDL_Event *event;
|
|
||||||
event = (SDL_Event *) malloc(sizeof(event));
|
|
||||||
event->type = SDL_QUIT;
|
|
||||||
SDL_PushEvent(event);
|
|
||||||
LOG->Trace("CHOICE_EXIT: shutting down");
|
LOG->Trace("CHOICE_EXIT: shutting down");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -421,12 +321,6 @@ void ScreenTitleMenu::MenuStart( PlayerNumber pn )
|
|||||||
|
|
||||||
void ScreenTitleMenu::MenuBack( PlayerNumber pn )
|
void ScreenTitleMenu::MenuBack( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
if(m_TitleMenuChoice == CHOICE_EXIT)
|
this->m_Fade.CloseWipingRight( SM_GoToAttractLoop );
|
||||||
return;
|
|
||||||
|
|
||||||
LoseFocus( m_TitleMenuChoice );
|
|
||||||
m_TitleMenuChoice = CHOICE_EXIT;
|
|
||||||
m_soundChange.PlayRandom();
|
|
||||||
GainFocus( m_TitleMenuChoice );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ private:
|
|||||||
void MenuDown( PlayerNumber pn );
|
void MenuDown( PlayerNumber pn );
|
||||||
void MenuBack( PlayerNumber pn );
|
void MenuBack( PlayerNumber pn );
|
||||||
void MenuStart( PlayerNumber pn );
|
void MenuStart( PlayerNumber pn );
|
||||||
void FadeToDemonstration();
|
|
||||||
|
|
||||||
TitleMenuChoice m_TitleMenuChoice;
|
TitleMenuChoice m_TitleMenuChoice;
|
||||||
|
|
||||||
|
|||||||
@@ -623,38 +623,12 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pick a random song (for the demonstration). */
|
Song* SongManager::GetRandomSong()
|
||||||
bool SongManager::ChooseRandomSong()
|
|
||||||
{
|
{
|
||||||
if( SONGMAN->m_pSongs.empty() )
|
if( m_pSongs.empty() )
|
||||||
return false;
|
return NULL;
|
||||||
|
|
||||||
int i;
|
return SONGMAN->m_pSongs[ rand()%m_pSongs.size() ];
|
||||||
for( i=0; i<600; i++ ) // try 600 times
|
|
||||||
{
|
|
||||||
Song* pSong = m_pSongs[ rand()%m_pSongs.size() ];
|
|
||||||
|
|
||||||
if( pSong->m_apNotes.empty() )
|
|
||||||
continue; // skip
|
|
||||||
|
|
||||||
if( !pSong->HasMusic() )
|
|
||||||
continue; // skip
|
|
||||||
|
|
||||||
for( int j=0; j<3; j++ ) // try 3 times
|
|
||||||
{
|
|
||||||
Notes* pNotes = pSong->m_apNotes[ rand()%pSong->m_apNotes.size() ];
|
|
||||||
if( pNotes->m_NotesType != GAMESTATE->GetCurrentStyleDef()->m_NotesType )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// found something we can use!
|
|
||||||
GAMESTATE->m_pCurSong = pSong;
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
GAMESTATE->m_pCurNotes[p] = pNotes;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Song* SongManager::GetSongFromDir( CString sDir )
|
Song* SongManager::GetSongFromDir( CString sDir )
|
||||||
|
|||||||
@@ -62,9 +62,7 @@ public:
|
|||||||
void GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, const StyleDef *s,
|
void GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, const StyleDef *s,
|
||||||
Song*& pSongOut, Notes*& pNotesOut, PlayerOptions& po_out, SongOptions& so_out );
|
Song*& pSongOut, Notes*& pNotesOut, PlayerOptions& po_out, SongOptions& so_out );
|
||||||
|
|
||||||
/* Choose a random song from the current style. Return true
|
Song* GetRandomSong();
|
||||||
* if successful, false if no song could be found. */
|
|
||||||
bool ChooseRandomSong();
|
|
||||||
|
|
||||||
Song* GetSongFromDir( CString sDir );
|
Song* GetSongFromDir( CString sDir );
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,39 @@ void ApplyGraphicOptions()
|
|||||||
TEXTUREMAN->ReloadAll();
|
TEXTUREMAN->ReloadAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Exit()
|
||||||
|
{
|
||||||
|
SDL_Event *event;
|
||||||
|
event = (SDL_Event *) malloc(sizeof(event));
|
||||||
|
event->type = SDL_QUIT;
|
||||||
|
SDL_PushEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
GAMESTATE->Reset();
|
||||||
|
PREFSMAN->ReadGamePrefsFromDisk();
|
||||||
|
INPUTMAPPER->ReadMappingsFromDisk();
|
||||||
|
GAMESTATE->m_bPlayersCanJoin = true;
|
||||||
|
|
||||||
|
if( !GAMEMAN->DoesNoteSkinExist( GAMEMAN->GetCurNoteSkin() ) )
|
||||||
|
{
|
||||||
|
CStringArray asNoteSkinNames;
|
||||||
|
GAMEMAN->GetNoteSkinNames( asNoteSkinNames );
|
||||||
|
GAMEMAN->SwitchNoteSkin( asNoteSkinNames[0] );
|
||||||
|
}
|
||||||
|
if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) )
|
||||||
|
{
|
||||||
|
CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;
|
||||||
|
if( THEME->DoesThemeExist( sGameName ) )
|
||||||
|
THEME->SwitchTheme( sGameName );
|
||||||
|
else
|
||||||
|
THEME->SwitchTheme( "default" );
|
||||||
|
}
|
||||||
|
PREFSMAN->SaveGamePrefsToDisk();
|
||||||
|
|
||||||
|
SCREENMAN->SetNewScreen( "ScreenCompany" ); // Change this to set a different initial screen
|
||||||
|
}
|
||||||
|
|
||||||
static void GameLoop();
|
static void GameLoop();
|
||||||
#include "SDL_utils.h"
|
#include "SDL_utils.h"
|
||||||
@@ -220,9 +253,7 @@ int main(int argc, char* argv[])
|
|||||||
FONT = new FontManager;
|
FONT = new FontManager;
|
||||||
SCREENMAN = new ScreenManager;
|
SCREENMAN = new ScreenManager;
|
||||||
|
|
||||||
|
Reset();
|
||||||
// normal game
|
|
||||||
SCREENMAN->SetNewScreen( "ScreenWarning" );
|
|
||||||
|
|
||||||
/* Run the main loop. */
|
/* Run the main loop. */
|
||||||
GameLoop();
|
GameLoop();
|
||||||
@@ -307,9 +338,10 @@ static void HandleInputEvents(float fDeltaTime)
|
|||||||
// pressed just F4
|
// pressed just F4
|
||||||
PREFSMAN->m_bWindowed = !PREFSMAN->m_bWindowed;
|
PREFSMAN->m_bWindowed = !PREFSMAN->m_bWindowed;
|
||||||
ApplyGraphicOptions();
|
ApplyGraphicOptions();
|
||||||
// fall through
|
continue;
|
||||||
/* why fall through? other code shouldn't be using
|
/* why fall through? other code shouldn't be using
|
||||||
* globally-bound keys -glenn */
|
* globally-bound keys -glenn */
|
||||||
|
/* you're right. -Chris */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( type == IET_FIRST_PRESS && DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F5))
|
else if( type == IET_FIRST_PRESS && DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F5))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
|
|
||||||
void ApplyGraphicOptions();
|
void ApplyGraphicOptions();
|
||||||
|
|
||||||
|
void Exit();
|
||||||
|
|
||||||
|
void Reset();
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -192,6 +192,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<File
|
<File
|
||||||
RelativePath="ScreenCaution.h">
|
RelativePath="ScreenCaution.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenDemonstration.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="ScreenDemonstration.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="ScreenDimensions.h">
|
RelativePath="ScreenDimensions.h">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ try_element_again:
|
|||||||
asPossibleElementFilePaths[0].GetString(), sNewFilePath.GetString());
|
asPossibleElementFilePaths[0].GetString(), sNewFilePath.GetString());
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
if( MessageBox(NULL, "ThemeManager", message.GetString(), MB_RETRYCANCEL ) == IDRETRY)
|
if( MessageBox(NULL, message.GetString(), "ThemeManager", MB_RETRYCANCEL ) == IDRETRY)
|
||||||
goto try_element_again;
|
goto try_element_again;
|
||||||
#endif
|
#endif
|
||||||
RageException::Throw( "%s", message.GetString() );
|
RageException::Throw( "%s", message.GetString() );
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
; NOTE: this .NSI script is designed for NSIS v1.8+
|
; NOTE: this .NSI script is designed for NSIS v1.8+
|
||||||
|
|
||||||
Name "StepMania"
|
Name "StepMania"
|
||||||
OutFile "stepmania310.exe"
|
OutFile "stepmania301.exe"
|
||||||
!define PRODUCT_NAME "StepMania 3.1"
|
!define PRODUCT_NAME "StepMania 3.01"
|
||||||
|
|
||||||
|
|
||||||
; Some default compiler settings (uncomment and change at will):
|
; Some default compiler settings (uncomment and change at will):
|
||||||
|
|||||||
Reference in New Issue
Block a user