ScreenEz2SelectPlayer::ScreenEz2SelectPlayer( CString sName ) : ScreenWithMenuElements( sName ) { // Unjoin the players, then let them join back in on this screen // GAMESTATE->m_bPlayersCanJoin = true; FOREACH_PlayerNumber( p ) GAMESTATE->m_bSideIsJoined[p] = false; LOG->Trace( "ScreenEz2SelectPlayer::ScreenEz2SelectPlayer()" ); m_Background.LoadFromAniDir( THEME->GetPathToB("ScreenEz2SelectPlayer background") ); this->AddChild( &m_Background ); // animated background =) FOREACH_PlayerNumber( p ) { m_sprJoinFrame[p].Load( THEME->GetPathToG("ScreenEz2SelectPlayer join frame 1x2") ); m_sprJoinFrame[p].StopAnimating(); m_sprJoinFrame[p].SetState( p ); m_sprJoinFrame[p].SetXY( JOIN_FRAME_X(p), JOIN_FRAME_Y(p) ); this->AddChild( &m_sprJoinFrame[p] ); if( GAMESTATE->m_bSideIsJoined[p] ) m_sprJoinFrame[p].SetZoomY( 0 ); m_sprJoinMessage[p].Load( THEME->GetPathToG("ScreenEz2SelectPlayer join message 2x2") ); m_sprJoinMessage[p].StopAnimating(); m_sprJoinMessage[p].SetState( p ); m_sprJoinMessage[p].SetXY( JOIN_MESSAGE_X(p), JOIN_MESSAGE_Y(p) ); if( BOUNCE_JOIN_MESSAGE ) m_sprJoinMessage[p].SetEffectBounce( 0.5f, RageVector3(0,10,0) ); this->AddChild( &m_sprJoinMessage[p] ); if( GAMESTATE->m_bSideIsJoined[p] ) { m_sprJoinMessage[p].SetState( p+NUM_PLAYERS ); if( FOLD_ON_JOIN ) { m_sprJoinMessage[p].SetZoomY( 0 ); m_sprJoinFrame[p].SetZoomY( 0 ); } } } SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("select player intro") ); SOUND->PlayMusic( THEME->GetPathToS("ScreenSelectPlayer music") ); TweenOnScreen(); }
void ScreenSelectDifficulty::Init() { ScreenSelect::Init(); FOREACH_PlayerNumber( p ) { m_iChoiceOnPage[p] = 0; m_bChosen[p] = false; } unsigned c; for( c=0; c<m_aGameCommands.size(); c++ ) { if( (int)c < NUM_CHOICES_ON_PAGE_1 ) m_GameCommands[PAGE_1].push_back( m_aGameCommands[c] ); else m_GameCommands[PAGE_2].push_back( m_aGameCommands[c] ); } c = 0; for( int page=0; page<NUM_PAGES; page++ ) { for( unsigned choice=0; choice<m_GameCommands[page].size(); choice++, c++ ) { m_sprPicture[page][choice].SetName( ssprintf("PicturePage%dChoice%d",page+1,choice+1) ); m_sprPicture[page][choice].Load( THEME->GetPathG(m_sName,ssprintf("picture%d",c+1)) ); m_framePages.AddChild( &m_sprPicture[page][choice] ); m_sprInfo[page][choice].SetName( ssprintf("InfoPage%dChoice%d",page+1,choice+1) ); m_sprInfo[page][choice].Load( THEME->GetPathG(m_sName,ssprintf("info%d",c+1)) ); m_framePages.AddChild( &m_sprInfo[page][choice] ); } m_sprMore[page].SetName( ssprintf("MorePage%d",page+1) ); m_sprMore[page].Load( THEME->GetPathG(m_sName,ssprintf("more page%d",page+1)) ); m_framePages.AddChild( &m_sprMore[page] ); m_sprExplanation[page].SetName( ssprintf("ExplanationPage%d",page+1) ); m_sprExplanation[page].Load( THEME->GetPathG(m_sName,"explanation") ); m_sprExplanation[page].StopAnimating(); m_sprExplanation[page].SetState( page ); m_framePages.AddChild( &m_sprExplanation[page] ); } FOREACH_PlayerNumber( p ) { CLAMP( m_iChoiceOnPage[p], 0, (int)m_GameCommands[0].size()-1 ); m_bChosen[p] = false; if( !GAMESTATE->IsHumanPlayer(p) ) continue; m_sprShadow[p].SetName( "Shadow" ); m_sprShadow[p].Load( THEME->GetPathG(m_sName,"shadow 2x1") ); m_sprShadow[p].StopAnimating(); m_sprShadow[p].SetState( p ); m_sprShadow[p].SetDiffuse( RageColor(0,0,0,0.6f) ); m_framePages.AddChild( &m_sprShadow[p] ); m_sprCursor[p].SetName( "Cursor" ); m_sprCursor[p].Load( THEME->GetPathG(m_sName,"cursor 2x1") ); m_sprCursor[p].StopAnimating(); m_sprCursor[p].SetState( p ); m_framePages.AddChild( &m_sprCursor[p] ); m_sprOK[p].SetName( "OK" ); m_sprOK[p].Load( THEME->GetPathG(m_sName,"ok 2x1") ); m_sprOK[p].SetState( p ); m_sprOK[p].StopAnimating(); m_sprOK[p].SetDiffuse( RageColor(1,1,1,0) ); m_framePages.AddChild( &m_sprOK[p] ); } this->AddChild( &m_framePages ); m_soundChange.Load( THEME->GetPathS(m_sName,"change"), true ); m_soundDifficult.Load( ANNOUNCER->GetPathTo("select difficulty challenge") ); m_fLockInputTime = LOCK_INPUT_SECONDS; this->UpdateSelectableChoices(); TweenOnScreen(); this->SortByDrawOrder(); }
ScreenSelectCharacter::ScreenSelectCharacter( CString sClassName ) : ScreenWithMenuElements( sClassName ) { LOG->Trace( "ScreenSelectCharacter::ScreenSelectCharacter()" ); vector<Character*> apCharacters; GAMESTATE->GetCharacters( apCharacters ); if( apCharacters.empty() ) { HandleScreenMessage( SM_GoToNextScreen ); return; } switch( GAMESTATE->m_PlayMode ) { // For Rave/Battle mode, we force the players to select characters // (by not returning in this switch) case PLAY_MODE_BATTLE: case PLAY_MODE_RAVE: break; default: /* Non Rave/Battle mode, just skip this screen if disabled. */ if( PREFSMAN->m_ShowDancingCharacters != PrefsManager::CO_SELECT ) { HandleScreenMessage( SM_GoToNextScreen ); return; } } FOREACH_PlayerNumber( p ) { m_iSelectedCharacter[p] = 0; if( GAMESTATE->IsHumanPlayer(p) ) m_SelectionRow[p] = CHOOSING_HUMAN_CHARACTER; } FOREACH_PlayerNumber( p ) { if( !GAMESTATE->IsPlayerEnabled(p) ) continue; m_sprTitle[p].Load( THEME->GetPathToG("ScreenSelectCharacter title 2x2") ); m_sprTitle[p].SetState( GAMESTATE->IsHumanPlayer(p) ? p : 2+p ); m_sprTitle[p].StopAnimating(); m_sprTitle[p].Command( TITLE_ON_COMMAND(p) ); this->AddChild( &m_sprTitle[p] ); m_sprCard[p].Command( CARD_ON_COMMAND(p) ); this->AddChild( &m_sprCard[p] ); m_sprCardArrows[p].Load( THEME->GetPathToG("ScreenSelectCharacter card arrows") ); m_sprCardArrows[p].Command( CARD_ARROWS_ON_COMMAND(p) ); this->AddChild( &m_sprCardArrows[p] ); for( unsigned i=0; i<MAX_CHAR_ICONS_TO_SHOW; i++ ) { m_sprIcons[p][i].ScaleToClipped( ICON_WIDTH, ICON_HEIGHT ); this->AddChild( &m_sprIcons[p][i] ); } if(GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE || GAMESTATE->m_PlayMode == PLAY_MODE_RAVE) { m_sprAttackFrame[p].Load( THEME->GetPathToG("ScreenSelectCharacter attack frame 1x2") ); m_sprAttackFrame[p].StopAnimating(); m_sprAttackFrame[p].SetState( p ); m_sprAttackFrame[p].Command( ATTACK_FRAME_ON_COMMAND(p) ); this->AddChild( &m_sprAttackFrame[p] ); for( int i=0; i<NUM_ATTACK_LEVELS; i++ ) for( int j=0; j<NUM_ATTACKS_PER_LEVEL; j++ ) { float fX = ATTACK_ICONS_START_X(p) + ATTACK_ICONS_SPACING_X*j; float fY = ATTACK_ICONS_START_Y(p) + ATTACK_ICONS_SPACING_Y*i; m_AttackIcons[p][i][j].SetXY( fX, fY ); m_AttackIcons[p][i][j].Command( ATTACK_ICONS_ON_COMMAND(p) ); this->AddChild( &m_AttackIcons[p][i][j] ); } } } m_sprExplanation.Load( THEME->GetPathToG("ScreenSelectCharacter explanation") ); m_sprExplanation.Command( EXPLANATION_ON_COMMAND ); this->AddChild( &m_sprExplanation ); m_soundChange.Load( THEME->GetPathToS("ScreenSelectCharacter change") ); SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("select group intro") ); SOUND->PlayMusic( THEME->GetPathToS("ScreenSelectCharacter music") ); FOREACH_PlayerNumber( p ) { if( GAMESTATE->IsHumanPlayer(p) ) { AfterRowChange( (PlayerNumber)p ); AfterValueChange( (PlayerNumber)p ); } for( unsigned i=0; i<MAX_CHAR_ICONS_TO_SHOW; i++ ) m_sprIcons[p][i].Command( ICONS_ON_COMMAND(p) ); } TweenOnScreen(); this->SortByDrawOrder(); }