diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 28dc9d12a1..f20469ea79 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -585,6 +585,7 @@ ShowRandom=false ShowPortal=false # MostPlayedSongsToShow=30 +RecentSongsToShow=30 # ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent,NormalMode,BattleMode" ChoicePreferred="sort,Preferred" diff --git a/src/ActorFrameTexture.h b/src/ActorFrameTexture.h index d3b85e0e3b..915c9c017b 100644 --- a/src/ActorFrameTexture.h +++ b/src/ActorFrameTexture.h @@ -29,9 +29,7 @@ public: virtual void DrawPrimitives(); - // // Commands - // virtual void PushSelf( lua_State *L ); private: diff --git a/src/DifficultyList.cpp b/src/DifficultyList.cpp index d679bac98b..458994ad73 100644 --- a/src/DifficultyList.cpp +++ b/src/DifficultyList.cpp @@ -267,7 +267,7 @@ void StepsDisplayList::SetFromGameState() { vector vpSteps; SongUtil::GetPlayableSteps( pSong, vpSteps ); - /* Should match the sort in ScreenSelectMusic::AfterMusicChange. */ + // Should match the sort in ScreenSelectMusic::AfterMusicChange. m_Rows.resize( vpSteps.size() ); FOREACH_CONST( Steps*, vpSteps, s ) diff --git a/src/GameManager.cpp b/src/GameManager.cpp index 8ca1db6cc7..5aa11fcbfe 100644 --- a/src/GameManager.cpp +++ b/src/GameManager.cpp @@ -1074,7 +1074,7 @@ static const Style g_Style_Ez2_Real = { TRACK_5, +EZ2_REAL_COL_SPACING*0.9f, NULL }, { TRACK_6, +EZ2_REAL_COL_SPACING*1.6f, NULL }, { TRACK_7, +EZ2_REAL_COL_SPACING*2.3f, NULL }, - }, + }, }, { // m_iInputColumn[NUM_GameController][NUM_GameButton] { 0, 6, 3, 2, 4, 1, 5, Style::END_MAPPING }, @@ -1145,7 +1145,7 @@ static const Style g_Style_Ez2_Real_Versus = { TRACK_5, +EZ2_REAL_COL_SPACING*0.9f, NULL }, { TRACK_6, +EZ2_REAL_COL_SPACING*1.6f, NULL }, { TRACK_7, +EZ2_REAL_COL_SPACING*2.3f, NULL }, - }, + }, { // PLAYER_2 { TRACK_1, -EZ2_REAL_COL_SPACING*2.3f, NULL }, { TRACK_2, -EZ2_REAL_COL_SPACING*1.6f, NULL }, @@ -1154,7 +1154,7 @@ static const Style g_Style_Ez2_Real_Versus = { TRACK_5, +EZ2_REAL_COL_SPACING*0.9f, NULL }, { TRACK_6, +EZ2_REAL_COL_SPACING*1.6f, NULL }, { TRACK_7, +EZ2_REAL_COL_SPACING*2.3f, NULL }, - }, + }, }, { // m_iInputColumn[NUM_GameController][NUM_GameButton] { 0, 6, 3, 2, 4, 1, 5, Style::END_MAPPING }, @@ -1185,8 +1185,8 @@ static const Style g_Style_Ez2_Double = { TRACK_3, -EZ2_COL_SPACING*2.5f, NULL }, { TRACK_4, -EZ2_COL_SPACING*1.5f, NULL }, { TRACK_5, -EZ2_COL_SPACING*0.5f, NULL }, - { TRACK_6, +EZ2_COL_SPACING*0.5f, NULL }, - { TRACK_7, +EZ2_COL_SPACING*1.5f, NULL }, + { TRACK_6, +EZ2_COL_SPACING*0.5f, NULL }, + { TRACK_7, +EZ2_COL_SPACING*1.5f, NULL }, { TRACK_8, +EZ2_COL_SPACING*2.5f, NULL }, { TRACK_9, +EZ2_COL_SPACING*3.5f, NULL }, { TRACK_10, +EZ2_COL_SPACING*4.5f, NULL }, @@ -1197,8 +1197,8 @@ static const Style g_Style_Ez2_Double = { TRACK_3, -EZ2_COL_SPACING*2.5f, NULL }, { TRACK_4, -EZ2_COL_SPACING*1.5f, NULL }, { TRACK_5, -EZ2_COL_SPACING*0.5f, NULL }, - { TRACK_6, +EZ2_COL_SPACING*0.5f, NULL }, - { TRACK_7, +EZ2_COL_SPACING*1.5f, NULL }, + { TRACK_6, +EZ2_COL_SPACING*0.5f, NULL }, + { TRACK_7, +EZ2_COL_SPACING*1.5f, NULL }, { TRACK_8, +EZ2_COL_SPACING*2.5f, NULL }, { TRACK_9, +EZ2_COL_SPACING*3.5f, NULL }, { TRACK_10, +EZ2_COL_SPACING*4.5f, NULL }, @@ -2519,7 +2519,7 @@ static const Style g_Style_Guitar_Five = true, // m_bUsedForEdit true, // m_bUsedForDemonstration true, // m_bUsedForHowToPlay - "five", // m_szName + "guitar-five", // m_szName StepsType_guitar_five, // m_StepsType StyleType_OnePlayerOneSide, // m_StyleType 5, // m_iColsPerPlayer @@ -2561,6 +2561,34 @@ static const Style *g_apGame_Guitar_Styles[] = static const Game g_Game_Guitar = { + "guitar", // m_szName + g_apGame_Guitar_Styles, // m_apStyles + true, // m_bCountNotesSeparately + true, // m_bAllowHopos + { // m_InputScheme + "guitar", // m_szName + NUM_GUITAR_BUTTONS, // m_iButtonsPerController + { // m_szButtonNames + { "Button Name", GameButton_Invalid }, + }, + &g_AutoKeyMappings_Guitar + }, + { + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + { GameButtonType_Step }, + }, + TNS_W1, // m_mapW1To + TNS_W1, // m_mapW2To + TNS_W1, // m_mapW3To + TNS_W1, // m_mapW4To + TNS_Miss, // m_mapW5To }; */ /** Karaoke ******************************************************************/ @@ -2903,7 +2931,7 @@ const Style *GameManager::GetFirstCompatibleStyle( const Game *pGame, int iNumPl FOREACH_CONST( const Style*, vpStyles, s ) if( (*s)->m_StepsType == st ) return *s; - FAIL_M( ssprintf("No compatible styles for %s - %s with %d player%s.", pGame->m_szName, + FAIL_M( ssprintf("No compatible styles for %s - %s with %d player%s.", pGame->m_szName, GetStepsTypeInfo(st).szName, iNumPlayers, iNumPlayers==1?"":"s") ); return NULL; } @@ -2972,12 +3000,13 @@ StepsType GameManager::StringToStepsType( RString sStepsType ) sStepsType.MakeLower(); // TODO: Format specific hacks should be moved into the file loader for that format. + // If i'm assuming this correctly, these only apply to .sm files: -aj - // HACK! We eliminated "ez2-single-hard", but we should still handle it. + // HACK: We eliminated "ez2-single-hard", but we should still handle it. if( sStepsType == "ez2-single-hard" ) sStepsType = "ez2-single"; - // HACK! "para-single" used to be called just "para" + // HACK: "para-single" used to be called just "para" if( sStepsType == "para" ) sStepsType = "para-single"; diff --git a/src/Inventory.cpp b/src/Inventory.cpp index be537c0d2c..077da6d508 100644 --- a/src/Inventory.cpp +++ b/src/Inventory.cpp @@ -138,11 +138,17 @@ void Inventory::Update( float fDelta ) void Inventory::AwardItem( int iItemIndex ) { - // CPU player is vanity only. It should have no effect on gameplay - // and should not aquire/launch attacks. + /* CPU players and replay data are vanity only. They should not effect + * gameplay by acquiring/launching attacks. */ if( m_pPlayerState->m_PlayerController == PC_CPU ) return; - + /* + if( m_pPlayerState->m_PlayerController == PC_CPU || + m_pPlayerState->m_PlayerController == PC_REPLAY) + { + return; + } + */ // search for the first open slot int iOpenSlot = -1; diff --git a/src/MusicWheel.cpp b/src/MusicWheel.cpp index 935a5ce241..73daaa859c 100644 --- a/src/MusicWheel.cpp +++ b/src/MusicWheel.cpp @@ -74,6 +74,7 @@ void MusicWheel::Load( RString sType ) SHOW_PORTAL .Load(sType,"ShowPortal"); RANDOM_PICKS_LOCKED_SONGS .Load(sType,"RandomPicksLockedSongs"); MOST_PLAYED_SONGS_TO_SHOW .Load(sType,"MostPlayedSongsToShow"); + RECENT_SONGS_TO_SHOW .Load(sType,"RecentSongsToShow"); MODE_MENU_CHOICE_NAMES .Load(sType,"ModeMenuChoiceNames"); SORT_ORDERS .Load(sType,"SortOrders"); SHOW_EASY_FLAG .Load(sType,"UseEasyMarkerFlag"); @@ -484,6 +485,9 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelIt break; case SORT_RECENT: SongUtil::SortByMostRecentlyPlayedForMachine( arraySongs ); + if( (int) arraySongs.size() > RECENT_SONGS_TO_SHOW ) + arraySongs.erase( arraySongs.begin()+RECENT_SONGS_TO_SHOW, arraySongs.end() ); + bUseSections = false; break; case SORT_BEGINNER_METER: case SORT_EASY_METER: diff --git a/src/MusicWheel.h b/src/MusicWheel.h index 854d518f1f..8a143c013c 100644 --- a/src/MusicWheel.h +++ b/src/MusicWheel.h @@ -75,6 +75,7 @@ protected: ThemeMetric SHOW_PORTAL; ThemeMetric RANDOM_PICKS_LOCKED_SONGS; ThemeMetric MOST_PLAYED_SONGS_TO_SHOW; + ThemeMetric RECENT_SONGS_TO_SHOW; ThemeMetric MODE_MENU_CHOICE_NAMES; ThemeMetricMap CHOICE; ThemeMetric1D SECTION_COLORS; diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index 51798c34fc..2199be4137 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -158,7 +158,7 @@ void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int WheelItemBase::LoadFromWheelItemData( pData, iIndex, bHasFocus, iDrawIndex ); const MusicWheelItemData *pWID = dynamic_cast( pData ); - + // hide all FOREACH_ENUM( MusicWheelItemType, i ) { @@ -186,7 +186,7 @@ void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int type = MusicWheelItemType_Song; m_TextBanner.SetFromSong( pWID->m_pSong ); - // We can do this manually.. + // We can do this manually if we wanted... maybe have a metric for overrides? -aj m_TextBanner.SetDiffuse( pWID->m_color ); m_TextBanner.SetVisible( true ); diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index 8c91d99ed0..ddf69aead4 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -278,6 +278,7 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb if( !useSMserver ) //Make sure that we are using the network return; + LOG->Trace( ssprintf("Player ID %i combo = %i", playerID, combo) ); m_packet.ClearPacket(); m_packet.Write1( NSCGSU ); @@ -291,18 +292,15 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb ctr = uint8_t( 112 ); //Code for failed (failed constant seems not to work) m_packet.Write1( ctr ); - m_packet.Write4( score ); - m_packet.Write2( (uint16_t)combo ); - m_packet.Write2( (uint16_t)m_playerLife[playerID] ); // Offset Info // Note: if a 0 is sent, then disregard data. - // ASSUMED: No step will be more than 16 seconds off center - // If assumption false: read 16 seconds either direction + // ASSUMED: No step will be more than 16 seconds off center. + // If this assumption is false, read 16 seconds in either direction. int iOffset = int( (offset+16.384)*2000.0f ); if( iOffset>65535 ) @@ -310,7 +308,7 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb if( iOffset<1 ) iOffset=1; - //Report 0 if hold, or miss (don't forget mines should report) + // Report 0 if hold, or miss (don't forget mines should report) if( step == SMOST_HITMINE || step > SMOST_W1 ) iOffset = 0; @@ -390,7 +388,7 @@ void NetworkSyncManager::StartRequest( short position ) ctr = uint8_t( ctr + (int)tSteps->GetDifficulty() ); m_packet.Write1( ctr ); - + //Notify server if this is for sync or not. ctr = char( position*16 ); m_packet.Write1( ctr ); @@ -444,7 +442,6 @@ void NetworkSyncManager::StartRequest( short position ) m_packet.ClearPacket(); - while (dontExit) { m_packet.ClearPacket(); @@ -494,7 +491,7 @@ void NetworkSyncManager::Update(float fDeltaTime) { NetServerInfo ThisServer; BroadIn.Position = 0; - if ( BroadIn.Read1() == 141 ) + if ( BroadIn.Read1() == 141 ) // SMLS_Info? { ThisServer.Name = BroadIn.ReadNT(); int port = BroadIn.Read2(); diff --git a/src/NetworkSyncManager.h b/src/NetworkSyncManager.h index 430c3e87ec..3645baa200 100644 --- a/src/NetworkSyncManager.h +++ b/src/NetworkSyncManager.h @@ -13,23 +13,24 @@ const int NETPROTOCOLVERSION=3; const int NETMAXBUFFERSIZE=1020; //1024 - 4 bytes for EzSockets const int NETNUMTAPSCORES=8; +// [SMLClientCommands name] enum NSCommand { NSCPing = 0, - NSCPingR, //1 - NSCHello, //2 - NSCGSR, //3 - NSCGON, //4 - NSCGSU, //5 - NSCSU, //6 - NSCCM, //7 - NSCRSG, //8 - NSCUUL, //9 - NSCSMS, //10 - NSCUPOpts, //11 - NSCSMOnline, //12 - NSCFormatted, //13 - NSCAttack, //14 + NSCPingR, // 1 [SMLC_PingR] + NSCHello, // 2 [SMLC_Hello] + NSCGSR, // 3 [SMLC_GameStart] + NSCGON, // 4 [SMLC_GameOver] + NSCGSU, // 5 [SMLC_GameStatusUpdate] + NSCSU, // 6 [SMLC_StyleUpdate] + NSCCM, // 7 [SMLC_Chat] + NSCRSG, // 8 [SMLC_RequestStart] + NSCUUL, // 9 [SMLC_Reserved1] + NSCSMS, // 10 [SMLC_MusicSelect] + NSCUPOpts, // 11 [SMLC_PlayerOpts] + NSCSMOnline, // 12 [SMLC_SMO] + NSCFormatted, // 13 [SMLC_RESERVED1] + NSCAttack, // 14 [SMLC_RESERVED2] NUM_NS_COMMANDS }; diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 0ae0f23057..9bf6e168c9 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -517,7 +517,7 @@ void ScreenGameplay::Init() pi->m_pLifeMeter->Load( pi->GetPlayerState(), pi->GetPlayerStageStats() ); pi->m_pLifeMeter->SetName( ssprintf("Life%s",pi->GetName().c_str()) ); LOAD_ALL_COMMANDS_AND_SET_XY( pi->m_pLifeMeter ); - this->AddChild( pi->m_pLifeMeter ); + this->AddChild( pi->m_pLifeMeter ); } break; case PLAY_MODE_BATTLE: @@ -2757,6 +2757,7 @@ void ScreenGameplay::SaveReplay() FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) { XNode *p = new XNode("ReplayData"); + // todo: add version number, since this will change in the future -aj // song information node SongID songID; diff --git a/src/ScreenMiniMenu.cpp b/src/ScreenMiniMenu.cpp index d0c9aa9492..c8a0231434 100644 --- a/src/ScreenMiniMenu.cpp +++ b/src/ScreenMiniMenu.cpp @@ -32,7 +32,7 @@ namespace void ScreenMiniMenu::MiniMenu( const MenuDef* pDef, ScreenMessage SM_SendOnOK, ScreenMessage SM_SendOnCancel, float fX, float fY ) { PrepareToLoadScreen( pDef->sClassName ); - + g_pMenuDef = pDef; g_SendOnOK = SM_SendOnOK; g_SendOnCancel = SM_SendOnCancel; @@ -97,7 +97,7 @@ void ScreenMiniMenu::AfterChangeValueOrRow( PlayerNumber pn ) vpns.push_back( p ); for( unsigned i=0; i choices; - bool bThemeTitle; - bool bThemeItems; + bool bThemeTitle; + bool bThemeItems; MenuRowDef() {} MenuRowDef( int r, RString n, MenuRowUpdateEnabled pe, EditMode s, bool bTT, bool bTI, int d, const char *c0=NULL, const char *c1=NULL, const char *c2=NULL, const char *c3=NULL, const char *c4=NULL, const char *c5=NULL, const char *c6=NULL, const char *c7=NULL, const char *c8=NULL, const char *c9=NULL, const char *c10=NULL, const char *c11=NULL, const char *c12=NULL, const char *c13=NULL, const char *c14=NULL, const char *c15=NULL, const char *c16=NULL, const char *c17=NULL, const char *c18=NULL, const char *c19=NULL, const char *c20=NULL, const char *c21=NULL, const char *c22=NULL, const char *c23=NULL, const char *c24=NULL, const char *c25=NULL ) diff --git a/src/ScreenWithMenuElements.cpp b/src/ScreenWithMenuElements.cpp index a8aca5f21f..3e58aa5da8 100644 --- a/src/ScreenWithMenuElements.cpp +++ b/src/ScreenWithMenuElements.cpp @@ -114,7 +114,7 @@ void ScreenWithMenuElements::Init() this->AddChild( &m_Cancel ); LOAD_ALL_COMMANDS( m_Cancel ); - /* Grab the music path here; don't GetPath during BeginScreen. */ + // Grab the music path here; don't GetPath during BeginScreen. if( PLAY_MUSIC ) m_sPathToMusic = THEME->GetPathS( m_sName, "music" ); } diff --git a/src/SongUtil.cpp b/src/SongUtil.cpp index 273512c5e5..171170e7ed 100644 --- a/src/SongUtil.cpp +++ b/src/SongUtil.cpp @@ -596,7 +596,7 @@ RString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so return ssprintf( "%s-%s", SecondsToMMSS(iMinLength).c_str(), SecondsToMMSS(iMaxLength).c_str() ); } case SORT_POPULARITY: - case SORT_RECENT: // todo: make recent split into two groups: top X, and "the rest" -aj + case SORT_RECENT: return RString(); case SORT_TOP_GRADES: { @@ -740,7 +740,7 @@ RString SongUtil::MakeUniqueEditDescription( const Song *pSong, StepsType st, co if( IsEditDescriptionUnique(pSong, st, sTemp, NULL) ) return sTemp; } - + // Edit limit guards should keep us from ever having more than 1000 edits per song. ASSERT(0); return RString(); @@ -800,7 +800,6 @@ bool SongUtil::ValidateCurrentStepsDescription( const RString &sAnswer, RString if( pSteps->GetDescription() == sAnswer ) return true; - if( pSteps->IsAnEdit() ) { return SongUtil::ValidateCurrentEditStepsDescription( sAnswer, sErrorOut ); @@ -869,8 +868,7 @@ void SongUtil::GetPlayableStepsTypes( const Song *pSong, set &vOut ) vStepsTypes.insert( (*s)->m_StepsType ); /* filter out hidden StepsTypes, and remove steps that we don't - * have enough stages left to play. - */ + * have enough stages left to play. */ // this being const may have caused some problems... -aj const vector &vstToShow = CommonMetrics::STEPS_TYPES_TO_SHOW.GetValue(); FOREACHS( StepsType, vStepsTypes, st )