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