From 248ad096af7a11b2a5a5a486336e201673fd078b Mon Sep 17 00:00:00 2001 From: Andrew Livy Date: Fri, 21 Jun 2002 23:08:19 +0000 Subject: [PATCH] Ez2dancer Player Select Implementation (Note: Doesnt change to style select yet) --- stepmania/src/ScreenEz2SelectPlayer.cpp | 397 ++++++++++++++++++++++++ stepmania/src/ScreenEz2SelectPlayer.h | 56 ++++ stepmania/src/StepMania.dsp | 4 - 3 files changed, 453 insertions(+), 4 deletions(-) create mode 100644 stepmania/src/ScreenEz2SelectPlayer.cpp create mode 100644 stepmania/src/ScreenEz2SelectPlayer.h diff --git a/stepmania/src/ScreenEz2SelectPlayer.cpp b/stepmania/src/ScreenEz2SelectPlayer.cpp new file mode 100644 index 0000000000..9f874f14f1 --- /dev/null +++ b/stepmania/src/ScreenEz2SelectPlayer.cpp @@ -0,0 +1,397 @@ +/**************************************** +ScreenEzSelectPlayer,cpp +Desc: See Header +Copyright (C): +Andrew Livy +*****************************************/ + +/* Includes */ + +#include "stdafx.h" +#include "ScreenEz2SelectPlayer.h" +#include "ScreenManager.h" +#include "PrefsManager.h" +#include "RageMusic.h" +#include "ScreenTitleMenu.h" +#include "ScreenCaution.h" +#include "GameConstantsAndTypes.h" +#include "ThemeManager.h" +#include "ScreenSelectDifficulty.h" +#include "ScreenSandbox.h" +#include "GameManager.h" +#include "RageLog.h" +#include "AnnouncerManager.h" + +/* Constants */ + +const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User + 1); +const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 2); + +const CString N_PLAYERS[] = { + "one player", + "two players", +}; + +const float TWEEN_TIME = 0.35f; +const D3DXCOLOR OPT_NOT_SELECTED = D3DXCOLOR(0.3f,0.3f,0.3f,1); +const D3DXCOLOR OPT_SELECTED = D3DXCOLOR(1.0f,1.0f,1.0f,1); + +const float OPT_X[NUM_EZ2_GRAPHICS] = { + CENTER_X+200, // This is the pad X + CENTER_X-200, // This is the pad X + CENTER_X-198, // This is the 1p X + CENTER_X+195, // This is the 2p X +}; // tells us the default X position +const float OPT_Y[NUM_EZ2_GRAPHICS] = { + CENTER_Y+130, + CENTER_Y+130, + CENTER_Y+115, + CENTER_Y+115, +}; // tells us the default Y position + +/* Variable Declaration */ +int bounce=0; // used for the bouncing of the '1p' and '2p' images +int direct=0; // direction of the bouncing of the '1p' and '2p' images +int wait=0; // how long we wait between updating the bounce. + + +/************************************ +ScreenEz2SelectPlayer (Constructor) +Desc: Sets up the screen display +************************************/ + +ScreenEz2SelectPlayer::ScreenEz2SelectPlayer() +{ + LOG->WriteLine( "ScreenEz2SelectPlayer::ScreenEz2SelectPlayer()" ); + + /* + for( int s=0; sm_CurGame ) // games match + m_aPossibleStyles.Add( style ); + } +*/ +// m_iSelection = 0; +/* + for( int i=0; iGetPathTo(GRAPHIC_SELECT_STYLE_ICONS) ); + m_sprIcon[i].StopAnimating(); + m_sprIcon[i].SetState( style ); + m_sprIcon[i].SetXY( ICONS_START_X + ICONS_SPACING_X*i, ICON_Y ); + this->AddActor( &m_sprIcon[i] ); + } + + m_sprExplanation.Load( THEME->GetPathTo(GRAPHIC_SELECT_STYLE_EXPLANATION) ); + m_sprExplanation.SetXY( EXPLANATION_X, EXPLANATION_Y ); + this->AddActor( &m_sprExplanation ); + + m_sprPreview.SetXY( PREVIEW_X, PREVIEW_Y ); + this->AddActor( &m_sprPreview ); + + m_sprInfo.SetXY( INFO_X, INFO_Y ); + this->AddActor( &m_sprInfo ); +*/ + +m_iSelectedStyle=0; + +// Load in the sprites we will be working with. + for( int i=0; iGetPathTo(GRAPHIC_SELECT_DIFFICULTY_HARD_PICTURE); + break; + case 1: + sPadGraphicPath = THEME->GetPathTo(GRAPHIC_SELECT_DIFFICULTY_HARD_PICTURE); + break; + case 2: + sPadGraphicPath = THEME->GetPathTo(GRAPHIC_SELECT_DIFFICULTY_MEDIUM_PICTURE); + break; + case 3: + sPadGraphicPath = THEME->GetPathTo(GRAPHIC_SELECT_DIFFICULTY_EASY_PICTURE); + break; + } + m_sprOpt[i].Load( sPadGraphicPath ); + m_sprOpt[i].SetXY( OPT_X[i], OPT_Y[i] ); + m_sprOpt[i].SetZoom( 1 ); + this->AddActor( &m_sprOpt[i] ); + } + + + m_Menu.Load( + THEME->GetPathTo(GRAPHIC_SELECT_STYLE_BACKGROUND), + THEME->GetPathTo(GRAPHIC_SELECT_STYLE_TOP_EDGE), + ssprintf("Use %c %c to select, then press START", char(1), char(2) ) + ); + this->AddActor( &m_Menu ); + + m_soundChange.Load( THEME->GetPathTo(SOUND_SELECT_STYLE_CHANGE) ); + m_soundSelect.Load( THEME->GetPathTo(SOUND_MENU_START) ); + + +// SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_STYLE_INTRO) ); + + + if( !MUSIC->IsPlaying() ) + { + MUSIC->Load( THEME->GetPathTo(SOUND_MENU_MUSIC) ); + MUSIC->Play( true ); + } + +// AfterChange(); +// TweenOnScreen(); + m_Menu.TweenOnScreenFromBlack( SM_None ); +} + +/************************************ +~ScreenEz2SelectStyle (Destructor) +Desc: Writes line to log when screen +is terminated. +************************************/ +ScreenEz2SelectPlayer::~ScreenEz2SelectPlayer() +{ + LOG->WriteLine( "ScreenEz2SelectPlayer::~ScreenEz2SelectPlayer()" ); +} + + +/************************************ +AnimateGraphics +Desc: Animates the 1p/2p selection +************************************/ +void ScreenEz2SelectPlayer::AnimateGraphics() +{ +/********** THIS NEEDS IMPROVING WITH TIMER FUNCTIONS ***********/ + +if (bounce < 10 && direct == 0 && wait == 2) // Bounce 1p/2p up + { + bounce++; + if (m_iSelectedStyle == 0) + { + m_sprOpt[2].SetXY( OPT_X[2], OPT_Y[2] - bounce); + } + else if (m_iSelectedStyle == 1) + { + m_sprOpt[3].SetXY( OPT_X[3], OPT_Y[3] - bounce); + } + else + { + m_sprOpt[2].SetXY( OPT_X[2], OPT_Y[2] - bounce); + m_sprOpt[3].SetXY( OPT_X[3], OPT_Y[3] - bounce); + } + + if (bounce == 10) + { + direct = 1; + } + wait = 0; + } + else if (bounce > 0 && direct == 1 && wait == 2) // bounce 1p/2p down + { + bounce--; + if (m_iSelectedStyle == 0) + { + m_sprOpt[2].SetXY( OPT_X[2], OPT_Y[2] - bounce); + } + else if (m_iSelectedStyle == 1) + { + m_sprOpt[3].SetXY( OPT_X[3], OPT_Y[3] - bounce); + } + else + { + m_sprOpt[2].SetXY( OPT_X[2], OPT_Y[2] - bounce); + m_sprOpt[3].SetXY( OPT_X[3], OPT_Y[3] - bounce); + } + + if (bounce == 0) + { + direct = 0; + } + wait = 0; + } + + if (wait < 2) // don't make the 1p/2p bounce too quick. + { + wait++; + } +} + +/************************************ +DrawPrimitives +Desc: Draws the screen =P +************************************/ + +void ScreenEz2SelectPlayer::DrawPrimitives() +{ + AnimateGraphics(); + m_Menu.DrawBottomLayer(); + Screen::DrawPrimitives(); + m_Menu.DrawTopLayer(); +} + +/************************************ +Input +Desc: Handles player input. +************************************/ +void ScreenEz2SelectPlayer::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ) +{ + LOG->WriteLine( "ScreenEz2SelectPlayer::Input()" ); + + if( m_Menu.IsClosing() ) + return; + + Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler +} + +/************************************ +HandleScreenMessage +Desc: Handles Screen Messages and changes + game states. +************************************/ +void ScreenEz2SelectPlayer::HandleScreenMessage( const ScreenMessage SM ) +{ + Screen::HandleScreenMessage( SM ); + + switch( SM ) + { + case SM_MenuTimer: + MenuStart(PLAYER_NONE); + break; + case SM_GoToPrevState: + MUSIC->Stop(); + SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + break; + case SM_GoToNextState: + SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + break; + } +} + + +/************************************ +MenuBack +Desc: Actions performed when a player +presses the button bound to back +************************************/ + +void ScreenEz2SelectPlayer::MenuBack( const PlayerNumber p ) +{ + MUSIC->Stop(); + + m_Menu.TweenOffScreenToBlack( SM_GoToPrevState, true ); + +// m_Fade.CloseWipingLeft( SM_GoToPrevState ); + +// TweenOffScreen(); +} + +/************************************ +SetFadedStyles +Desc: Fades out non-highlighted items +depending on the users choice. +************************************/ +void ScreenEz2SelectPlayer::SetFadedStyles() +{ + m_sprOpt[0].SetTweenDiffuseColor( OPT_NOT_SELECTED ); + m_sprOpt[1].SetTweenDiffuseColor( OPT_NOT_SELECTED ); + m_sprOpt[2].SetTweenDiffuseColor( OPT_NOT_SELECTED ); + m_sprOpt[3].SetTweenDiffuseColor( OPT_NOT_SELECTED ); + if (m_iSelectedStyle != 1) + { + m_sprOpt[2].SetTweenDiffuseColor( OPT_SELECTED ); + m_sprOpt[3].SetTweenDiffuseColor( OPT_SELECTED ); + } + else + { + m_sprOpt[0].SetTweenDiffuseColor( OPT_SELECTED ); + m_sprOpt[1].SetTweenDiffuseColor( OPT_SELECTED ); + } +} + +/************************************ +MenuRight +Desc: Actions performed when a player +presses the button bound to right +************************************/ +void ScreenEz2SelectPlayer::MenuRight( PlayerNumber p ) +{ + + m_soundChange.PlayRandom(); + + if (m_iSelectedStyle == 2) + { + m_iSelectedStyle = 0; + } + else + { + m_iSelectedStyle++; + } + +} + +/************************************ +MenuLeft +Desc: Actions performed when a player +presses the button bound to left +************************************/ +void ScreenEz2SelectPlayer::MenuLeft( PlayerNumber p ) +{ + + m_soundChange.PlayRandom(); + + if (m_iSelectedStyle == 0) + { + m_iSelectedStyle = 2; + } + else + { + m_iSelectedStyle--; + } + +} + +/************************************ +MenuStart +Desc: Actions performed when a player +presses the button bound to start +************************************/ +void ScreenEz2SelectPlayer::MenuStart( PlayerNumber p ) +{ +// GAME->m_sCurrentStyle = DANCE_STYLES[m_iSelectedStyle]; + + m_soundSelect.PlayRandom(); + + this->ClearMessageQueue(); + + m_Menu.TweenOffScreenToMenu( SM_GoToNextState ); + + TweenOffScreen(); + +} + +/************************************ +TweenOffScreen +Desc: Squashes graphics before the screen +changes state. +************************************/ +void ScreenEz2SelectPlayer::TweenOffScreen() +{ + if (m_iSelectedStyle == 0 || m_iSelectedStyle == 2) + { + m_sprOpt[1].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + m_sprOpt[1].SetTweenZoomY( 0 ); + m_sprOpt[2].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + m_sprOpt[2].SetTweenZoomY( 0 ); + } + if (m_iSelectedStyle == 1 || m_iSelectedStyle == 2) + { + m_sprOpt[0].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + m_sprOpt[0].SetTweenZoomY( 0 ); + m_sprOpt[3].BeginTweening( MENU_ELEMENTS_TWEEN_TIME ); + m_sprOpt[3].SetTweenZoomY( 0 ); + } +} diff --git a/stepmania/src/ScreenEz2SelectPlayer.h b/stepmania/src/ScreenEz2SelectPlayer.h new file mode 100644 index 0000000000..a2c4566f7a --- /dev/null +++ b/stepmania/src/ScreenEz2SelectPlayer.h @@ -0,0 +1,56 @@ +/******************************** +ScreenEz2SelectPlayer.h +Desc: The "Player Select Screen" for Ez2dancer +Copyright (c): +Andrew Livy +*********************************/ + +/* Includes */ + +#include "Screen.h" +#include "Sprite.h" +#include "BitmapText.h" +#include "TransitionFade.h" +#include "Quad.h" +#include "RandomSample.h" +#include "Quad.h" +#include "MenuElements.h" + +/* Class Definition */ + +const int NUM_EZ2_GRAPHICS = 4; + +class ScreenEz2SelectPlayer : public Screen +{ +public: + ScreenEz2SelectPlayer(); // Constructor + virtual ~ScreenEz2SelectPlayer(); // Destructor + + /* Public Function Prototypes */ + virtual void DrawPrimitives(); + virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); + virtual void HandleScreenMessage( const ScreenMessage SM ); + + void MenuLeft( const PlayerNumber p ); + void MenuRight( const PlayerNumber p ); + void MenuStart( const PlayerNumber p ); + void MenuBack( const PlayerNumber p ); + void TweenOffScreen(); +// void TweenOnScreen(); + +private: + /* Private Function Prototypes */ + + // void BeforeChange(); + void AfterChange(); + void SetFadedStyles(); + void AnimateGraphics(); + /* Variable Declarations */ + + MenuElements m_Menu; + Sprite m_sprOpt[NUM_EZ2_GRAPHICS]; + int m_iSelectedStyle; + + RandomSample m_soundChange; + RandomSample m_soundSelect; +}; diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 61fe265db8..00e2022d09 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -1032,10 +1032,6 @@ SOURCE=.\ScreenTitleMenu.h # PROP Default_Filter "" # Begin Source File -SOURCE=.\AnnouncerManager.cpp -# End Source File -# Begin Source File - SOURCE=.\AnnouncerManager.h # End Source File # Begin Source File