diff --git a/src/MusicWheel.cpp b/src/MusicWheel.cpp index 85dbc2000b..77303f5286 100644 --- a/src/MusicWheel.cpp +++ b/src/MusicWheel.cpp @@ -23,6 +23,7 @@ #include "MessageManager.h" static Preference g_bMoveRandomToEnd( "MoveRandomToEnd", false ); +static Preference g_bPrecacheAllSorts( "PreCacheAllWheelSorts", false); #define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2)) #define WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("%sText",s.c_str()) ); @@ -69,18 +70,18 @@ void MusicWheel::Load( RString sType ) { ROULETTE_SWITCH_SECONDS .Load(sType,"RouletteSwitchSeconds"); ROULETTE_SLOW_DOWN_SWITCHES .Load(sType,"RouletteSlowDownSwitches"); - NUM_SECTION_COLORS .Load(sType,"NumSectionColors"); + NUM_SECTION_COLORS .Load(sType,"NumSectionColors"); SONG_REAL_EXTRA_COLOR .Load(sType,"SongRealExtraColor"); - SORT_MENU_COLOR .Load(sType,"SortMenuColor"); - SHOW_ROULETTE .Load(sType,"ShowRoulette"); - SHOW_RANDOM .Load(sType,"ShowRandom"); - SHOW_PORTAL .Load(sType,"ShowPortal"); + SORT_MENU_COLOR .Load(sType,"SortMenuColor"); + SHOW_ROULETTE .Load(sType,"ShowRoulette"); + SHOW_RANDOM .Load(sType,"ShowRandom"); + 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"); + SORT_ORDERS .Load(sType,"SortOrders"); + SHOW_EASY_FLAG .Load(sType,"UseEasyMarkerFlag"); USE_SECTIONS_WITH_PREFERRED_GROUP .Load(sType,"UseSectionsWithPreferredGroup"); HIDE_INACTIVE_SECTIONS .Load(sType,"OnlyShowActiveSection"); REMIND_WHEEL_POSITIONS .Load(sType,"RemindWheelPositions"); @@ -113,25 +114,36 @@ void MusicWheel::Load( RString sType ) * stable_sort) from its output, and title will be the secondary sort, without having * to re-sort by title each time. */ SONGMAN->SortSongs(); + + + FOREACH_ENUM( SortOrder, so ) { + m_WheelItemDatasStatus[so]=INVALID; + } } void MusicWheel::BeginScreen() { RageTimer timer; RString times; - /* Build all of the wheel item data. Do this after selecting the extra stage, - * so it knows to always display it. */ - FOREACH_ENUM( SortOrder, so ) - { - BuildWheelItemDatas( m_WheelItemDatas[so], so ); - times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() ); - } - LOG->Trace( "MusicWheel sorting took: %s", times.c_str() ); + FOREACH_ENUM( SortOrder, so ) { + if(m_WheelItemDatasStatus[so]!=INVALID) { + m_WheelItemDatasStatus[so]=NEEDREFILTER; + + } - /* Set m_LastModeMenuItem to the first item that matches the current mode. (Do this - * after building wheel item data.) */ + if(g_bPrecacheAllSorts) { + readyWheelItemsData(so); + times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() ); + } + } + if(g_bPrecacheAllSorts) { + LOG->Trace( "MusicWheel sorting took: %s", times.c_str() ); + } + + // Set m_LastModeMenuItem to the first item that matches the current mode. (Do this + // after building wheel item data.) { - const vector &from = m_WheelItemDatas[SORT_MODE_MENU]; + const vector &from = getWheelItemsData(SORT_MODE_MENU); for( unsigned i=0; im_pAction ); @@ -227,14 +239,19 @@ void MusicWheel::BeginScreen() MusicWheel::~MusicWheel() { - FOREACH_ENUM( SortOrder, so ) - FOREACH( MusicWheelItemData*, m_WheelItemDatas[so], i ) + FOREACH_ENUM( SortOrder, so ) { + vector::iterator i = m__UnFilteredWheelItemDatas[so].begin(); + vector::iterator iEnd = m__UnFilteredWheelItemDatas[so].end(); + for( ; i != iEnd; ++i ) { delete *i; + } + + } } -/* If a song or course is set in GAMESTATE and available, select it. Otherwise, - * choose the first available song or course. Return true if an item was set, - * false if no items are available. */ +/* If a song or course is set in GAMESTATE and available, select it. Otherwise, choose the + * first available song or course. Return true if an item was set, false if no items are + * available. */ bool MusicWheel::SelectSongOrCourse() { if( GAMESTATE->m_pPreferredSong && SelectSong( GAMESTATE->m_pPreferredSong ) ) @@ -247,7 +264,7 @@ bool MusicWheel::SelectSongOrCourse() return true; // Select the first selectable song based on the sort order... - vector &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &wiWheelItems = getWheelItemsData(GAMESTATE->m_SortOrder); for( unsigned i = 0; i < wiWheelItems.size(); i++ ) { if( wiWheelItems[i]->m_pSong ) @@ -280,7 +297,7 @@ bool MusicWheel::SelectSong( const Song *p ) return false; unsigned i; - vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &from = getWheelItemsData(GAMESTATE->m_SortOrder); for( i=0; im_pSong == p ) @@ -308,7 +325,7 @@ bool MusicWheel::SelectCourse( const Course *p ) return false; unsigned i; - vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &from = getWheelItemsData(GAMESTATE->m_SortOrder); for( i=0; im_pCourse == p ) @@ -335,7 +352,7 @@ bool MusicWheel::SelectModeMenuItem() { // Select the last-chosen option. ASSERT( GAMESTATE->m_SortOrder == SORT_MODE_MENU ); - const vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + const vector &from = getWheelItemsData(GAMESTATE->m_SortOrder); unsigned i; for( i=0; i &arrayWheelIt WID.m_Flags.iStagesForSong = 1; } } +} +vector & MusicWheel::getWheelItemsData(SortOrder so) { // Update the popularity and init icons. + readyWheelItemsData(so); + return m__WheelItemDatas[so]; +} + +void MusicWheel::readyWheelItemsData(SortOrder so) { + if(m_WheelItemDatasStatus[so]!=VALID) { + RageTimer timer; + + vector &aUnFilteredDatas=m__UnFilteredWheelItemDatas[so]; + + if(m_WheelItemDatasStatus[so]==INVALID) { + BuildWheelItemDatas( aUnFilteredDatas, so ); + } + FilterWheelItemDatas( aUnFilteredDatas, m__WheelItemDatas[so], so ); + m_WheelItemDatasStatus[so]=VALID; + + LOG->Trace( "MusicWheel sorting took: %f", timer.GetTimeSinceStart() ); + } + +} + +void MusicWheel::FilterWheelItemDatas(vector &aUnFilteredDatas, vector &aFilteredData, SortOrder so ) +{ + + unsigned unfilteredSize=aUnFilteredDatas.size(); + + /* Only add TYPE_PORTAL if there's at least one song on the list. */ + bool bFoundAnySong = false; + for( unsigned i=0; i < unfilteredSize; i++ ) { + if( aUnFilteredDatas[i]->m_Type == TYPE_SONG ) { + bFoundAnySong = true; + break; + } + } + + vector aiRemove; + aiRemove.insert( aiRemove.begin(), unfilteredSize, false ); + + const int iMaxStagesForSong = GAMESTATE->GetSmallestNumStagesLeftForAnyHumanPlayer(); + + Song *pExtraStageSong = NULL; + if( GAMESTATE->IsAnExtraStage() ) + { + Steps *pSteps; + SONGMAN->GetExtraStageInfo( GAMESTATE->IsExtraStage2(), GAMESTATE->GetCurrentStyle(), pExtraStageSong, pSteps ); + } + + /* Mark any songs that aren't playable in aiRemove. */ + + for( unsigned i=0; i< unfilteredSize; i++ ) + { + MusicWheelItemData& WID = *aUnFilteredDatas[i]; + + /* If we have no songs, remove Random and Portal. */ + if( WID.m_Type == TYPE_RANDOM || WID.m_Type == TYPE_PORTAL ) + { + if( !bFoundAnySong ) + aiRemove[i] = true; + continue; + } + + /* Filter songs that we don't have enough stages to play. */ + if( WID.m_Type == TYPE_SONG ) + { + Song* pSong = WID.m_pSong; + + /* Never remove the extra stage song. */ + if( pExtraStageSong && WID.m_pSong == pExtraStageSong ) + continue; + + /* Check that we have enough stages to play this song. */ + if( GAMESTATE->GetNumStagesMultiplierForSong(WID.m_pSong) > iMaxStagesForSong ) + { + aiRemove[i] = true; + continue; + } + + int iLocked = UNLOCKMAN->SongIsLocked( pSong ); + if( iLocked & LOCKED_DISABLED ) + { + aiRemove[i] = true; + continue; + } + + /* If we're on an extra stage, and this song is selected, ignore #SELECTABLE. */ + if( pSong != GAMESTATE->m_pCurSong || !GAMESTATE->IsAnExtraStage() ) + { + /* Hide songs that asked to be hidden via #SELECTABLE. */ + if( iLocked & LOCKED_SELECTABLE ) + { + aiRemove[i] = true; + continue; + } + if( so != SORT_ROULETTE && iLocked & LOCKED_ROULETTE ) + { + aiRemove[i] = true; + continue; + } + } + + /* Hide locked songs. If RANDOM_PICKS_LOCKED_SONGS, hide in Roulette and Random, + * too. */ + if( (so!=SORT_ROULETTE || !RANDOM_PICKS_LOCKED_SONGS) && iLocked ) + { + aiRemove[i] = true; + continue; + } + + /* If the song has no steps for the current style, remove it. */ + if( !pSong->HasStepsType(GAMESTATE->GetCurrentStyle()->m_StepsType) ) + { + aiRemove[i] = true; + continue; + } + } + + if( WID.m_Type == TYPE_COURSE ) + { + if( !WID.m_pCourse->IsPlayableIn(GAMESTATE->GetCurrentStyle()->m_StepsType) ) + aiRemove[i] = true; + } + } + + /* Filter out the songs we're removing. */ + + aFilteredData.reserve( unfilteredSize ); + for( unsigned i=0; i< unfilteredSize; i++ ) + { + if( aiRemove[i] ) + continue; + aFilteredData.push_back( aUnFilteredDatas[i] ); + } + + // Update the song count in each section header. + unsigned filteredSize=aFilteredData.size(); + for( unsigned i=0; i < filteredSize; ) + { + MusicWheelItemData& WID = *aFilteredData[i]; + ++i; + if( WID.m_Type != TYPE_SECTION ) + continue; + + // Count songs in this section + WID.m_iSectionCount = 0; + for( ; i < filteredSize && aFilteredData[i]->m_sText == WID.m_sText; ++i ) + ++WID.m_iSectionCount; + } + + // If we have any section headers with no songs, then we filtered all of the songs in that group, + // so remove it. This isn't optimized like the above since this is a rare case. + for( unsigned i=0; i < filteredSize; ++i ) + { + MusicWheelItemData& WID = *aFilteredData[i]; + if( WID.m_Type != TYPE_SECTION ) + continue; + if( WID.m_iSectionCount > 0 ) + continue; + aFilteredData.erase( aFilteredData.begin()+i, aFilteredData.begin()+i+1 ); + --i; + --filteredSize; + } + + /* Update the popularity. This is affected by filtering. */ if( so == SORT_POPULARITY ) { - for( unsigned i=0; i< min(3u,arrayWheelItemDatas.size()); i++ ) + for( unsigned i=0; i< min(3u,aFilteredData.size()); i++ ) { - MusicWheelItemData& WID = *arrayWheelItemDatas[i]; + MusicWheelItemData& WID = *aFilteredData[i]; WID.m_Flags.iPlayersBestNumber = i+1; } } // If we've filtered all items, insert a dummy. - if( arrayWheelItemDatas.empty() ) - arrayWheelItemDatas.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) ); + if( aFilteredData.empty() ) + aFilteredData.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) ); } void MusicWheel::UpdateSwitch() @@ -980,7 +1162,7 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success return false; // Don't change to SORT_MODE_MENU if it doesn't have at least two choices. - if( new_so == SORT_MODE_MENU && m_WheelItemDatas[new_so].size() < 2 ) + if( new_so == SORT_MODE_MENU && getWheelItemsData(new_so).size() < 2 ) return false; switch( m_WheelState ) @@ -1116,7 +1298,7 @@ void MusicWheel::StartRandom() { // Shuffle and use the roulette wheel. RandomGen rnd; - random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd ); + random_shuffle( getWheelItemsData(SORT_ROULETTE).begin(), getWheelItemsData(SORT_ROULETTE).end(), rnd ); GAMESTATE->m_SortOrder.Set( SORT_ROULETTE ); } else @@ -1154,7 +1336,7 @@ void MusicWheel::SetOpenSection( RString group ) GAMEMAN->GetCompatibleStyles( GAMESTATE->m_pCurGame, GAMESTATE->GetNumPlayersEnabled(), vpPossibleStyles ); m_CurWheelItemData.clear(); - vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &from = getWheelItemsData(GAMESTATE->m_SortOrder); m_CurWheelItemData.reserve( from.size() ); for( unsigned i = 0; i < from.size(); ++i ) { @@ -1316,7 +1498,10 @@ void MusicWheel::PlayerJoined() // We need to rebuild the wheel item data in this situation. -aj if( !GAMESTATE->IsCourseMode() && !PREFSMAN->m_bAutogenSteps ) { - BuildWheelItemDatas( m_WheelItemDatas[GAMESTATE->m_SortOrder], GAMESTATE->m_SortOrder ); + if(m_WheelItemDatasStatus[GAMESTATE->m_SortOrder]!=INVALID) + m_WheelItemDatasStatus[GAMESTATE->m_SortOrder]=NEEDREFILTER; + + RebuildWheelItems(); } SetOpenSection( m_sExpandedSectionName ); @@ -1366,7 +1551,7 @@ Song *MusicWheel::GetPreferredSelectionForRandomOrPortal() } RString sPreferredGroup = m_sExpandedSectionName; - vector &wid = m_WheelItemDatas[GAMESTATE->m_SortOrder]; + vector &wid = getWheelItemsData(GAMESTATE->m_SortOrder); StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType; diff --git a/src/MusicWheel.h b/src/MusicWheel.h index 73e63deb0e..0cc080f3d0 100644 --- a/src/MusicWheel.h +++ b/src/MusicWheel.h @@ -53,15 +53,14 @@ protected: MusicWheelItem *MakeItem(); void GetSongList( vector &arraySongs, SortOrder so ); - void BuildWheelItemDatas( vector &arrayWheelItems, SortOrder so ); bool SelectSongOrCourse(); bool SelectCourse( const Course *p ); bool SelectModeMenuItem(); - //bool SelectCustomItem(); virtual void UpdateSwitch(); - vector m_WheelItemDatas[NUM_SortOrder]; // aliases into m_UnfilteredWheelItemDatas + vector & getWheelItemsData(SortOrder so); + void readyWheelItemsData(SortOrder so); RString m_sLastModeMenuItem; SortOrder m_SortOrder; @@ -72,15 +71,15 @@ protected: ThemeMetric ROULETTE_SWITCH_SECONDS; ThemeMetric ROULETTE_SLOW_DOWN_SWITCHES; ThemeMetric NUM_SECTION_COLORS; - ThemeMetric SONG_REAL_EXTRA_COLOR; - ThemeMetric SORT_MENU_COLOR; + ThemeMetric SONG_REAL_EXTRA_COLOR; + ThemeMetric SORT_MENU_COLOR; ThemeMetric SHOW_ROULETTE; ThemeMetric SHOW_RANDOM; ThemeMetric SHOW_PORTAL; ThemeMetric RANDOM_PICKS_LOCKED_SONGS; ThemeMetric MOST_PLAYED_SONGS_TO_SHOW; ThemeMetric RECENT_SONGS_TO_SHOW; - ThemeMetric MODE_MENU_CHOICE_NAMES; + ThemeMetric MODE_MENU_CHOICE_NAMES; ThemeMetricMap CHOICE; ThemeMetric1D SECTION_COLORS; ThemeMetric SORT_ORDERS; @@ -96,6 +95,15 @@ protected: ThemeMetric CUSTOM_WHEEL_ITEM_NAMES; ThemeMetricMap CUSTOM_CHOICES; ThemeMetricMap CUSTOM_CHOICE_COLORS; + +private: + //use getWheelItemsData instead of touching this one + enum {INVALID,NEEDREFILTER,VALID} m_WheelItemDatasStatus[NUM_SortOrder]; + vector m__WheelItemDatas[NUM_SortOrder]; + vector m__UnFilteredWheelItemDatas[NUM_SortOrder]; + + void BuildWheelItemDatas( vector &arrayWheelItems, SortOrder so ); + void FilterWheelItemDatas(vector &aUnFilteredDatas, vector &aFilteredData, SortOrder so ); }; #endif diff --git a/src/StepMania-net2010.vcxproj b/src/StepMania-net2010.vcxproj index ebc0108298..c1aef5d7d2 100644 --- a/src/StepMania-net2010.vcxproj +++ b/src/StepMania-net2010.vcxproj @@ -76,7 +76,7 @@ false $(TargetDir) $(SolutionDir)/build-$(SolutionName)/$(ProjectName)/$(Configuration)\ - true + false true $(SolutionDir)$(Configuration)\ $(Configuration)\ @@ -93,10 +93,18 @@ AllRules.ruleset + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath) StepMania StepMania StepMania StepMania + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath) + C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath) @@ -130,6 +138,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) true EditAndContinue 4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings) + true + true + /EHsc %(AdditionalOptions) + false _DEBUG;%(PreprocessorDefinitions) @@ -151,6 +163,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) false + SendErrorReport archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-debug.vdi" @@ -178,8 +191,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) WIN32;NDEBUG;_WINDOWS;WINDOWS;RELEASE;GLEW_STATIC;%(PreprocessorDefinitions) true false - - + Sync MultiThreadedDLL false false @@ -195,6 +207,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) true ProgramDatabase 4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings) + true + true NDEBUG;%(PreprocessorDefinitions) @@ -213,8 +227,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) true Windows false - - + true + SendErrorReport + UseLinkTimeCodeGeneration + true archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania.vdi" @@ -234,11 +250,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) ../StepMania.tlb - Disabled + MaxSpeed .;..\extern\lua-5.1\src;ffmpeg\modern_working\include;BaseClasses;..\extern\jsoncpp\include;..\extern\glew-1.5.8\include;..\extern\pcre;..\extern\mad-0.15.1b;..\extern\libpng\lib;..\extern\libpng\include;..\extern\libjpeg;..\extern\zlib;..\extern\vorbis;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;WINDOWS;DEBUG;GLEW_STATIC;%(PreprocessorDefinitions) - - + Sync Default MultiThreadedDebugDLL Use @@ -251,8 +266,13 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) Level4 true - EditAndContinue + ProgramDatabase 4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings) + true + AnySuitable + true + Speed + true _DEBUG;%(PreprocessorDefinitions) @@ -260,10 +280,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) /MACHINE:I386 "$(IntDir)verstub.obj" %(AdditionalOptions) - shell32.lib;gdi32.lib;user32.lib;ole32.lib;advapi32.lib;ffmpeg/modern_working/lib/avcodec.lib;ffmpeg/lib/avformat.lib;ffmpeg/lib/avutil.lib;ffmpeg/lib/swscale.lib;%(AdditionalDependencies) + shell32.lib;gdi32.lib;user32.lib;ole32.lib;advapi32.lib;avcodec.lib;avformat.lib;avutil.lib;swscale.lib;%(AdditionalDependencies) ../Program/StepMania-fastdebug.exe true - ..\extern\libpng\lib;ffmpeg\lib;..\extern\libjpeg\;..\extern\zlib\;..\extern\mad-0.15.1b\msvc++\Release\%(AdditionalLibraryDirectories) + ..\extern\libpng\lib;ffmpeg\modern_working\lib;..\extern\libjpeg\;..\extern\zlib\;..\extern\mad-0.15.1b\msvc++\Release\;%(AdditionalLibraryDirectories) wininet.lib;msimg32.lib;libci.lib;msvcrt.lib;%(IgnoreSpecificDefaultLibraries) true $(IntDir)StepMania.pdb @@ -274,6 +294,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) false + SendErrorReport + UseLinkTimeCodeGeneration archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-fastdebug.vdi" @@ -319,6 +341,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) true ProgramDatabase 4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings) + false NDEBUG;%(PreprocessorDefinitions) @@ -340,6 +363,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir) NotSet + SendErrorReport archutils\Win32\mapconv "$(IntDir)$(TargetName)-SSE2.map" "$(TargetDir)\StepMania-SSE2.vdi" diff --git a/src/archutils/Win32/verinc.sln b/src/archutils/Win32/verinc.sln index fc522ddeb2..8415c10de0 100644 --- a/src/archutils/Win32/verinc.sln +++ b/src/archutils/Win32/verinc.sln @@ -1,21 +1,19 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapconv", "verinc.vcproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "verinc", "verinc.vcxproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}" EndProject Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.ActiveCfg = Debug|Win32 - {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.Build.0 = Debug|Win32 - {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.ActiveCfg = Release|Win32 - {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.Build.0 = Release|Win32 + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.ActiveCfg = Debug|Win32 + {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.Build.0 = Debug|Win32 + {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.ActiveCfg = Release|Win32 + {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal diff --git a/src/libtomcrypt/libtomcrypt-net2010.vcxproj b/src/libtomcrypt/libtomcrypt-net2010.vcxproj index 549b9f5dbe..e1749dcd1f 100644 --- a/src/libtomcrypt/libtomcrypt-net2010.vcxproj +++ b/src/libtomcrypt/libtomcrypt-net2010.vcxproj @@ -95,6 +95,7 @@ Level2 EditAndContinue + true diff --git a/src/libtommath/libtommath-net2010.vcxproj b/src/libtommath/libtommath-net2010.vcxproj index 2b3119da9b..c79329b343 100644 --- a/src/libtommath/libtommath-net2010.vcxproj +++ b/src/libtommath/libtommath-net2010.vcxproj @@ -95,6 +95,7 @@ Level2 EditAndContinue + true