fixed broken screen gameplay, started adding coin-op logic
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
----------------------- 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: New alignment tags for bitmap fonts.
|
||||
NEW FEATURE: Bitmap fonts now support full Unicode mapping.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// - ScreenCaution
|
||||
// - ScreenEz2SelectPlayer
|
||||
// - ScreenSelectMode
|
||||
// - ScreenHowToPlay
|
||||
// - ScreenInstructions
|
||||
// - ScreenSelectCourse
|
||||
// - ScreenSelectDifficulty
|
||||
// - ScreenSelectGroup
|
||||
@@ -133,7 +133,7 @@ CursorShadowLengthY=10
|
||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||
TimerSeconds=40
|
||||
NextScreenArcade=ScreenSelectGroup
|
||||
NextScreenOni=ScreenHowToPlay
|
||||
NextScreenOni=ScreenInstructions
|
||||
|
||||
[ScreenSelectGroup]
|
||||
FrameX=180
|
||||
@@ -161,9 +161,9 @@ TitlesRows=10
|
||||
TitlesZoom=0.5
|
||||
HelpText=Use &LEFT; &RIGHT; to select, then press START
|
||||
TimerSeconds=40
|
||||
NextScreen=ScreenHowToPlay
|
||||
NextScreen=ScreenInstructions
|
||||
|
||||
[ScreenHowToPlay]
|
||||
[ScreenInstructions]
|
||||
NextScreenArcade=ScreenSelectMusic
|
||||
NextScreenOni=ScreenSelectCourse
|
||||
HelpText=Press START to continue
|
||||
@@ -438,8 +438,8 @@ CreditsP1Y=472
|
||||
CreditsP2X=540
|
||||
CreditsP2Y=472
|
||||
CreditsColor=1,1,1,1
|
||||
CreditsShadowLength=2
|
||||
CreditsZoom=0.5
|
||||
CreditsShadowLength=0
|
||||
CreditsZoom=1.0
|
||||
|
||||
[WheelItemDisplay]
|
||||
IconX=-136
|
||||
@@ -722,19 +722,19 @@ SecondsToShow=10
|
||||
NextScreen=ScreenHighScores
|
||||
|
||||
[ScreenHighScores]
|
||||
SecondsToShow=10
|
||||
SecondsToShow=30
|
||||
NextScreen=ScreenMemoryCard
|
||||
|
||||
[ScreenMemoryCard]
|
||||
SecondsToShow=10
|
||||
SecondsToShow=5
|
||||
NextScreen=ScreenWarning
|
||||
|
||||
[ScreenWarning]
|
||||
SecondsToShow=10
|
||||
SecondsToShow=5
|
||||
NextScreen=ScreenCompany
|
||||
|
||||
[ScreenCompany]
|
||||
SecondsToShow=10
|
||||
SecondsToShow=5
|
||||
NextScreen=ScreenAlbums
|
||||
|
||||
[ScreenAlbums]
|
||||
@@ -742,9 +742,13 @@ SecondsToShow=10
|
||||
NextScreen=ScreenLogo
|
||||
|
||||
[ScreenLogo]
|
||||
SecondsToShow=20
|
||||
SecondsToShow=5
|
||||
NextScreen=ScreenDemonstration
|
||||
|
||||
[ScreenDemonstration]
|
||||
SecondsToShow=30
|
||||
NextScreen=ScreenUnlock
|
||||
NextScreen=ScreenHowToPlay
|
||||
|
||||
[ScreenHowToPlay]
|
||||
SecondsToShow=30
|
||||
NextScreen=ScreenUnlock
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
Actor::Actor()
|
||||
{
|
||||
m_bFirstUpdate = true;
|
||||
|
||||
m_iNumTweenStates = 0;
|
||||
|
||||
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 )
|
||||
{
|
||||
// LOG->Trace( "Actor::Update( %f )", fDeltaTime );
|
||||
|
||||
if( m_bFirstUpdate )
|
||||
{
|
||||
this->FirstUpdate();
|
||||
m_bFirstUpdate = false;
|
||||
}
|
||||
|
||||
// update effect
|
||||
switch( m_Effect )
|
||||
{
|
||||
|
||||
+4
-10
@@ -49,6 +49,8 @@ public:
|
||||
virtual void BeginDraw(); // pushes transform onto world matrix stack
|
||||
virtual void DrawPrimitives() = 0; // override with Actor specific action
|
||||
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 UpdateTweening( float fDeltaTime );
|
||||
|
||||
@@ -188,19 +190,11 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/*
|
||||
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;
|
||||
*/
|
||||
bool m_bFirstUpdate;
|
||||
|
||||
//
|
||||
// Stuff for tweening
|
||||
//
|
||||
|
||||
|
||||
struct TweenState
|
||||
{
|
||||
// start and end position for tweening
|
||||
|
||||
@@ -34,6 +34,7 @@ enum // DanceButtons
|
||||
DANCE_BUTTON_MENURIGHT,
|
||||
DANCE_BUTTON_MENUUP,
|
||||
DANCE_BUTTON_MENUDOWN,
|
||||
DANCE_BUTTON_INSERTCOIN,
|
||||
NUM_DANCE_BUTTONS, // leave this at the end
|
||||
};
|
||||
|
||||
@@ -50,6 +51,7 @@ enum // PumpButtons
|
||||
PUMP_BUTTON_MENURIGHT,
|
||||
PUMP_BUTTON_MENUUP,
|
||||
PUMP_BUTTON_MENUDOWN,
|
||||
PUMP_BUTTON_INSERTCOIN,
|
||||
NUM_PUMP_BUTTONS, // leave this at the end
|
||||
};
|
||||
|
||||
@@ -68,6 +70,7 @@ enum // EZ2Buttons
|
||||
EZ2_BUTTON_MENURIGHT,
|
||||
EZ2_BUTTON_MENUUP,
|
||||
EZ2_BUTTON_MENUDOWN,
|
||||
EZ2_BUTTON_INSERTCOIN,
|
||||
NUM_EZ2_BUTTONS, // leave this at the end
|
||||
};
|
||||
|
||||
@@ -84,6 +87,7 @@ enum // ParaButtons
|
||||
PARA_BUTTON_MENURIGHT,
|
||||
PARA_BUTTON_MENUUP,
|
||||
PARA_BUTTON_MENUDOWN,
|
||||
PARA_BUTTON_INSERTCOIN,
|
||||
NUM_PARA_BUTTONS, // leave this at the end
|
||||
};
|
||||
|
||||
@@ -103,6 +107,7 @@ enum // 3DDX Buttons
|
||||
DS3DDX_BUTTON_MENURIGHT,
|
||||
DS3DDX_BUTTON_MENUUP,
|
||||
DS3DDX_BUTTON_MENUDOWN,
|
||||
DS3DDX_BUTTON_INSERTCOIN,
|
||||
NUM_DS3DDX_BUTTONS, // leave this at the end.
|
||||
};
|
||||
|
||||
@@ -125,6 +130,7 @@ enum // BM Buttons
|
||||
BM_BUTTON_MENURIGHT,
|
||||
BM_BUTTON_MENUUP,
|
||||
BM_BUTTON_MENUDOWN,
|
||||
BM_BUTTON_INSERTCOIN,
|
||||
NUM_BM_BUTTONS, // leave this at the end.
|
||||
};
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuLeft)",
|
||||
@@ -92,6 +93,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
DANCE_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -100,6 +102,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
DANCE_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
DANCE_BUTTON_START, // MENU_BUTTON_START
|
||||
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
DANCE_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
DANCE_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
||||
@@ -108,6 +111,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
DANCE_BUTTON_DOWN, // MENU_BUTTON_DOWN
|
||||
DANCE_BUTTON_START, // MENU_BUTTON_START
|
||||
DANCE_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
DANCE_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -123,6 +127,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
-1, //no default key // DANCE_BUTTON_MENURIGHT
|
||||
SDLK_UP, // DANCE_BUTTON_MENUUP
|
||||
SDLK_DOWN, // DANCE_BUTTON_MENUDOWN
|
||||
SDLK_F1, // DANCE_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
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_MENUUP
|
||||
-1, //no default key // DANCE_BUTTON_MENUDOWN
|
||||
SDLK_F2, // DANCE_BUTTON_INSERTCOIN
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -157,6 +163,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuUp)",
|
||||
@@ -170,6 +177,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
PUMP_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -178,6 +186,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
PUMP_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
PUMP_BUTTON_START, // MENU_BUTTON_START
|
||||
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
PUMP_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
PUMP_BUTTON_DOWNLEFT, // MENU_BUTTON_LEFT
|
||||
@@ -186,6 +195,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
PUMP_BUTTON_UPRIGHT, // MENU_BUTTON_DOWN
|
||||
PUMP_BUTTON_CENTER, // MENU_BUTTON_START
|
||||
PUMP_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
PUMP_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -200,6 +210,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
SDLK_RIGHT, // PUMP_BUTTON_MENURIGHT
|
||||
SDLK_UP, // PUMP_BUTTON_MENUUP
|
||||
SDLK_DOWN, // PUMP_BUTTON_MENUDOWN
|
||||
SDLK_F1, // PUMP_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
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_MENUUP
|
||||
-1, //no default key // PUMP_BUTTON_MENUDOWN
|
||||
SDLK_F2, // PUMP_BUTTON_INSERTCOIN
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -235,6 +247,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuUp)",
|
||||
@@ -250,6 +263,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
EZ2_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -258,6 +272,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
EZ2_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
EZ2_BUTTON_START, // MENU_BUTTON_START
|
||||
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
EZ2_BUTTON_INSERTCOIN, // MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
EZ2_BUTTON_HANDUPLEFT, // MENU_BUTTON_LEFT
|
||||
@@ -266,6 +281,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
EZ2_BUTTON_FOOTUPRIGHT, // MENU_BUTTON_DOWN
|
||||
EZ2_BUTTON_FOOTDOWN, // MENU_BUTTON_START
|
||||
EZ2_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
EZ2_BUTTON_INSERTCOIN, // MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -282,6 +298,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
SDLK_RIGHT, // EZ2_BUTTON_MENURIGHT
|
||||
SDLK_UP, // EZ2_BUTTON_MENUUP
|
||||
SDLK_DOWN, // EZ2_BUTTON_MENUDOWN
|
||||
SDLK_F1, // EZ2_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
-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_MENUUP
|
||||
-1, //no default key // EZ2_BUTTON_MENUDOWN
|
||||
SDLK_F2, // EZ2_BUTTON_INSERTCOIN
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -317,6 +335,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuLeft)",
|
||||
@@ -330,6 +349,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
PARA_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -338,6 +358,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
PARA_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
PARA_BUTTON_START, // MENU_BUTTON_START
|
||||
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
PARA_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
PARA_BUTTON_LEFT, // MENU_BUTTON_LEFT
|
||||
@@ -346,6 +367,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
PARA_BUTTON_UPLEFT, // MENU_BUTTON_DOWN
|
||||
PARA_BUTTON_START, // MENU_BUTTON_START
|
||||
PARA_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
PARA_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -360,6 +382,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
SDLK_RIGHT, //no default key // PARA_BUTTON_MENURIGHT
|
||||
SDLK_UP, // PARA_BUTTON_MENUUP
|
||||
SDLK_DOWN, // PARA_BUTTON_MENUDOWN
|
||||
SDLK_F1, // PARA_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
-1, // PARA_BUTTON_LEFT,
|
||||
@@ -373,6 +396,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
-1, //no default key // PARA_BUTTON_MENURIGHT
|
||||
-1, // PARA_BUTTON_MENUUP
|
||||
-1,
|
||||
-1, // PARA_BUTTON_INSERTCOIN
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -396,6 +420,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuLeft)",
|
||||
@@ -412,6 +437,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
DS3DDX_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -420,6 +446,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
DS3DDX_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
||||
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
DS3DDX_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
DS3DDX_BUTTON_HANDLEFT, // MENU_BUTTON_LEFT
|
||||
@@ -428,6 +455,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
DS3DDX_BUTTON_HANDDOWN, // MENU_BUTTON_DOWN
|
||||
DS3DDX_BUTTON_START, // MENU_BUTTON_START
|
||||
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||
DS3DDX_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -445,6 +473,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
SDLK_RIGHT, //no default key // DS3DDX_BUTTON_MENURIGHT
|
||||
SDLK_UP, // DS3DDX_BUTTON_MENUUP
|
||||
SDLK_DOWN, // DS3DDX_BUTTON_MENUDOWN
|
||||
SDLK_F1, // DS3DDX_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
-1, // DS3DDX_BUTTON_HANDLEFT,
|
||||
@@ -461,6 +490,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
-1, //no default key // DS3DDX_BUTTON_MENURIGHT
|
||||
-1, // DS3DDX_BUTTON_MENUUP
|
||||
-1, // DS3DDX_BUTTON_MENUDOWN
|
||||
-1, // DS3DDX_BUTTON_INSERTCOIN
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -485,6 +515,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"MenuRight",
|
||||
"MenuUp",
|
||||
"MenuDown",
|
||||
"Insert Coin",
|
||||
},
|
||||
{ // m_szSecondaryFunction
|
||||
"(MenuLeft)",
|
||||
@@ -503,6 +534,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"(dedicated)",
|
||||
"",
|
||||
},
|
||||
{ // m_DedicatedMenuButton
|
||||
BM_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||
@@ -511,6 +543,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
BM_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||
BM_BUTTON_START, // MENU_BUTTON_START
|
||||
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
||||
BM_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_SecondaryMenuButton
|
||||
BM_BUTTON_KEY1, // MENU_BUTTON_LEFT
|
||||
@@ -519,6 +552,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
BM_BUTTON_SCRATCHDOWN, // MENU_BUTTON_DOWN
|
||||
BM_BUTTON_START, // MENU_BUTTON_START
|
||||
BM_BUTTON_SELECT, // MENU_BUTTON_BACK
|
||||
BM_BUTTON_INSERTCOIN,// MENU_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // m_iDefaultKeyboardKey
|
||||
{ // PLAYER_1
|
||||
@@ -537,6 +571,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
SDLK_RIGHT, // BM_BUTTON_MENURIGHT
|
||||
SDLK_UP, // BM_BUTTON_MENUUP
|
||||
SDLK_DOWN, // BM_BUTTON_MENUDOWN
|
||||
SDLK_F1, // BM_BUTTON_INSERTCOIN
|
||||
},
|
||||
{ // PLAYER_2
|
||||
-1, // BM_BUTTON_KEY1,
|
||||
@@ -554,6 +589,7 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
-1, // BM_BUTTON_MENURIGHT
|
||||
-1, // BM_BUTTON_MENUUP
|
||||
-1, // BM_BUTTON_MENUDOWN
|
||||
-1, // BM_BUTTON_INSERTCOIN
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -22,6 +22,7 @@ enum MenuButton
|
||||
MENU_BUTTON_DOWN,
|
||||
MENU_BUTTON_START,
|
||||
MENU_BUTTON_BACK,
|
||||
MENU_BUTTON_INSERTCOIN,
|
||||
NUM_MENU_BUTTONS, // leave this at the end
|
||||
MENU_BUTTON_INVALID
|
||||
};
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
Screen::Screen()
|
||||
{
|
||||
m_FirstUpdate = true;
|
||||
}
|
||||
|
||||
Screen::~Screen()
|
||||
@@ -106,10 +105,3 @@ void Screen::SendScreenMessage( ScreenMessage SM, float fDelay )
|
||||
QSM.fDelayRemaining = fDelay;
|
||||
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 ClearMessageQueue() { m_QueuedMessages.clear(); }
|
||||
|
||||
/* Used only by ScreenManager::Update. */
|
||||
bool FirstUpdate();
|
||||
|
||||
protected:
|
||||
|
||||
// structure for holding messages sent to a Screen
|
||||
|
||||
@@ -37,33 +37,6 @@ const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+3);
|
||||
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()" );
|
||||
|
||||
if(type != IET_FIRST_PRESS) return; // don't care
|
||||
|
||||
if( m_Fade.IsClosing() )
|
||||
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 )
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
|
||||
@@ -115,21 +111,11 @@ void ScreenAttract::HandleScreenMessage( const ScreenMessage SM )
|
||||
switch( SM )
|
||||
{
|
||||
case SM_BeginFadingOut:
|
||||
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||
if( !m_Fade.IsClosing() )
|
||||
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
||||
break;
|
||||
case SM_GoToNextScreen:
|
||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||
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
|
||||
|
||||
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.
|
||||
Chris Danford
|
||||
@@ -27,16 +28,15 @@ public:
|
||||
virtual ~ScreenAttract();
|
||||
|
||||
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 HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
private:
|
||||
void MenuStart( PlayerNumber pn );
|
||||
protected:
|
||||
|
||||
virtual CString GetMetricName() = 0; // used to loop up theme metrics
|
||||
virtual CString GetElementName() = 0; // used to loop up theme elements
|
||||
|
||||
bool m_bFirstUpdate;
|
||||
|
||||
BGAnimation m_Background;
|
||||
TransitionFade m_Fade;
|
||||
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:
|
||||
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
|
||||
|
||||
};
|
||||
|
||||
|
||||
+105
-158
@@ -72,7 +72,6 @@
|
||||
#define SURVIVE_TIME_X THEME->GetMetricF("ScreenGameplay","SurviveTimeX")
|
||||
#define SURVIVE_TIME_Y THEME->GetMetricF("ScreenGameplay","SurviveTimeY")
|
||||
#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenGameplay","SecondsBetweenComments")
|
||||
#define DEMONSTRATION_SECONDS THEME->GetMetricF("ScreenGameplay","DemonstrationSeconds")
|
||||
#define TICK_EARLY_SECONDS THEME->GetMetricF("ScreenGameplay","TickEarlySeconds")
|
||||
|
||||
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
|
||||
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+101);
|
||||
const ScreenMessage SM_BeginLoadingNextSong = ScreenMessage(SM_User+102);
|
||||
const ScreenMessage SM_BeginFadingToTitleMenu = ScreenMessage(SM_User+103);
|
||||
const ScreenMessage SM_PlayToastySound = ScreenMessage(SM_User+105);
|
||||
|
||||
// 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_PlayFailComment = ScreenMessage(SM_User+123);
|
||||
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()" );
|
||||
|
||||
int p;
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
/* Important! Don't do any with GAMESTATE in the ScreenGameplay constructor.
|
||||
* 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_pScoreDisplay[p] = NULL;
|
||||
@@ -115,16 +117,55 @@ ScreenGameplay::ScreenGameplay()
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled(p) )
|
||||
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);
|
||||
|
||||
|
||||
@@ -232,16 +283,6 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_textStageNumber.SetText( GAMESTATE->GetStageText() );
|
||||
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++ )
|
||||
{
|
||||
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].SetZoom( 0.5f );
|
||||
m_textPlayerOptions[p].SetDiffuse( RageColor(1,1,1,1) );
|
||||
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
|
||||
this->AddChild( &m_textPlayerOptions[p] );
|
||||
}
|
||||
|
||||
@@ -355,7 +395,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_textAutoPlay.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||
m_textAutoPlay.SetXY( AUTOPLAY_X, AUTOPLAY_Y );
|
||||
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 );
|
||||
|
||||
|
||||
@@ -390,20 +430,6 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_sprTryExtraStage.SetDiffuse( RageColor(1,1,1,0) );
|
||||
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();
|
||||
this->AddChild( &m_Fade );
|
||||
|
||||
@@ -418,61 +444,23 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_sprToasty.Load( THEME->GetPathTo("Graphics","gameplay toasty") );
|
||||
m_sprToasty.SetDiffuse( RageColor(1,1,1,0) );
|
||||
this->AddChild( &m_sprToasty );
|
||||
|
||||
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 );
|
||||
|
||||
|
||||
m_soundToasty.Load( THEME->GetPathTo("Sounds","gameplay toasty") );
|
||||
|
||||
|
||||
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();
|
||||
|
||||
/* XXX: We set m_textPlayerOptions[p] above, so that won't
|
||||
* include options set by the course. Should it? -glenn */
|
||||
LoadNextSong( true );
|
||||
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
|
||||
|
||||
if( GAMESTATE->m_bDemonstration )
|
||||
{
|
||||
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
|
||||
}
|
||||
LoadNextSong( true );
|
||||
}
|
||||
|
||||
ScreenGameplay::~ScreenGameplay()
|
||||
@@ -572,6 +560,9 @@ void ScreenGameplay::LoadNextSong( bool bFirstLoad )
|
||||
if( !GAMESTATE->IsPlayerEnabled(p) )
|
||||
continue;
|
||||
|
||||
m_textPlayerOptions[p].SetText( GAMESTATE->m_PlayerOptions[p].GetString() );
|
||||
|
||||
|
||||
// reset oni game over graphic
|
||||
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
|
||||
@@ -661,7 +652,7 @@ bool ScreenGameplay::AllFailedEarlier()
|
||||
}
|
||||
|
||||
// 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
|
||||
// will start coming out the speaker. Compensate for this by boosting
|
||||
@@ -709,6 +700,8 @@ hehe - Andy)
|
||||
|
||||
void ScreenGameplay::Update( float fDeltaTime )
|
||||
{
|
||||
Screen::Update( fDeltaTime );
|
||||
|
||||
int pn;
|
||||
|
||||
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
|
||||
//
|
||||
if( !GAMESTATE->m_bDemonstration ) // don't play announcer comments in demonstration
|
||||
m_fTimeLeftBeforeDancingComment -= fDeltaTime;
|
||||
if( m_fTimeLeftBeforeDancingComment <= 0 )
|
||||
{
|
||||
m_fTimeLeftBeforeDancingComment -= fDeltaTime;
|
||||
if( m_fTimeLeftBeforeDancingComment <= 0 )
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_ARCADE:
|
||||
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
||||
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
||||
else m_announcerGood.PlayRandom();
|
||||
break;
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
m_announcerOni.PlayRandom();
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; // reset for the next comment
|
||||
case PLAY_MODE_ARCADE:
|
||||
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
||||
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
||||
else m_announcerGood.PlayRandom();
|
||||
break;
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
m_announcerOni.PlayRandom();
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; // reset for the next comment
|
||||
}
|
||||
}
|
||||
|
||||
@@ -849,16 +838,8 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
m_iRowLastCrossed = iRowNow;
|
||||
}
|
||||
|
||||
|
||||
if(PlayTicks())
|
||||
if(IsTimeToPlayTicks())
|
||||
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()" );
|
||||
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
|
||||
if( DeviceI.device == DEVICE_KEYBOARD )
|
||||
{
|
||||
@@ -928,6 +889,7 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
||||
break;
|
||||
case SDLK_F8:
|
||||
PREFSMAN->m_bAutoPlay = !PREFSMAN->m_bAutoPlay;
|
||||
m_textAutoPlay.SetDiffuse( RageColor(1,1,1,PREFSMAN->m_bAutoPlay?1:0) );
|
||||
break;
|
||||
case SDLK_F9:
|
||||
case SDLK_F10:
|
||||
@@ -1146,12 +1108,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
// received while STATE_DANCING
|
||||
case SM_NotesEnded:
|
||||
{
|
||||
if( GAMESTATE->m_bDemonstration ) // Don't show "CLEARED" in Demo
|
||||
{
|
||||
this->SendScreenMessage( SM_BeginFadingToTitleMenu, 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
// save any statistics
|
||||
int p;
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
@@ -1237,9 +1193,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
LoadNextSong( false );
|
||||
m_OniFade.OpenWipingRight( SM_None );
|
||||
break;
|
||||
case SM_BeginFadingToTitleMenu:
|
||||
m_Fade.CloseWipingRight( SM_GoToTitleMenu );
|
||||
break;
|
||||
|
||||
case SM_BeginToasty:
|
||||
this->SendScreenMessage( SM_PlayToastySound, 0.3f );
|
||||
@@ -1490,9 +1443,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
else
|
||||
SCREENMAN->SetNewScreen( "ScreenGameOver" );
|
||||
break;
|
||||
case SM_GoToTitleMenu:
|
||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1512,8 +1462,7 @@ void ScreenGameplay::TweenOnScreen()
|
||||
{
|
||||
float fOriginalY = apActorsInLifeFrame[i]->GetY();
|
||||
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]->SetTweenY( fOriginalY );
|
||||
}
|
||||
@@ -1533,8 +1482,7 @@ void ScreenGameplay::TweenOnScreen()
|
||||
{
|
||||
float fOriginalY = apActorsInScoreFrame[i]->GetY();
|
||||
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]->SetTweenY( fOriginalY );
|
||||
}
|
||||
@@ -1543,8 +1491,7 @@ void ScreenGameplay::TweenOnScreen()
|
||||
{
|
||||
float fOriginalX = m_DifficultyIcon[p].GetX();
|
||||
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].SetTweenX( fOriginalX );
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#ifndef SCREENGAMEPLAY_H
|
||||
#define SCREENGAMEPLAY_H
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ScreenGameplay
|
||||
@@ -47,15 +49,16 @@ const ScreenMessage SM_ComboStopped = ScreenMessage(SM_User+210);
|
||||
class ScreenGameplay : public Screen
|
||||
{
|
||||
public:
|
||||
ScreenGameplay();
|
||||
ScreenGameplay( bool bLoadSounds = true );
|
||||
virtual ~ScreenGameplay();
|
||||
virtual void FirstUpdate();
|
||||
virtual void Update( float fDeltaTime );
|
||||
virtual void DrawPrimitives();
|
||||
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
|
||||
private:
|
||||
protected:
|
||||
void TweenOnScreen();
|
||||
void TweenOffScreen();
|
||||
|
||||
@@ -66,7 +69,7 @@ private:
|
||||
bool AllAreInDanger();
|
||||
bool AllAreFailing();
|
||||
bool AllFailedEarlier();
|
||||
bool PlayTicks() const;
|
||||
bool IsTimeToPlayTicks() const;
|
||||
|
||||
enum DancingState {
|
||||
STATE_INTRO = 0, // not allowed to press Back
|
||||
@@ -123,9 +126,6 @@ private:
|
||||
|
||||
Sprite m_sprToasty; // easter egg
|
||||
|
||||
Sprite m_sprDemonstrationOverlay;
|
||||
Sprite m_sprDemonstrationBlink;
|
||||
|
||||
RandomSample m_soundFail;
|
||||
RandomSample m_soundOniDie;
|
||||
RandomSample m_soundTryExtraStage;
|
||||
@@ -156,4 +156,4 @@ private:
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -37,8 +37,8 @@ ScreenInstructions::ScreenInstructions()
|
||||
LOG->Trace( "ScreenInstructions::ScreenInstructions()" );
|
||||
|
||||
m_Menu.Load(
|
||||
THEME->GetPathTo("BGAnimations","How To Play"),
|
||||
THEME->GetPathTo("Graphics","How To Play Top Edge"),
|
||||
THEME->GetPathTo("BGAnimations","Instructions"),
|
||||
THEME->GetPathTo("Graphics","Instructions Top Edge"),
|
||||
HELP_TEXT, false, true, TIMER_SECONDS
|
||||
);
|
||||
this->AddChild( &m_Menu );
|
||||
@@ -56,13 +56,13 @@ ScreenInstructions::ScreenInstructions()
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_ARCADE:
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play arcade");
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions arcade");
|
||||
break;
|
||||
case PLAY_MODE_ENDLESS:
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play endless");
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions endless");
|
||||
break;
|
||||
case PLAY_MODE_ONI:
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","how to play oni");
|
||||
sHowToPlayPath = THEME->GetPathTo("Graphics","instructions oni");
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
@@ -77,7 +77,7 @@ ScreenInstructions::ScreenInstructions()
|
||||
m_sprHowToPlay.BeginTweening( 0.6f, Actor::TWEEN_BIAS_BEGIN );
|
||||
m_sprHowToPlay.SetTweenX( CENTER_X );
|
||||
|
||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","how to play music") );
|
||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","instructions music") );
|
||||
}
|
||||
|
||||
ScreenInstructions::~ScreenInstructions()
|
||||
@@ -96,7 +96,7 @@ void ScreenInstructions::DrawPrimitives()
|
||||
{
|
||||
m_Menu.DrawBottomLayer();
|
||||
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 )
|
||||
|
||||
@@ -102,10 +102,10 @@ void ScreenManager::Update( float fDeltaTime )
|
||||
*
|
||||
* So, let's just drop the first update for every screen.
|
||||
*/
|
||||
if(m_ScreenStack[i]->FirstUpdate())
|
||||
continue;
|
||||
|
||||
m_ScreenStack[i]->Update( fDeltaTime );
|
||||
if( m_ScreenStack[i]->IsFirstUpdate() )
|
||||
m_ScreenStack[i]->Update( 0 );
|
||||
else
|
||||
m_ScreenStack[i]->Update( fDeltaTime );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -197,6 +197,7 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type
|
||||
#include "ScreenLogo.h"
|
||||
#include "ScreenUnlock.h"
|
||||
#include "ScreenDemonstration.h"
|
||||
#include "ScreenInstructions.h"
|
||||
#include "ScreenPrompt.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, "ScreenUnlock") ) ret = new ScreenUnlock;
|
||||
else if( 0==stricmp(sClassName, "ScreenDemonstration") ) ret = new ScreenDemonstration;
|
||||
else if( 0==stricmp(sClassName, "ScreenInstructions") ) ret = new ScreenInstructions;
|
||||
else
|
||||
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
void RefreshCreditsMessages();
|
||||
|
||||
private:
|
||||
vector<Screen*> m_ScreenStack;
|
||||
vector<Screen*> m_ScreenStack; // bottommost to topmost
|
||||
vector<Screen*> m_ScreensToDelete;
|
||||
Screen *m_ScreenBuffered;
|
||||
|
||||
|
||||
@@ -95,6 +95,19 @@ void ScreenPrompt::Input( const DeviceInput& DeviceI, const InputEventType type,
|
||||
if( m_Fade.IsOpening() )
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "GameState.h"
|
||||
#include "InputMapper.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "StepMania.h"
|
||||
|
||||
|
||||
enum {
|
||||
@@ -100,12 +101,12 @@ void ScreenSelectGame::ExportOptions()
|
||||
|
||||
void ScreenSelectGame::GoToPrevState()
|
||||
{
|
||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||
Reset();
|
||||
}
|
||||
|
||||
void ScreenSelectGame::GoToNextState()
|
||||
{
|
||||
SCREENMAN->SetNewScreen( "ScreenTitleMenu" );
|
||||
Reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -333,7 +333,7 @@ void ScreenSelectStyle::UpdateEnabledDisabled()
|
||||
if( IsEnabled(i) )
|
||||
m_sprIcon[i].SetDiffuse( RageColor(1,1,1,1) );
|
||||
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
|
||||
|
||||
@@ -58,47 +58,19 @@ const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = {
|
||||
#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected")
|
||||
#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected")
|
||||
#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected")
|
||||
#define SECONDS_BEFORE_DEMONSTRATION THEME->GetMetricF("ScreenTitleMenu","SecondsBeforeDemonstration")
|
||||
#define SECONDS_BETWEEN_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenAttract")
|
||||
#define HELP_TEXT THEME->GetMetric("ScreenTitleMenu","HelpText")
|
||||
#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen")
|
||||
|
||||
const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1);
|
||||
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()
|
||||
{
|
||||
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") );
|
||||
this->AddChild( &m_Background );
|
||||
|
||||
@@ -190,79 +162,14 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty
|
||||
if( m_Fade.IsClosing() )
|
||||
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 );
|
||||
}
|
||||
|
||||
void ScreenTitleMenu::Update( float fDelta )
|
||||
{
|
||||
if(TimeToDemonstration.PeekDeltaTime() >= SECONDS_BEFORE_DEMONSTRATION)
|
||||
{
|
||||
FadeToDemonstration();
|
||||
TimeToDemonstration.GetDeltaTime();
|
||||
}
|
||||
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 )
|
||||
{
|
||||
@@ -310,11 +217,8 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SM_GoToDemonstration:
|
||||
{
|
||||
ASSERT( GAMESTATE->m_pCurSong );
|
||||
SCREENMAN->SetNewScreen( "ScreenGameplay" );
|
||||
}
|
||||
case SM_GoToAttractLoop:
|
||||
SCREENMAN->SetNewScreen( "ScreenCompany" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -406,11 +310,7 @@ void ScreenTitleMenu::MenuStart( PlayerNumber pn )
|
||||
break;
|
||||
case CHOICE_EXIT: {
|
||||
m_soundSelect.PlayRandom();
|
||||
|
||||
SDL_Event *event;
|
||||
event = (SDL_Event *) malloc(sizeof(event));
|
||||
event->type = SDL_QUIT;
|
||||
SDL_PushEvent(event);
|
||||
Exit();
|
||||
LOG->Trace("CHOICE_EXIT: shutting down");
|
||||
}
|
||||
return;
|
||||
@@ -420,13 +320,7 @@ void ScreenTitleMenu::MenuStart( PlayerNumber pn )
|
||||
}
|
||||
|
||||
void ScreenTitleMenu::MenuBack( PlayerNumber pn )
|
||||
{
|
||||
if(m_TitleMenuChoice == CHOICE_EXIT)
|
||||
return;
|
||||
|
||||
LoseFocus( m_TitleMenuChoice );
|
||||
m_TitleMenuChoice = CHOICE_EXIT;
|
||||
m_soundChange.PlayRandom();
|
||||
GainFocus( m_TitleMenuChoice );
|
||||
{
|
||||
this->m_Fade.CloseWipingRight( SM_GoToAttractLoop );
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,6 @@ private:
|
||||
void MenuDown( PlayerNumber pn );
|
||||
void MenuBack( PlayerNumber pn );
|
||||
void MenuStart( PlayerNumber pn );
|
||||
void FadeToDemonstration();
|
||||
|
||||
TitleMenuChoice m_TitleMenuChoice;
|
||||
|
||||
|
||||
@@ -623,38 +623,12 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons
|
||||
}
|
||||
}
|
||||
|
||||
/* Pick a random song (for the demonstration). */
|
||||
bool SongManager::ChooseRandomSong()
|
||||
Song* SongManager::GetRandomSong()
|
||||
{
|
||||
if( SONGMAN->m_pSongs.empty() )
|
||||
return false;
|
||||
if( m_pSongs.empty() )
|
||||
return NULL;
|
||||
|
||||
int i;
|
||||
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;
|
||||
return SONGMAN->m_pSongs[ rand()%m_pSongs.size() ];
|
||||
}
|
||||
|
||||
Song* SongManager::GetSongFromDir( CString sDir )
|
||||
|
||||
@@ -62,9 +62,7 @@ public:
|
||||
void GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, const StyleDef *s,
|
||||
Song*& pSongOut, Notes*& pNotesOut, PlayerOptions& po_out, SongOptions& so_out );
|
||||
|
||||
/* Choose a random song from the current style. Return true
|
||||
* if successful, false if no song could be found. */
|
||||
bool ChooseRandomSong();
|
||||
Song* GetRandomSong();
|
||||
|
||||
Song* GetSongFromDir( CString sDir );
|
||||
|
||||
|
||||
@@ -108,6 +108,39 @@ void ApplyGraphicOptions()
|
||||
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();
|
||||
#include "SDL_utils.h"
|
||||
@@ -220,9 +253,7 @@ int main(int argc, char* argv[])
|
||||
FONT = new FontManager;
|
||||
SCREENMAN = new ScreenManager;
|
||||
|
||||
|
||||
// normal game
|
||||
SCREENMAN->SetNewScreen( "ScreenWarning" );
|
||||
Reset();
|
||||
|
||||
/* Run the main loop. */
|
||||
GameLoop();
|
||||
@@ -307,9 +338,10 @@ static void HandleInputEvents(float fDeltaTime)
|
||||
// pressed just F4
|
||||
PREFSMAN->m_bWindowed = !PREFSMAN->m_bWindowed;
|
||||
ApplyGraphicOptions();
|
||||
// fall through
|
||||
continue;
|
||||
/* why fall through? other code shouldn't be using
|
||||
* globally-bound keys -glenn */
|
||||
/* you're right. -Chris */
|
||||
}
|
||||
}
|
||||
else if( type == IET_FIRST_PRESS && DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F5))
|
||||
|
||||
@@ -60,7 +60,7 @@ IntDir=.\../Release6
|
||||
TargetDir=\stepmania\stepmania
|
||||
TargetName=StepMania
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -95,7 +95,7 @@ IntDir=.\../Debug6
|
||||
TargetDir=\stepmania\stepmania
|
||||
TargetName=StepMania-debug
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
|
||||
void ApplyGraphicOptions();
|
||||
|
||||
void Exit();
|
||||
|
||||
void Reset();
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -192,6 +192,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
<File
|
||||
RelativePath="ScreenCaution.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenDemonstration.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenDemonstration.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenDimensions.h">
|
||||
</File>
|
||||
|
||||
@@ -334,7 +334,7 @@ try_element_again:
|
||||
asPossibleElementFilePaths[0].GetString(), sNewFilePath.GetString());
|
||||
|
||||
#ifdef _DEBUG
|
||||
if( MessageBox(NULL, "ThemeManager", message.GetString(), MB_RETRYCANCEL ) == IDRETRY)
|
||||
if( MessageBox(NULL, message.GetString(), "ThemeManager", MB_RETRYCANCEL ) == IDRETRY)
|
||||
goto try_element_again;
|
||||
#endif
|
||||
RageException::Throw( "%s", message.GetString() );
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
; NOTE: this .NSI script is designed for NSIS v1.8+
|
||||
|
||||
Name "StepMania"
|
||||
OutFile "stepmania310.exe"
|
||||
!define PRODUCT_NAME "StepMania 3.1"
|
||||
OutFile "stepmania301.exe"
|
||||
!define PRODUCT_NAME "StepMania 3.01"
|
||||
|
||||
|
||||
; Some default compiler settings (uncomment and change at will):
|
||||
|
||||
Reference in New Issue
Block a user