From c8745d1b47880098401adcd9cc89669692b0e23e Mon Sep 17 00:00:00 2001 From: Kevin Slaughter Date: Wed, 12 Feb 2003 06:25:51 +0000 Subject: [PATCH] Updates, new joint premium advertisin implemented.. also global operator key, and global credit key.. see my TODO file. I have talked with chris, the global credit key will soon be able to be changed in the map inputs.. the one in there now has no bearing on the gloal key. --- stepmania/Themes/default/metrics.ini | 9 ++- stepmania/src/GameState.h | 1 + stepmania/src/MusicWheel.cpp | 4 +- stepmania/src/Screen.cpp | 14 +---- stepmania/src/ScreenIntroMovie.h | 24 ++++++++ stepmania/src/ScreenManager.cpp | 30 +++++++++- stepmania/src/ScreenMapControllers.cpp | 13 +++++ stepmania/src/ScreenSelectStyle.cpp | 57 ++++++++++++++----- stepmania/src/ScreenSelectStyle.h | 1 + stepmania/src/ScreenTitleMenu.cpp | 77 ++++++++++++++++---------- stepmania/src/ScreenTitleMenu.h | 3 + stepmania/src/StepMania.cpp | 36 ++++++++++++ stepmania/src/StepMania.dsp | 40 +++++++++---- 13 files changed, 238 insertions(+), 71 deletions(-) create mode 100644 stepmania/src/ScreenIntroMovie.h diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 63999ef07b..94d46c0a41 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -37,6 +37,7 @@ ColorSelected=0.5,1,0.5,1 ZoomNotSelected=1.0 ZoomSelected=1.3 SecondsBetweenComments=12 +SecondsBetweenJointPremiumScroll=15 SecondsBeforeAttract=30 HelpTextHome=Use &UP; &DOWN; to select, then press START HelpTextPay=Insert coins, then press START @@ -63,6 +64,8 @@ BounceJoinMessage=1 FoldOnJoin=1 [ScreenSelectStyle] +JointPremiumBannerX=550 +JointPremiumBannerY=400 IconsStartX=60 IconsSpacingX=76 IconsStartY=100 @@ -803,6 +806,10 @@ ShowCategories=1 CoursesToShow=Courses/NaokiStandard.crs,Courses/ParanoiaBrothers.crs NotesTypesToHide=dance-couple,dance-solo +[ScreenIntroMovie] +SecondsToShow=15 +NextScreen=ScreenDemonstration + [ScreenMemoryCard] SecondsToShow=5 NextScreen=ScreenWarning @@ -827,7 +834,7 @@ VersionY=20 SongsX=20 SongsY=20 SecondsToShow=10 -NextScreen=ScreenDemonstration +NextScreen=ScreenIntroMovie [ScreenDemonstration] SecondsToShow=30 diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index 0846bacbac..e3262fe62c 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -44,6 +44,7 @@ public: bool m_bSideIsJoined[NUM_PLAYERS]; // left side, right side int m_iCoins; // not "credits" PlayerNumber m_MasterPlayerNumber; // used in Styles where one player controls both sides + bool m_bIsOnSystemMenu; // system screens will not be effected by the operator key -- Miryokuteki int GetNumSidesJoined() { int iNumSidesJoined = 0; diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index 669b8cf3c2..32a882ac21 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -951,8 +951,10 @@ void MusicWheel::StartRandom() m_Moving = -1; m_TimeBeforeMovingBegins = 0; m_SpinSpeed = 1.0f/ROULETTE_SWITCH_SECONDS; - m_SpinSpeed *= 2.0f; /* faster! */ + m_SpinSpeed *= 20.0f; /* faster! */ m_WheelState = STATE_RANDOM_SPINNING; + + this->Select(); RebuildWheelItemDisplays(); } diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 99d1e252c0..4b240dfa3c 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -101,19 +101,7 @@ void Screen::Input( const DeviceInput& DeviceI, const InputEventType type, const void Screen::MenuCoin( PlayerNumber pn ) { - switch( PREFSMAN->m_CoinMode ) - { - case PrefsManager::COIN_PAY: - GAMESTATE->m_iCoins++; - SCREENMAN->RefreshCreditsMessages(); - // fall through - case PrefsManager::COIN_HOME: - case PrefsManager::COIN_FREE: - SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") ); - break; - default: - ASSERT(0); - } + // This is now handled globally by Stepmania.cpp -- Miryokuteki } void Screen::SendScreenMessage( const ScreenMessage SM, float fDelay ) diff --git a/stepmania/src/ScreenIntroMovie.h b/stepmania/src/ScreenIntroMovie.h new file mode 100644 index 0000000000..86f880cd96 --- /dev/null +++ b/stepmania/src/ScreenIntroMovie.h @@ -0,0 +1,24 @@ +/* +----------------------------------------------------------------------------- + Class: ScreenIntroMovie + + Desc: Base class for all attraction screens. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford + Kevin Slaughter +----------------------------------------------------------------------------- +*/ + +#include "ScreenAttract.h" + + +class ScreenIntroMovie : public ScreenAttract +{ +public: + ScreenIntroMovie() : ScreenAttract("ScreenIntroMovie","intro movie") { }; + +}; + + + diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 296c63ba35..8b8fd77382 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -195,6 +195,7 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type #include "ScreenRanking.h" #include "ScreenMemoryCard.h" #include "ScreenCompany.h" +#include "ScreenIntroMovie.h" #include "ScreenAlbums.h" #include "ScreenLogo.h" #include "ScreenUnlock.h" @@ -251,6 +252,7 @@ Screen* ScreenManager::MakeNewScreen( CString sClassName ) else if( 0==stricmp(sClassName, "ScreenRanking") ) ret = new ScreenRanking; else if( 0==stricmp(sClassName, "ScreenMemoryCard") ) ret = new ScreenMemoryCard; else if( 0==stricmp(sClassName, "ScreenCompany") ) ret = new ScreenCompany; + else if( 0==stricmp(sClassName, "ScreenIntroMovie") ) ret = new ScreenIntroMovie; else if( 0==stricmp(sClassName, "ScreenAlbums") ) ret = new ScreenAlbums; else if( 0==stricmp(sClassName, "ScreenLogo") ) ret = new ScreenLogo; else if( 0==stricmp(sClassName, "ScreenUnlock") ) ret = new ScreenUnlock; @@ -325,6 +327,15 @@ void ScreenManager::SetNewScreen( CString sClassName ) LOG->Trace( "Loaded %s in %f", sClassName.GetString(), t.GetDeltaTime()); SetNewScreen( pNewScreen ); + + // If this is a system menu, don't let the global operator key touch it! -- Miryokuteki + if( sClassName == "ScreenOptionsMenu" || sClassName == "ScreenMachineOptions" || + sClassName == "ScreenOptions" || sClassName == "ScreenInputOptions" || + sClassName == "ScreenGraphicOptions" || sClassName == "ScreenGameplayOptions" || + sClassName == "ScreenMapControllers" || sClassName == "ScreenPlayerOptions" || + sClassName == "ScreenAppearanceOptions" || sClassName == "ScreenEdit" || + sClassName == "ScreenEditMenu" ) GAMESTATE->m_bIsOnSystemMenu = true; + else GAMESTATE->m_bIsOnSystemMenu = false; } void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() ) @@ -387,7 +398,21 @@ void ScreenManager::RefreshCreditsMessages() m_textCreditInfo[p].SetZoom( CREDITS_ZOOM ); m_textCreditInfo[p].SetDiffuse( CREDITS_COLOR ); m_textCreditInfo[p].SetShadowLength( CREDITS_SHADOW_LENGTH ); + + int _c = GAMESTATE->m_iCoins; + int _x = PREFSMAN->m_iCoinsPerCredit; + LOG->Trace("Actual coins: %d",GAMESTATE->m_iCoins); + + unsigned int _r = 0; + + while (_c >= _x) { + _c -= _x; + _r++; + + } + + switch( PREFSMAN->m_CoinMode ) { case PrefsManager::COIN_HOME: @@ -399,7 +424,8 @@ void ScreenManager::RefreshCreditsMessages() m_textCreditInfo[p].SetText( "NOT PRESENT" ); break; case PrefsManager::COIN_PAY: - m_textCreditInfo[p].SetText( ssprintf("CREDIT(S) %d / %d", GAMESTATE->m_iCoins, PREFSMAN->m_iCoinsPerCredit ) ); + if (_c == 0) m_textCreditInfo[p].SetText( ssprintf("CREDIT(S) %d ",_r) ); + else m_textCreditInfo[p].SetText( ssprintf("CREDIT(S) %d (%d / %d)",_r,_c,_x ) ); break; case PrefsManager::COIN_FREE: m_textCreditInfo[p].SetText( "FREE PLAY" ); @@ -408,4 +434,4 @@ void ScreenManager::RefreshCreditsMessages() ASSERT(0); } } -} +} \ No newline at end of file diff --git a/stepmania/src/ScreenMapControllers.cpp b/stepmania/src/ScreenMapControllers.cpp index 6cf446ccf7..be1f29fc14 100644 --- a/stepmania/src/ScreenMapControllers.cpp +++ b/stepmania/src/ScreenMapControllers.cpp @@ -144,6 +144,19 @@ void ScreenMapControllers::Input( const DeviceInput& DeviceI, const InputEventTy if( m_bWaitingForPress ) // we're going to map an input { + //MAKE SURE F1 AND LCTRL CANNOT BE USED! THESE ARE PREDEFINED IN STEPMANIA.CPP + if ( DeviceI.button == SDLK_LCTRL || DeviceI.button == SDLK_F1 ) + { + m_textError.SetText( "F1 & Left-Control are system keys, and cannot be mapped." ); + SOUNDMAN->PlayOnce( THEME->GetPathTo( "sounds","menu invalid" ) ); + m_textError.StopTweening(); + m_textError.SetDiffuse( RageColor(0,1,0,1) ); + m_textError.BeginTweening( 3 ); + m_textError.BeginTweening( 1 ); + m_textError.SetTweenDiffuse( RageColor(0,1,0,0) ); + return; + } + // ignore joystick D-Pad presses if the user has set their pref. if( PREFSMAN->m_bIgnoreJoyAxes && DEVICE_JOY1 <= DeviceI.device && DeviceI.device <= DEVICE_JOY4 && diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index 68c41e0559..24825430df 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -25,19 +25,21 @@ #include "ThemeManager.h" -#define ICONS_START_X THEME->GetMetricF("ScreenSelectStyle","IconsStartX") -#define ICONS_SPACING_X THEME->GetMetricF("ScreenSelectStyle","IconsSpacingX") -#define ICONS_START_Y THEME->GetMetricF("ScreenSelectStyle","IconsStartY") -#define ICONS_SPACING_Y THEME->GetMetricF("ScreenSelectStyle","IconsSpacingY") -#define EXPLANATION_X THEME->GetMetricF("ScreenSelectStyle","ExplanationX") -#define EXPLANATION_Y THEME->GetMetricF("ScreenSelectStyle","ExplanationY") -#define INFO_X THEME->GetMetricF("ScreenSelectStyle","InfoX") -#define INFO_Y THEME->GetMetricF("ScreenSelectStyle","InfoY") -#define PREVIEW_X THEME->GetMetricF("ScreenSelectStyle","PreviewX") -#define PREVIEW_Y THEME->GetMetricF("ScreenSelectStyle","PreviewY") -#define HELP_TEXT THEME->GetMetric("ScreenSelectStyle","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectStyle","TimerSeconds") -#define NEXT_SCREEN THEME->GetMetric("ScreenSelectStyle","NextScreen") +#define JOINT_PREMIUM_BANNER_X THEME->GetMetricF("ScreenSelectStyle","JointPremiumBannerX") +#define JOINT_PREMIUM_BANNER_Y THEME->GetMetricF("ScreenSelectStyle","JointPremiumBannerY") +#define ICONS_START_X THEME->GetMetricF("ScreenSelectStyle","IconsStartX") +#define ICONS_SPACING_X THEME->GetMetricF("ScreenSelectStyle","IconsSpacingX") +#define ICONS_START_Y THEME->GetMetricF("ScreenSelectStyle","IconsStartY") +#define ICONS_SPACING_Y THEME->GetMetricF("ScreenSelectStyle","IconsSpacingY") +#define EXPLANATION_X THEME->GetMetricF("ScreenSelectStyle","ExplanationX") +#define EXPLANATION_Y THEME->GetMetricF("ScreenSelectStyle","ExplanationY") +#define INFO_X THEME->GetMetricF("ScreenSelectStyle","InfoX") +#define INFO_Y THEME->GetMetricF("ScreenSelectStyle","InfoY") +#define PREVIEW_X THEME->GetMetricF("ScreenSelectStyle","PreviewX") +#define PREVIEW_Y THEME->GetMetricF("ScreenSelectStyle","PreviewY") +#define HELP_TEXT THEME->GetMetric("ScreenSelectStyle","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectStyle","TimerSeconds") +#define NEXT_SCREEN THEME->GetMetric("ScreenSelectStyle","NextScreen") @@ -93,6 +95,12 @@ ScreenSelectStyle::ScreenSelectStyle() m_sprInfo.SetXY( INFO_X, INFO_Y ); this->AddChild( &m_sprInfo ); + if( PREFSMAN->m_bJointPremium ) + { + m_sprJointPremium.Load( THEME->GetPathTo("Graphics","select style joint premium banner") ); + m_sprJointPremium.SetXY( JOINT_PREMIUM_BANNER_X, JOINT_PREMIUM_BANNER_Y ); + this->AddChild( &m_sprJointPremium ); + } const GameDef* pGameDef = GAMESTATE->GetCurrentGameDef(); const StyleDef* pStyleDef = GAMEMAN->GetStyleDefForStyle( m_aPossibleStyles[m_iSelection] ); @@ -259,13 +267,31 @@ void ScreenSelectStyle::MenuStart( PlayerNumber pn ) { if( pn!=PLAYER_INVALID && !GAMESTATE->m_bSideIsJoined[pn] ) { + if ( PREFSMAN->m_CoinMode == PrefsManager::COIN_HOME || PREFSMAN->m_CoinMode == PrefsManager::COIN_FREE ) + { /* Home and free do not require credits..fall thru */ + } + else if( PREFSMAN->m_CoinMode == PrefsManager::COIN_PAY ) + { + if( !PREFSMAN->m_bJointPremium && GAMESTATE->m_iCoins >= PREFSMAN->m_iCoinsPerCredit ) + { /* Joint Premium is NOT enabled, but we have enough credits. Pay up! */ + GAMESTATE->m_iCoins -= PREFSMAN->m_iCoinsPerCredit; + } + else if( !PREFSMAN->m_bJointPremium && GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit ) + { /* Joint Premium is NOT enabled, and we do not enough credits */ + return; + } + + } + /* If credits had to be used, it's already taken care of.. add the player */ SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu start") ); GAMESTATE->m_bSideIsJoined[pn] = true; SCREENMAN->RefreshCreditsMessages(); UpdateEnabledDisabled(); - return; // don't fall through + return; } + + GAMESTATE->m_CurStyle = GetSelectedStyle(); CString sCurStyleName = GAMESTATE->GetCurrentStyleDef()->m_szName; @@ -305,6 +331,7 @@ void ScreenSelectStyle::TweenOnScreen() m_sprIcon[i]->FadeOn( (m_aPossibleStyles.size()-i)*0.05f, "Left Accelerate", MENU_ELEMENTS_TWEEN_TIME ); m_sprExplanation.FadeOn( 0, "Right Accelerate", MENU_ELEMENTS_TWEEN_TIME ); + m_sprJointPremium.FadeOn( 0, "FadeIn", MENU_ELEMENTS_TWEEN_TIME ); // let AfterChange tween Preview and Info } @@ -319,6 +346,8 @@ void ScreenSelectStyle::TweenOffScreen() m_sprPreview.FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME ); m_sprInfo.FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME ); + + m_sprJointPremium.FadeOff( 0, "FadeOut", MENU_ELEMENTS_TWEEN_TIME ); } diff --git a/stepmania/src/ScreenSelectStyle.h b/stepmania/src/ScreenSelectStyle.h index a66138d229..f0e114a8aa 100644 --- a/stepmania/src/ScreenSelectStyle.h +++ b/stepmania/src/ScreenSelectStyle.h @@ -51,6 +51,7 @@ private: Sprite m_sprExplanation; Sprite m_sprPreview; Sprite m_sprInfo; + Sprite m_sprJointPremium; // Sprites that are never drawn. They exist to keep the style textures in memory Sprite m_sprDummyPreview[NUM_STYLES]; diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 347d532799..7603d217d7 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -27,31 +27,38 @@ #include "RageSoundManager.h" -#define HELP_X THEME->GetMetricF("ScreenTitleMenu","HelpX") -#define HELP_Y THEME->GetMetricF("ScreenTitleMenu","HelpY") -#define CHOICES_X THEME->GetMetricF("ScreenTitleMenu","ChoicesX") -#define CHOICES_START_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesStartY") -#define CHOICES_SPACING_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesSpacingY") -#define CHOICES_SHADOW_LENGTH THEME->GetMetricF("ScreenTitleMenu","ChoicesShadowLength") -#define COLOR_NOT_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorNotSelected") -#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected") -#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected") -#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected") -#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenComments") -#define SECONDS_BEFORE_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBeforeAttract") -#define HELP_TEXT_HOME THEME->GetMetric("ScreenTitleMenu","HelpTextHome") -#define HELP_TEXT_PAY THEME->GetMetric("ScreenTitleMenu","HelpTextPay") -#define HELP_TEXT_FREE THEME->GetMetric("ScreenTitleMenu","HelpTextFree") -#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen") +#define HELP_X THEME->GetMetricF("ScreenTitleMenu","HelpX") +#define HELP_Y THEME->GetMetricF("ScreenTitleMenu","HelpY") +#define CHOICES_X THEME->GetMetricF("ScreenTitleMenu","ChoicesX") +#define CHOICES_START_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesStartY") +#define CHOICES_SPACING_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesSpacingY") +#define CHOICES_SHADOW_LENGTH THEME->GetMetricF("ScreenTitleMenu","ChoicesShadowLength") +#define COLOR_NOT_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorNotSelected") +#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected") +#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected") +#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected") +#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenComments") +#define SECONDS_BETWEEN_JOINT_PREMIUM_SCROLL THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenJointPremiumScroll") +#define SECONDS_BEFORE_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBeforeAttract") +#define HELP_TEXT_HOME THEME->GetMetric("ScreenTitleMenu","HelpTextHome") +#define HELP_TEXT_PAY THEME->GetMetric("ScreenTitleMenu","HelpTextPay") +#define HELP_TEXT_FREE THEME->GetMetric("ScreenTitleMenu","HelpTextFree") +#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen") const ScreenMessage SM_PlayComment = ScreenMessage(SM_User+1); const ScreenMessage SM_GoToAttractLoop = ScreenMessage(SM_User+13); - +const ScreenMessage SM_ScrollJointPremium = ScreenMessage(SM_User+14); ScreenTitleMenu::ScreenTitleMenu() { LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" ); - + if( PREFSMAN->m_bJointPremium ) + { + m_sprJointPremiumMsg.Load( THEME->GetPathTo("Graphics","joint premium scroll message") ); + this->AddChild( &m_sprJointPremiumMsg ); + m_sprJointPremiumMsg.SetX( SCREEN_RIGHT+m_sprJointPremiumMsg.GetUnzoomedWidth()/2 ); + m_sprJointPremiumMsg.SetY( SCREEN_BOTTOM/2 ); + } m_textHelp.LoadFromFont( THEME->GetPathTo("Fonts","help") ); CString sHelpText; @@ -110,6 +117,7 @@ ScreenTitleMenu::ScreenTitleMenu() SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","title menu music") ); this->SendScreenMessage( SM_PlayComment, SECONDS_BETWEEN_COMMENTS); + this->SendScreenMessage( SM_ScrollJointPremium, 1); this->MoveToTail( &(ScreenAttract::m_Fade) ); // put it in the back so it covers up the stuff we just added } @@ -129,16 +137,11 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_F3 ) { + /* Coin mode changed.. since this effects how this screen appears, the screen + is reloaded */ (int&)PREFSMAN->m_CoinMode = (PREFSMAN->m_CoinMode+1) % PrefsManager::NUM_COIN_MODES; - ResetGame(); - CString sMessage = "Coin Mode: "; - switch( PREFSMAN->m_CoinMode ) - { - case PrefsManager::COIN_HOME: sMessage += "HOME"; break; - case PrefsManager::COIN_PAY: sMessage += "PAY"; break; - case PrefsManager::COIN_FREE: sMessage += "FREE"; break; - } - SCREENMAN->SystemMessage( sMessage ); + SCREENMAN->RefreshCreditsMessages(); + SCREENMAN->SetNewScreen("ScreenTitleMenu"); return; } @@ -201,6 +204,7 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty break; // not enough coins else GAMESTATE->m_iCoins -= PREFSMAN->m_iCoinsPerCredit; + SCREENMAN->RefreshCreditsMessages(); // fall through case PrefsManager::COIN_HOME: case PrefsManager::COIN_FREE: @@ -258,7 +262,11 @@ void ScreenTitleMenu::Update( float fDelta ) this->SendScreenMessage( SM_GoToAttractLoop, 0 ); TimeToDemonstration.GetDeltaTime(); } - + if( PREFSMAN->m_bJointPremium && TimeToJPScroll.PeekDeltaTime() >= SECONDS_BETWEEN_JOINT_PREMIUM_SCROLL ) + { + this->SendScreenMessage( SM_ScrollJointPremium, 0 ); + TimeToJPScroll.GetDeltaTime(); + } Screen::Update(fDelta); } @@ -267,6 +275,19 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM ) { switch( SM ) { + case SM_ScrollJointPremium: + if( PREFSMAN->m_bJointPremium ) + { + m_sprJointPremiumMsg.StopTweening(); + m_sprJointPremiumMsg.SetDiffuse( RageColor(1,1,1,1) ); + + m_sprJointPremiumMsg.SetX( SCREEN_RIGHT+m_sprJointPremiumMsg.GetUnzoomedWidth()/2 ); + m_sprJointPremiumMsg.SetY( SCREEN_BOTTOM/2 ); + + m_sprJointPremiumMsg.BeginTweening( 13.0f, Actor::TWEEN_BIAS_BEGIN ); // slide on + m_sprJointPremiumMsg.SetTweenX( SCREEN_LEFT-m_sprJointPremiumMsg.GetUnzoomedWidth()*2 ); + } + break; case SM_PlayComment: m_soundAttract.PlayRandom(); this->SendScreenMessage( SM_PlayComment, SECONDS_BETWEEN_COMMENTS ); diff --git a/stepmania/src/ScreenTitleMenu.h b/stepmania/src/ScreenTitleMenu.h index 6c479cb07f..b44f096df4 100644 --- a/stepmania/src/ScreenTitleMenu.h +++ b/stepmania/src/ScreenTitleMenu.h @@ -74,8 +74,11 @@ private: RandomSample m_soundChange; RandomSample m_soundSelect; RandomSample m_soundInvalid; + + Sprite m_sprJointPremiumMsg; RageTimer TimeToDemonstration; + RageTimer TimeToJPScroll; }; diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 02954c3a5a..2e56ac0626 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -404,6 +404,42 @@ static void HandleInputEvents(float fDeltaTime) if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_NUMLOCK && type != IET_FIRST_PRESS ) continue; // skip + + + /* Global operator key.. like arcade, allows quick immediate access + to the adminstrative options panel. A global boolean has been + added to not allow this to function on system option screens, + or in the step editor. This will save the hassle of an "accidental + keystroke, and your edit is gone". -- Miryokuteki + */ + if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_LCTRL && type == IET_FIRST_PRESS ) + { + if( !GAMESTATE->m_bIsOnSystemMenu ) + { + SCREENMAN->SystemMessage("OPERATOR"); + SCREENMAN->SetNewScreen("ScreenOptionsMenu"); + } + } + + // Global credit key.. accepts a credit anywhere, like the arcade -- Mirykouteki + if( DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_F1 && type == IET_FIRST_PRESS ) + { + switch( PREFSMAN->m_CoinMode ) + { + case PrefsManager::COIN_FREE: + case PrefsManager::COIN_HOME: + case PrefsManager::COIN_PAY: + GAMESTATE->m_iCoins++; + SCREENMAN->RefreshCreditsMessages(); + SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","insert coin") ); + break; + default: + ASSERT(0); + } + } + + + if(DeviceI == DeviceInput(DEVICE_KEYBOARD, SDLK_F4)) { if(type != IET_FIRST_PRESS) continue; diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 772b57d7db..a9d886c93a 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -57,10 +57,10 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /pdb:none # Begin Special Build Tool IntDir=.\../Release6 -TargetDir=\stepmania\stepmania +TargetDir=\Program Files\GNU\WinCvs 1.2\stepmania TargetName=StepMania SOURCE="$(InputPath)" -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -92,10 +92,10 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib # Begin Special Build Tool IntDir=.\../Debug6 -TargetDir=\stepmania\stepmania +TargetDir=\Program Files\GNU\WinCvs 1.2\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 @@ -976,6 +976,14 @@ SOURCE=.\DifficultyRating.h # End Source File # Begin Source File +SOURCE=.\EditMenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\EditMenu.h +# End Source File +# Begin Source File + SOURCE=.\FadingBanner.cpp # End Source File # Begin Source File @@ -1016,6 +1024,14 @@ SOURCE=.\GroupList.h # End Source File # Begin Source File +SOURCE=.\JukeboxMenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\JukeboxMenu.h +# End Source File +# Begin Source File + SOURCE=.\MenuElements.cpp # End Source File # Begin Source File @@ -1136,14 +1152,6 @@ SOURCE=.\SnapDisplay.h # End Source File # Begin Source File -SOURCE=.\SongSelector.cpp -# End Source File -# Begin Source File - -SOURCE=.\SongSelector.h -# End Source File -# Begin Source File - SOURCE=.\StageDisplay.cpp # End Source File # Begin Source File @@ -1537,6 +1545,14 @@ SOURCE=.\ScreenJukebox.h # End Source File # Begin Source File +SOURCE=.\ScreenJukeboxMenu.cpp +# End Source File +# Begin Source File + +SOURCE=.\ScreenJukeboxMenu.h +# End Source File +# Begin Source File + SOURCE=.\ScreenLogo.cpp # End Source File # Begin Source File