From 409c885d65ebf13e35b4d7575ef92fa4abe79207 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 12:21:20 -0400 Subject: [PATCH 001/241] Fix compile...and I think fix the save problem. Not the best way to do this perhaps, but it's something. --- src/ScreenEdit.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 01185de96c..4f81d934df 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2867,7 +2867,9 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) if( (*s)->IsAutogen() ) continue; // If the notedata has content, let it go. - if( !(*s)->m_NoteData->IsEmpty() ) + NoteData tmp; + (*s)->GetNoteData(tmp); + if( !tmp.IsEmpty() ) continue; // It's hard to say if these steps were saved to disk or not. /* From 1f2e26790caf70f857e3ec070787e47da41a6c20 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 12:31:16 -0400 Subject: [PATCH 002/241] I shouldn't have to need 3 lines for NoteData. Add helper function. --- src/ScreenEdit.cpp | 4 +--- src/Steps.cpp | 7 +++++++ src/Steps.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 4f81d934df..f092aa8d84 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2867,9 +2867,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) if( (*s)->IsAutogen() ) continue; // If the notedata has content, let it go. - NoteData tmp; - (*s)->GetNoteData(tmp); - if( !tmp.IsEmpty() ) + if( !(*s)->GetNoteData().IsEmpty() ) continue; // It's hard to say if these steps were saved to disk or not. /* diff --git a/src/Steps.cpp b/src/Steps.cpp index 9110ecf96d..5fcddbfd27 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -89,6 +89,13 @@ void Steps::GetNoteData( NoteData& noteDataOut ) const } } +NoteData Steps::GetNoteData() const +{ + NoteData tmp; + this->GetNoteData( tmp ); + return tmp; +} + void Steps::SetSMNoteData( const RString ¬es_comp_ ) { m_pNoteData->Init(); diff --git a/src/Steps.h b/src/Steps.h index e42c11d54d..fee6204527 100644 --- a/src/Steps.h +++ b/src/Steps.h @@ -108,6 +108,7 @@ public: unsigned GetHash() const; void GetNoteData( NoteData& noteDataOut ) const; + NoteData GetNoteData() const; void SetNoteData( const NoteData& noteDataNew ); void SetSMNoteData( const RString ¬es_comp ); void GetSMNoteData( RString ¬es_comp_out ) const; From 49b95ea52fdfeb605818f0c66fac7ee72bb39519 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 13:34:28 -0400 Subject: [PATCH 003/241] We're sharing the glory here. --- Docs/Changelog_sm-ssc.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 57a2fa0398..3807643478 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -13,6 +13,11 @@ _____________________________________________________________________________ sm-ssc v1.2.4 | 20110??? -------------------------------------------------------------------------------- +20110317 +-------- +* [ScreenEdit] Fix bug number 222, where Steps disappeared if they weren't + saved. [AJ, Wolfman2000] + 20110316 -------- * [NotesLoaderSMA] Allow for preliminary support of loading SMA files. This From c1d077888ef1b2f53397f9877c1d6238e9a8c735 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 14:02:25 -0400 Subject: [PATCH 004/241] Fix a crash bug by preventing the situation. --- Docs/Changelog_sm-ssc.txt | 2 ++ Themes/_fallback/Scripts/02 Branches.lua | 7 +++++++ Themes/_fallback/metrics.ini | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 3807643478..0be83a6379 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -17,6 +17,8 @@ sm-ssc v1.2.4 | 20110??? -------- * [ScreenEdit] Fix bug number 222, where Steps disappeared if they weren't saved. [AJ, Wolfman2000] +* [ScreenOptionsEdit] Fix bug number 186, where people could try to edit or + share songs when they didn't have any. [Wolfman2000] 20110316 -------- diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index d57ef9d551..471e9bd30e 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -71,6 +71,13 @@ Branch = { end; return "ScreenSelectProfile"; end, + OptionsEdit = function() + -- Similar to above, don't let anyone in here with 0 songs. + if SONGMAN:GetNumSongs() == 0 and SONGMAN:GetNumAdditionalSongs() == 0 then + return "ScreenHowToInstallSongs"; + end; + return "ScreenOptionsEdit"; + end, AfterProfileLoad = function() return "ScreenSelectProfile" end, diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index cd1040325c..22ea0dcafc 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1657,7 +1657,7 @@ Choice1="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame() Choice2="screen,ScreenNetworkOptions;text,Play Online" Choice3="screen,ScreenSelectGame;text,Select Game" Choice4="screen,ScreenOptionsService;text,Options" -Choice5="screen,ScreenOptionsEdit;text,Edit/Share" +Choice5="text,Edit/Share;screen,"..Branch.OptionsEdit() Choice6="screen,ScreenJukeboxMenu;text,Jukebox" Choice7="screen,ScreenExit;text,Exit" Choice8="screen,ScreenTest;text,Sandbox" From 87109a1a66bf2c24ab5cd127669b281345f9a8e7 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Fri, 18 Mar 2011 01:19:06 +0700 Subject: [PATCH 005/241] + make it support o2mania-style notecharts when playing on beat_single7 + comments cleanup --- src/NotesLoaderBMS.cpp | 87 +++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp index 2e7c0e4d82..b956d7e616 100644 --- a/src/NotesLoaderBMS.cpp +++ b/src/NotesLoaderBMS.cpp @@ -138,31 +138,10 @@ static RString FindLargestInitialSubstring( const RString &string1, const RStrin return string1.substr( 0, i ); } -static StepsType DetermineStepsType( int iPlayer, const NoteData &nd, const RString &sPath ) +static StepsType DetermineStepsType( int iPlayer, const NoteData &nd, const RString &sPath, const int iNumNonEmptyTracks ) { ASSERT( NUM_BMS_TRACKS == nd.GetNumTracks() ); - bool bTrackHasNote[NUM_NON_AUTO_KEYSOUND_TRACKS]; - ZERO( bTrackHasNote ); - - int iLastRow = nd.GetLastRow(); - for( int t=0; t Date: Thu, 17 Mar 2011 14:41:26 -0400 Subject: [PATCH 006/241] Resolve issue 76: add a new metric. One can now define whether Ctrl+Up expands the selection or shrinks it, and vice~versa with Ctrl+Down. --- Docs/Changelog_sm-ssc.txt | 3 +++ Themes/_fallback/metrics.ini | 1 + src/ScreenEdit.cpp | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 0be83a6379..5ddf7cd01c 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -19,6 +19,9 @@ sm-ssc v1.2.4 | 20110??? saved. [AJ, Wolfman2000] * [ScreenOptionsEdit] Fix bug number 186, where people could try to edit or share songs when they didn't have any. [Wolfman2000] +* [ScreenEdit] Add a metric to switch Ctrl+Up and Ctrl+Down. This is for + easier compatibility with prior versions of SM. It defaults to false. + [Wolfman2000] 20110316 -------- diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 22ea0dcafc..a0f3f4306c 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3628,6 +3628,7 @@ ShowHelp=false AllowOperatorMenuButton=false ShowCreditDisplay=false ShowStyleIcon=false +InvertScrollSpeedButtons=false TimerSeconds=-1 EditModifiers="no reverse" EditHelpX=SCREEN_LEFT+4 diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index f092aa8d84..4a25207d5e 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -1243,6 +1243,8 @@ static int FindAttackAtTime( const AttackArray& attacks, float fStartTime ) static LocalizedString SWITCHED_TO ( "ScreenEdit", "Switched to" ); static LocalizedString NO_BACKGROUNDS_AVAILABLE ( "ScreenEdit", "No backgrounds available" ); +static ThemeMetric INVERT_SCROLL_BUTTONS ( "ScreenEdit", "InvertScrollSpeedButtons" ); + void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) { if( input.type == IET_RELEASE ) @@ -1364,10 +1366,10 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) { DEFAULT_FAIL(EditB); case EDIT_BUTTON_SCROLL_SPEED_DOWN: - --iSpeed; + INVERT_SCROLL_BUTTONS ? ++iSpeed : --iSpeed; break; case EDIT_BUTTON_SCROLL_SPEED_UP: - ++iSpeed; + INVERT_SCROLL_BUTTONS ? --iSpeed : ++iSpeed; break; } iSpeed = clamp( iSpeed, 0, (int) ARRAYLEN(fSpeeds)-1 ); From 3c3618f28dfa5b59a0cf9b94424d69518072a8cd Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 15:13:30 -0400 Subject: [PATCH 007/241] Fix Compress/Expand Steps bug. --- Docs/Changelog_sm-ssc.txt | 2 ++ src/NoteDataUtil.cpp | 4 +--- src/NoteDataUtil.h | 3 +-- src/ScreenEdit.cpp | 3 ++- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 5ddf7cd01c..91c8df528d 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -22,6 +22,8 @@ sm-ssc v1.2.4 | 20110??? * [ScreenEdit] Add a metric to switch Ctrl+Up and Ctrl+Down. This is for easier compatibility with prior versions of SM. It defaults to false. [Wolfman2000] +* [ScreenEdit] Fix bug number 65, where Steps disappeared if they were + involved with the Compress or Expand options. [Wolfman2000] 20110316 -------- diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index d8a39396d1..a20e846c7b 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -2229,13 +2229,12 @@ void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong ) } } -#if 0 // undo this if ScaleRegion breaks more things than it fixes void NoteDataUtil::Scale( NoteData &nd, float fScale ) { ASSERT( fScale > 0 ); NoteData temp; - temp.CopyAll( &nd ); + temp.CopyAll( nd ); nd.ClearAll(); for( int r=0; r<=temp.GetLastRow(); r++ ) @@ -2253,7 +2252,6 @@ void NoteDataUtil::Scale( NoteData &nd, float fScale ) } } } -#endif void NoteDataUtil::ScaleRegion( NoteData &nd, float fScale, int iStartIndex, int iEndIndex ) { diff --git a/src/NoteDataUtil.h b/src/NoteDataUtil.h index a930af6547..f92043c9ff 100644 --- a/src/NoteDataUtil.h +++ b/src/NoteDataUtil.h @@ -149,9 +149,8 @@ namespace NoteDataUtil int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW ); void AddTapAttacks( NoteData &nd, Song* pSong ); - // void Scale( NoteData &nd, float fScale ); + void Scale( NoteData &nd, float fScale ); void ScaleRegion( NoteData &nd, float fScale, int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW ); - inline void Scale( NoteData &nd, float fScale ) { NoteDataUtil::ScaleRegion(nd, fScale); } void InsertRows( NoteData &nd, int iStartIndex, int iRowsToShift ); void DeleteRows( NoteData &nd, int iStartIndex, int iRowsToShift ); diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 4a25207d5e..e572dbd0bb 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3480,10 +3480,11 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns m_NoteFieldEdit.m_iEndMarker = iNewClipboardEndRow; + float fPriorBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker - 1) ); float fOldBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker) ); float fNewBPM = fOldBPM * fScale; m_pSong->m_Timing.SetBPMAtRow( m_NoteFieldEdit.m_iBeginMarker, fNewBPM ); - m_pSong->m_Timing.SetBPMAtRow( iNewClipboardEndRow, fOldBPM ); + m_pSong->m_Timing.SetBPMAtRow( iNewClipboardEndRow, fPriorBPM ); } break; case play: From 57fbdab6482061e34df2ddd39ef5cfe711454538 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 15:26:09 -0400 Subject: [PATCH 008/241] Improvement to the Compress/Expand fix by Thai. --- src/ScreenEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index e572dbd0bb..25952588cc 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3480,7 +3480,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns m_NoteFieldEdit.m_iEndMarker = iNewClipboardEndRow; - float fPriorBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker - 1) ); + float fPriorBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(iNewClipboardEndRow + 1) ); float fOldBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker) ); float fNewBPM = fOldBPM * fScale; m_pSong->m_Timing.SetBPMAtRow( m_NoteFieldEdit.m_iBeginMarker, fNewBPM ); From 47ebbdbd26dee37b8ea80743bdb4b9b3e4993849 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 17 Mar 2011 15:40:35 -0400 Subject: [PATCH 009/241] Metrics for the future. ;) --- Themes/_fallback/metrics.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index a0f3f4306c..b37ce668a6 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1664,11 +1664,11 @@ Choice8="screen,ScreenTest;text,Sandbox" Choice9="screen,ScreenQuickSetupOverview;text,Setup" # Aliases for the future. ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" -ChoiceGameStart="applydefaultoptions;screen,ScreenSelectProfile;text,Game Start" +ChoiceGameStart="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame() ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online" ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game" ChoiceOptions="screen,ScreenOptionsSystemDirection;text,Options" -ChoiceEdit="screen,ScreenOptionsEdit;text,Edit/Share" +ChoiceEdit="text,Edit/Share;screen,"..Branch.OptionsEdit() ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox" ChoiceSandbox="screen,ScreenTest;text,Sandbox" ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" From 661a1b89108b2737867eb84bd7cc0dface71f895 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Thu, 17 Mar 2011 15:05:15 -0500 Subject: [PATCH 010/241] fix PaneDisplay --- src/PaneDisplay.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PaneDisplay.cpp b/src/PaneDisplay.cpp index f3e37b9e60..e812156cd3 100644 --- a/src/PaneDisplay.cpp +++ b/src/PaneDisplay.cpp @@ -51,6 +51,7 @@ static const Content_t g_Contents[NUM_PaneCategory] = { NEED_NOTES, "count" }, // Mines { NEED_NOTES, "count" }, // Hands { NEED_NOTES, "count" }, // Lifts + { NEED_NOTES, "count" }, // Fakes { NEED_NOTES, "score" }, // MachineHighScore { NEED_NOTES, "name" }, // MachineHighName { NEED_NOTES|NEED_PROFILE, "score" }, // ProfileHighScore @@ -247,6 +248,7 @@ void PaneDisplay::SetContent( PaneCategory c ) case PaneCategory_Mines: case PaneCategory_Hands: case PaneCategory_Lifts: + case PaneCategory_Fakes: str = ssprintf( COUNT_FORMAT.GetValue(), val ); } } From 8892ad30780fffc7b2885f1e8472218b3e0238d9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Thu, 17 Mar 2011 18:22:31 -0500 Subject: [PATCH 011/241] fix a crash on themes which use the detail lines on ScreenEvaluation --- src/ScreenEvaluation.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScreenEvaluation.cpp b/src/ScreenEvaluation.cpp index 395c8b257b..b474d8b8cb 100644 --- a/src/ScreenEvaluation.cpp +++ b/src/ScreenEvaluation.cpp @@ -30,7 +30,6 @@ #include "ScoreKeeperNormal.h" #include "InputEventPlus.h" - // metrics that are common to all ScreenEvaluation classes #define BANNER_WIDTH THEME->GetMetricF(m_sName,"BannerWidth") #define BANNER_HEIGHT THEME->GetMetricF(m_sName,"BannerHeight") @@ -45,7 +44,7 @@ LuaFunction( JudgmentLineToLocalizedString, JudgmentLineToLocalizedString(Enum:: static const char *DetailLineNames[NUM_DetailLine] = { - "NumSteps","Jumps", "Holds", "Mines", "Hands", "Rolls", + "NumSteps","Jumps", "Holds", "Mines", "Hands", "Rolls", "Lifts", "Fakes" }; XToString( DetailLine ); #define DETAILLINE_FORMAT THEME->GetMetric (m_sName,"DetailLineFormat") From c2fe12120c740d1d4d00c3fcc68d9a49c87fda2b Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Fri, 18 Mar 2011 12:25:20 +0700 Subject: [PATCH 012/241] fixed missing autokeysounds when they are inserted on the tail of a hold note (they are removed) --- src/NotesLoaderBMS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp index b956d7e616..1946777e34 100644 --- a/src/NotesLoaderBMS.cpp +++ b/src/NotesLoaderBMS.cpp @@ -748,7 +748,7 @@ static bool LoadFromBMSFile( const RString &sPath, const NameToData_t &mapNameTo int iEmptyTrack = -1; for( int i=0; i Date: Fri, 18 Mar 2011 22:32:00 +0700 Subject: [PATCH 013/241] Added my changes to the changelog. Put it on 20110316 because I pushed to sm-ssc on that day. --- Docs/Changelog_sm-ssc.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 91c8df528d..c6b1ac7b83 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -29,6 +29,14 @@ sm-ssc v1.2.4 | 20110??? -------- * [NotesLoaderSMA] Allow for preliminary support of loading SMA files. This will become better once Split Timing is in place. [Wolfman2000] +* [NotesLoaderBMS] Improve BMS loading: [theDtTvB] + * Ignore time signatures before the notes for the steps to be more + synchronized. + * Load BPM changes properly. Many songs with BPM changes no longer freeze. +* [Player] Stop playing the keysound when letting go of hold notes. [theDtTvB] +* [NoteDataUtil] Make keysounded notes that can't be inserted when reducing + number of tracks autokeysound, means less missing sounds when playing + 7-key BMS on dance-single. [theDtTvB] 20110313 -------- From 942c3c685bd429cde3d876136efb30d69766dffd Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 18 Mar 2011 11:53:56 -0400 Subject: [PATCH 014/241] More of my warnings crusade. --- src/Steps.cpp | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/Steps.cpp b/src/Steps.cpp index 5fcddbfd27..3f28a72ed5 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -25,20 +25,12 @@ #include -Steps::Steps() -{ - m_bSavedToDisk = false; - m_StepsType = StepsType_Invalid; - m_LoadedFromProfile = ProfileSlot_Invalid; - m_iHash = 0; - m_Difficulty = Difficulty_Invalid; - m_iMeter = 0; - - m_pNoteData = new NoteData; - m_bNoteDataIsFilled = false; - m_sNoteDataCompressed = ""; - parent = NULL; -} +Steps::Steps(): m_StepsType(StepsType_Invalid), + parent(NULL), m_pNoteData(NULL),m_bNoteDataIsFilled(false), + m_sNoteDataCompressed(""), m_sFilename(""), m_bSavedToDisk(false), + m_LoadedFromProfile(ProfileSlot_Invalid), m_iHash(0), + m_sDescription(""), m_sChartStyle(""), + m_Difficulty(Difficulty_Invalid), m_iMeter(0), m_sCredit("") {} Steps::~Steps() { From f6034bb1033f3ff62b9ecf5af5c07bd45b03bd60 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 18 Mar 2011 12:18:09 -0400 Subject: [PATCH 015/241] More Effective Violations being purged. --- src/SongUtil.h | 6 +++++- src/StepsUtil.h | 8 +++++++- src/Trail.h | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/SongUtil.h b/src/SongUtil.h index 7262306f02..368594adb5 100644 --- a/src/SongUtil.h +++ b/src/SongUtil.h @@ -178,7 +178,11 @@ class SongID mutable CachedObjectPointer m_Cache; public: - SongID() { Unset(); } + /** + * @brief Set up the SongID with default values. + * + * This used to call Unset() to do the same thing. */ + SongID(): sDir("") { m_Cache.Unset(); } void Unset() { FromSong(NULL); } void FromSong( const Song *p ); Song *ToSong() const; diff --git a/src/StepsUtil.h b/src/StepsUtil.h index f2fa03fd06..05aa5a6155 100644 --- a/src/StepsUtil.h +++ b/src/StepsUtil.h @@ -163,7 +163,13 @@ class StepsID mutable CachedObjectPointer m_Cache; public: - StepsID() { Unset(); } + /** + * @brief Set up the StepsID with default values. + * + * This used to call Unset(), which set the variables to + * the same thing. */ + StepsID(): st(StepsType_Invalid), dc(Difficulty_Invalid), + sDescription(""), uHash(0) {} void Unset() { FromSteps(NULL); } void FromSteps( const Steps *p ); Steps *ToSteps( const Song *p, bool bAllowNull ) const; diff --git a/src/Trail.h b/src/Trail.h index 10fa10d9b7..092d9c31dd 100644 --- a/src/Trail.h +++ b/src/Trail.h @@ -17,6 +17,7 @@ struct TrailEntry TrailEntry(): pSong(NULL), pSteps(NULL), + Modifiers(""), bSecret(false), iLowMeter(-1), iHighMeter(-1), @@ -69,6 +70,7 @@ public: * * This used to call Init(), which is still available. */ Trail(): m_StepsType(StepsType_Invalid), + m_CourseType(CourseType_Invalid), m_CourseDifficulty(Difficulty_Invalid), m_iSpecifiedMeter(-1), m_bRadarValuesCached(false) { From c300c20fea5d5a99b9fba11f4c4ff8281c3bfffd Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 18 Mar 2011 12:33:53 -0400 Subject: [PATCH 016/241] Effective fix. I'll understand when you can use new whatever in the initialization list some other time. --- src/Steps.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Steps.cpp b/src/Steps.cpp index 3f28a72ed5..3c0cf7cb57 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -26,7 +26,7 @@ #include Steps::Steps(): m_StepsType(StepsType_Invalid), - parent(NULL), m_pNoteData(NULL),m_bNoteDataIsFilled(false), + parent(NULL), m_pNoteData(new NoteData), m_bNoteDataIsFilled(false), m_sNoteDataCompressed(""), m_sFilename(""), m_bSavedToDisk(false), m_LoadedFromProfile(ProfileSlot_Invalid), m_iHash(0), m_sDescription(""), m_sChartStyle(""), From a9af35d94e4bb778387adfa93e2980cde2d99dc0 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 19 Mar 2011 18:58:44 +0700 Subject: [PATCH 017/241] Make compress/expand preserve timing data by also adjusting BPM changes between start and end marker. The adjusting part is at TimingData::ScaleRegion. --- src/ScreenEdit.cpp | 8 +------- src/TimingData.cpp | 29 +++++++++++++++++++++++++++-- src/TimingData.h | 2 +- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 25952588cc..49c10825ec 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3455,7 +3455,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns else NoteDataUtil::DeleteRows( m_NoteDataEdit, m_NoteFieldEdit.m_iBeginMarker, -iDeltaRows ); - m_pSong->m_Timing.ScaleRegion( fScale, m_NoteFieldEdit.m_iBeginMarker, m_NoteFieldEdit.m_iEndMarker ); + m_pSong->m_Timing.ScaleRegion( fScale, m_NoteFieldEdit.m_iBeginMarker, m_NoteFieldEdit.m_iEndMarker, true ); HandleAreaMenuChoice( paste_at_begin_marker ); @@ -3479,12 +3479,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns } m_NoteFieldEdit.m_iEndMarker = iNewClipboardEndRow; - - float fPriorBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(iNewClipboardEndRow + 1) ); - float fOldBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker) ); - float fNewBPM = fOldBPM * fScale; - m_pSong->m_Timing.SetBPMAtRow( m_NoteFieldEdit.m_iBeginMarker, fNewBPM ); - m_pSong->m_Timing.SetBPMAtRow( iNewClipboardEndRow, fPriorBPM ); } break; case play: diff --git a/src/TimingData.cpp b/src/TimingData.cpp index d1ff6ce5c3..9704ac00c3 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -611,12 +611,12 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const return fElapsedTime; } -void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex ) +void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex, bool bAdjustBPM ) { ASSERT( fScale > 0 ); ASSERT( iStartIndex >= 0 ); ASSERT( iStartIndex < iEndIndex ); - + for ( unsigned i = 0; i < m_BPMSegments.size(); i++ ) { const int iSegStart = m_BPMSegments[i].m_iStartRow; @@ -638,6 +638,31 @@ void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex ) else m_StopSegments[i].m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex; } + + // adjust BPM changes to preserve timing + if( bAdjustBPM ) + { + int iNewEndIndex = lrintf( (iEndIndex - iStartIndex) * fScale ) + iStartIndex; + float fEndBPMBeforeScaling = GetBPMAtRow(iNewEndIndex); + + // adjust BPM changes "between" iStartIndex and iNewEndIndex + for ( unsigned i = 0; i < m_BPMSegments.size(); i++ ) + { + const int iSegStart = m_BPMSegments[i].m_iStartRow; + if( iSegStart <= iStartIndex ) + continue; + else if( iSegStart >= iNewEndIndex ) + continue; + else + m_BPMSegments[i].m_fBPS *= fScale; + } + + // set BPM at iStartIndex and iNewEndIndex. + SetBPMAtRow( iStartIndex, GetBPMAtRow(iStartIndex) * fScale ); + SetBPMAtRow( iNewEndIndex, fEndBPMBeforeScaling ); + + } + } void TimingData::InsertRows( int iStartRow, int iRowsToAdd ) diff --git a/src/TimingData.h b/src/TimingData.h index d15703b7d5..655a9087fb 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -1073,7 +1073,7 @@ public: */ bool operator!=( const TimingData &other ) { return !operator==(other); } - void ScaleRegion( float fScale = 1, int iStartRow = 0, int iEndRow = MAX_NOTE_ROW ); + void ScaleRegion( float fScale = 1, int iStartRow = 0, int iEndRow = MAX_NOTE_ROW, bool bAdjustBPM = false ); void InsertRows( int iStartRow, int iRowsToAdd ); void DeleteRows( int iStartRow, int iRowsToDelete ); From 8d80ddedf2f7ff3fa6ca94ec553d1f209507bd33 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 19 Mar 2011 19:38:45 +0700 Subject: [PATCH 018/241] Compress/Expand shall not break apart hold notes that overlaps the start/end marker. --- src/NoteDataUtil.cpp | 71 ++++++++++++++++++++++---------------------- src/ScreenEdit.cpp | 40 ++++++++----------------- 2 files changed, 49 insertions(+), 62 deletions(-) diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index a20e846c7b..9b5748ce39 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -2232,25 +2232,34 @@ void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong ) void NoteDataUtil::Scale( NoteData &nd, float fScale ) { ASSERT( fScale > 0 ); - - NoteData temp; - temp.CopyAll( nd ); - nd.ClearAll(); - - for( int r=0; r<=temp.GetLastRow(); r++ ) + + NoteData ndOut; + ndOut.SetNumTracks( nd.GetNumTracks() ); + + for( int t=0; tsecond; + int iNewRow = lrintf( fScale * iter->first ); + int iNewDuration = lrintf( fScale * (iter->first + tn.iDuration) ); + tn.iDuration = iNewDuration; + ndOut.SetTapNote( t, iNewRow, tn ); } } + + nd.swap( ndOut ); +} + +/* XXX: move this to an appropriate place, same place as NoteRowToBeat perhaps? */ +static inline int GetScaledRow( float fScale, int iStartIndex, int iEndIndex, int iRow ) +{ + if( iRow < iStartIndex ) + return iRow; + else if( iRow > iEndIndex ) + return iRow + lrintf( (iEndIndex - iStartIndex) * (fScale - 1) ); + else + return lrintf( (iRow - iStartIndex) * fScale ) + iStartIndex; } void NoteDataUtil::ScaleRegion( NoteData &nd, float fScale, int iStartIndex, int iEndIndex ) @@ -2258,31 +2267,23 @@ void NoteDataUtil::ScaleRegion( NoteData &nd, float fScale, int iStartIndex, int ASSERT( fScale > 0 ); ASSERT( iStartIndex < iEndIndex ); ASSERT( iStartIndex >= 0 ); - - NoteData temp1, temp2; - temp1.SetNumTracks( nd.GetNumTracks() ); - temp2.SetNumTracks( nd.GetNumTracks() ); - - if( iStartIndex != 0 ) - temp1.CopyRange( nd, 0, iStartIndex ); - if( iEndIndex != MAX_NOTE_ROW ) - { - const int iScaledFirstRowAfterRegion = int(iStartIndex + (iEndIndex - iStartIndex) * fScale); - temp1.CopyRange( nd, iEndIndex, MAX_NOTE_ROW, iScaledFirstRowAfterRegion ); - } - temp2.CopyRange( nd, iStartIndex, iEndIndex ); - nd.ClearAll(); - - for( int t=0; tfirst*fScale + iStartIndex ); - temp1.SetTapNote( t, new_row, iter->second ); + TapNote tn = iter->second; + int iNewRow = GetScaledRow( fScale, iStartIndex, iEndIndex, iter->first ); + int iNewDuration = GetScaledRow( fScale, iStartIndex, iEndIndex, iter->first + tn.iDuration ) - iNewRow; + tn.iDuration = iNewDuration; + ndOut.SetTapNote( t, iNewRow, tn ); } } - - nd.swap( temp1 ); + + nd.swap( ndOut ); } void NoteDataUtil::InsertRows( NoteData &nd, int iStartIndex, int iRowsToAdd ) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 49c10825ec..8a17a27059 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3419,11 +3419,9 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns case tempo: { // This affects all steps. - const NoteData OldClipboard( m_Clipboard ); - HandleAreaMenuChoice( cut ); - AlterType at = (AlterType)iAnswers[c]; float fScale = -1; + switch( at ) { DEFAULT_FAIL( at ); @@ -3434,31 +3432,18 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns case expand_3_2: fScale = 1.5f; break; case expand_2x: fScale = 2; break; } - - switch( at ) - { - DEFAULT_FAIL( at ); - case compress_2x: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - case compress_3_2: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - case compress_4_3: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - case expand_4_3: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - case expand_3_2: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - case expand_2x: NoteDataUtil::Scale( m_Clipboard, fScale ); break; - } - - int iOldClipboardRow = m_NoteFieldEdit.m_iEndMarker - m_NoteFieldEdit.m_iBeginMarker; - int iNewClipboardRow = lrintf( iOldClipboardRow * fScale ); - int iDeltaRows = iNewClipboardRow - iOldClipboardRow; - int iNewClipboardEndRow = m_NoteFieldEdit.m_iBeginMarker + iNewClipboardRow; - if( iDeltaRows > 0 ) - NoteDataUtil::InsertRows( m_NoteDataEdit, m_NoteFieldEdit.m_iBeginMarker, iDeltaRows ); - else - NoteDataUtil::DeleteRows( m_NoteDataEdit, m_NoteFieldEdit.m_iBeginMarker, -iDeltaRows ); - + + int iStartIndex = m_NoteFieldEdit.m_iBeginMarker; + int iEndIndex = m_NoteFieldEdit.m_iEndMarker; + int iNewEndIndex = iEndIndex + lrintf( (iEndIndex - iStartIndex) * (fScale - 1) ); + + // scale currently editing notes + NoteDataUtil::ScaleRegion( m_NoteDataEdit, fScale, iStartIndex, iEndIndex ); + + // scale timing data m_pSong->m_Timing.ScaleRegion( fScale, m_NoteFieldEdit.m_iBeginMarker, m_NoteFieldEdit.m_iEndMarker, true ); - HandleAreaMenuChoice( paste_at_begin_marker ); - + // scale all other steps. const vector sIter = m_pSong->GetAllSteps(); RString sTempStyle, sTempDiff; for( unsigned i = 0; i < sIter.size(); i++ ) @@ -3478,7 +3463,8 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns sIter[i]->SetNoteData( ndTemp ); } - m_NoteFieldEdit.m_iEndMarker = iNewClipboardEndRow; + m_NoteFieldEdit.m_iEndMarker = iNewEndIndex; + } break; case play: From 31f7b16f47fa828ca106ad77622029478055c842 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 19 Mar 2011 20:57:38 +0700 Subject: [PATCH 019/241] Add *.bml to BMSLoader::GetApplicableFiles. BML stands for Be-Music Longnote. Because it is an extension to BMS, so most apps save them with bms extension anyway, there exist some convertors that output to .bml files however. --- src/NotesLoaderBMS.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp index 1946777e34..5b566cdba7 100644 --- a/src/NotesLoaderBMS.cpp +++ b/src/NotesLoaderBMS.cpp @@ -992,6 +992,7 @@ void BMSLoader::GetApplicableFiles( const RString &sPath, vector &out ) { GetDirListing( sPath + RString("*.bms"), out ); GetDirListing( sPath + RString("*.bme"), out ); + GetDirListing( sPath + RString("*.bml"), out ); } bool BMSLoader::LoadFromDir( const RString &sDir, Song &out ) From 7fa50ff351fc6a5df299f1c3fb1d90a49d99d3a9 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 13:27:48 -0400 Subject: [PATCH 020/241] More effective fixes. We may have to actually do full blown replacements. --- src/DancingCharacters.cpp | 7 ++++--- src/HighScore.h | 8 ++++++-- src/Model.h | 2 ++ src/StageStats.h | 3 +++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/DancingCharacters.cpp b/src/DancingCharacters.cpp index 3404096a63..6653173f9b 100644 --- a/src/DancingCharacters.cpp +++ b/src/DancingCharacters.cpp @@ -43,10 +43,11 @@ const float MODEL_X_ONE_PLAYER = 0; const float MODEL_X_TWO_PLAYERS[NUM_PLAYERS] = { +8, -8 }; const float MODEL_ROTATIONY_TWO_PLAYERS[NUM_PLAYERS] = { -90, 90 }; -DancingCharacters::DancingCharacters() +DancingCharacters::DancingCharacters(): m_bDrawDangerLight(false), + m_CameraDistance(0), m_CameraPanYStart(0), m_CameraPanYEnd(0), + m_fLookAtHeight(0), m_fCameraHeightStart(0), m_fCameraHeightEnd(0), + m_fThisCameraStartBeat(0), m_fThisCameraEndBeat(0) { - m_bDrawDangerLight = false; - FOREACH_PlayerNumber( p ) { m_pCharacter[p] = new Model; diff --git a/src/HighScore.h b/src/HighScore.h index 61610bb88f..c3f9b0f94c 100644 --- a/src/HighScore.h +++ b/src/HighScore.h @@ -100,9 +100,13 @@ private: struct HighScoreList { public: - HighScoreList() + /** + * @brief Set up the HighScore List with default values. + * + * This used to call Init(), but it's better to be explicit here. */ + HighScoreList(): HighGrade(Grade_NoData), iNumTimesPlayed(0) { - Init(); + vHighScores.clear(); } void Init(); diff --git a/src/Model.h b/src/Model.h index 804d9a38ee..d9ce8e343b 100644 --- a/src/Model.h +++ b/src/Model.h @@ -83,6 +83,8 @@ private: float m_fCurAnimationRate; bool m_bLoop; bool m_bDrawCelShaded; // for Lua models + + Model& operator=(const Model& rhs); }; #endif diff --git a/src/StageStats.h b/src/StageStats.h index a160d0c652..a5a52587ef 100644 --- a/src/StageStats.h +++ b/src/StageStats.h @@ -79,6 +79,9 @@ public: // Lua void PushSelf( lua_State *L ); + +private: + // TODO: Implement the copy and assignment operators on our own. }; #endif From c4b0b77ab8654a6496d19d175bee9a2f9743f26e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 16:18:53 -0400 Subject: [PATCH 021/241] More warning fixes. Editor didn't break with my NoteData changes. --- src/NoteData.cpp | 142 ++++++++++++++++++++--------------------- src/ScreenGameplay.cpp | 28 +++----- 2 files changed, 79 insertions(+), 91 deletions(-) diff --git a/src/NoteData.cpp b/src/NoteData.cpp index bbbee687f1..88c350b408 100644 --- a/src/NoteData.cpp +++ b/src/NoteData.cpp @@ -52,18 +52,18 @@ void NoteData::ClearRangeForTrack( int rowBegin, int rowEnd, int iTrack ) if( rowBegin == rowEnd ) return; - NoteData::TrackMap::iterator begin, end; - GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, begin, end ); + NoteData::TrackMap::iterator lBegin, lEnd; + GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, lBegin, lEnd ); - if( begin != end && begin->first < rowBegin && begin->first + begin->second.iDuration > rowEnd ) + if( lBegin != lEnd && lBegin->first < rowBegin && lBegin->first + lBegin->second.iDuration > rowEnd ) { /* A hold note overlaps the whole range. Truncate it, and add the * remainder to the end. */ - TapNote tn1 = begin->second; + TapNote tn1 = lBegin->second; TapNote tn2 = tn1; - int iEndRow = begin->first + tn1.iDuration; - int iRow = begin->first; + int iEndRow = lBegin->first + tn1.iDuration; + int iRow = lBegin->first; tn1.iDuration = rowBegin - iRow; tn2.iDuration = iEndRow - rowEnd; @@ -72,23 +72,23 @@ void NoteData::ClearRangeForTrack( int rowBegin, int rowEnd, int iTrack ) SetTapNote( iTrack, rowEnd, tn2 ); // We may have invalidated our iterators. - GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, begin, end ); + GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, lBegin, lEnd ); } - else if( begin != end && begin->first < rowBegin ) + else if( lBegin != lEnd && lBegin->first < rowBegin ) { // A hold note overlaps the beginning of the range. Truncate it. - TapNote &tn1 = begin->second; - int iRow = begin->first; + TapNote &tn1 = lBegin->second; + int iRow = lBegin->first; tn1.iDuration = rowBegin - iRow; - ++begin; + ++lBegin; } - if( begin != end ) + if( lBegin != lEnd ) { - NoteData::TrackMap::iterator prev = end; + NoteData::TrackMap::iterator prev = lEnd; --prev; - TapNote tn = begin->second; + TapNote tn = lBegin->second; int iRow = prev->first; if( tn.type == TapNote::hold_head && iRow + tn.iDuration > rowEnd ) { @@ -99,14 +99,14 @@ void NoteData::ClearRangeForTrack( int rowBegin, int rowEnd, int iTrack ) tn.iDuration -= iAdd; iRow += iAdd; SetTapNote( iTrack, iRow, tn ); - end = prev; + lEnd = prev; } // We may have invalidated our iterators. - GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, begin, end ); + GetTapNoteRangeInclusive( iTrack, rowBegin, rowEnd, lBegin, lEnd ); } - m_TapNotes[iTrack].erase( begin, end ); + m_TapNotes[iTrack].erase( lBegin, lEnd ); } void NoteData::ClearRange( int rowBegin, int rowEnd ) @@ -138,17 +138,17 @@ void NoteData::CopyRange( const NoteData& from, int rowFromBegin, int rowFromEnd for( int t=0; tsecond; + TapNote head = lBegin->second; if( head.type == TapNote::empty ) continue; if( head.type == TapNote::hold_head ) { - int iStartRow = begin->first + iMoveBy; + int iStartRow = lBegin->first + iMoveBy; int iEndRow = iStartRow + head.iDuration; iStartRow = clamp( iStartRow, rowToBegin, rowToEnd ); @@ -158,7 +158,7 @@ void NoteData::CopyRange( const NoteData& from, int rowFromBegin, int rowFromEnd } else { - int iTo = begin->first + iMoveBy; + int iTo = lBegin->first + iMoveBy; if( iTo >= rowToBegin && iTo <= rowToEnd ) this->SetTapNote( t, iTo, head ); } @@ -307,11 +307,11 @@ void NoteData::AddHoldNote( int iTrack, int iStartRow, int iEndRow, TapNote tn ) ASSERT_M( iEndRow >= iStartRow, ssprintf("EndRow %d < StartRow %d",iEndRow,iStartRow) ); /* Include adjacent (non-overlapping) hold notes, since we need to merge with them. */ - NoteData::TrackMap::iterator begin, end; - GetTapNoteRangeInclusive( iTrack, iStartRow, iEndRow, begin, end, true ); + NoteData::TrackMap::iterator lBegin, lEnd; + GetTapNoteRangeInclusive( iTrack, iStartRow, iEndRow, lBegin, lEnd, true ); // Look for other hold notes that overlap and merge them into add. - for( iterator it = begin; it != end; ++it ) + for( iterator it = lBegin; it != lEnd; ++it ) { int iOtherRow = it->first; const TapNote &tnOther = it->second; @@ -325,14 +325,14 @@ void NoteData::AddHoldNote( int iTrack, int iStartRow, int iEndRow, TapNote tn ) tn.iDuration = iEndRow - iStartRow; // Remove everything in the range. - while( begin != end ) + while( lBegin != lEnd ) { - iterator next = begin; + iterator next = lBegin; ++next; - RemoveTapNote( iTrack, begin ); + RemoveTapNote( iTrack, lBegin ); - begin = next; + lBegin = next; } /* Additionally, if there's a tap note lying at the end of our range, @@ -590,12 +590,12 @@ int NoteData::GetNumHoldNotes( int iStartIndex, int iEndIndex ) const int iNumHolds = 0; for( int t=0; tsecond.type != TapNote::hold_head || - begin->second.subType != TapNote::hold_head_hold ) + if( lBegin->second.type != TapNote::hold_head || + lBegin->second.subType != TapNote::hold_head_hold ) continue; iNumHolds++; } @@ -608,12 +608,12 @@ int NoteData::GetNumRolls( int iStartIndex, int iEndIndex ) const int iNumRolls = 0; for( int t=0; tsecond.type != TapNote::hold_head || - begin->second.subType != TapNote::hold_head_roll ) + if( lBegin->second.type != TapNote::hold_head || + lBegin->second.subType != TapNote::hold_head_roll ) continue; iNumRolls++; } @@ -773,43 +773,43 @@ bool NoteData::GetPrevTapNoteRowForTrack( int track, int &rowInOut ) const return true; } -void NoteData::GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end ) +void NoteData::GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &lBegin, TrackMap::iterator &lEnd ) { ASSERT_M( iTrack < GetNumTracks(), ssprintf("%i,%i", iTrack, GetNumTracks()) ); TrackMap &mapTrack = m_TapNotes[iTrack]; if( iStartRow > iEndRow ) { - begin = end = mapTrack.end(); + lBegin = lEnd = mapTrack.end(); return; } if( iStartRow <= 0 ) - begin = mapTrack.begin(); // optimization + lBegin = mapTrack.begin(); // optimization else if( iStartRow >= MAX_NOTE_ROW ) - begin = mapTrack.end(); // optimization + lBegin = mapTrack.end(); // optimization else - begin = mapTrack.lower_bound( iStartRow ); + lBegin = mapTrack.lower_bound( iStartRow ); if( iEndRow <= 0 ) - end = mapTrack.begin(); // optimization + lEnd = mapTrack.begin(); // optimization else if( iEndRow >= MAX_NOTE_ROW ) - end = mapTrack.end(); // optimization + lEnd = mapTrack.end(); // optimization else - end = mapTrack.lower_bound( iEndRow ); + lEnd = mapTrack.lower_bound( iEndRow ); } /* Include hold notes that overlap the edges. If a hold note completely surrounds the given * range, included it, too. If bIncludeAdjacent is true, also include hold notes adjacent to, * but not overlapping, the edge. */ -void NoteData::GetTapNoteRangeInclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end, bool bIncludeAdjacent ) +void NoteData::GetTapNoteRangeInclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &lBegin, TrackMap::iterator &lEnd, bool bIncludeAdjacent ) { - GetTapNoteRange( iTrack, iStartRow, iEndRow, begin, end ); + GetTapNoteRange( iTrack, iStartRow, iEndRow, lBegin, lEnd ); - if( begin != this->begin(iTrack) ) + if( lBegin != this->begin(iTrack) ) { - iterator prev = Decrement(begin); + iterator prev = Decrement(lBegin); const TapNote &tn = prev->second; if( tn.type == TapNote::hold_head ) @@ -821,62 +821,62 @@ void NoteData::GetTapNoteRangeInclusive( int iTrack, int iStartRow, int iEndRow, if( iHoldEndRow > iStartRow ) { // The previous note is a hold. - begin = prev; + lBegin = prev; } } } - if( bIncludeAdjacent && end != this->end(iTrack) ) + if( bIncludeAdjacent && lEnd != this->end(iTrack) ) { // Include the next note if it's a hold and starts on iEndRow. - const TapNote &tn = end->second; - int iHoldStartRow = end->first; + const TapNote &tn = lEnd->second; + int iHoldStartRow = lEnd->first; if( tn.type == TapNote::hold_head && iHoldStartRow == iEndRow ) - ++end; + ++lEnd; } } -void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end ) +void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &lBegin, TrackMap::iterator &lEnd ) { - GetTapNoteRange( iTrack, iStartRow, iEndRow, begin, end ); + GetTapNoteRange( iTrack, iStartRow, iEndRow, lBegin, lEnd ); // If end-1 is a hold_head, and extends beyond iEndRow, exclude it. - if( begin != end && end != this->begin(iTrack) ) + if( lBegin != lEnd && lEnd != this->begin(iTrack) ) { - iterator prev = end; + iterator prev = lEnd; --prev; if( prev->second.type == TapNote::hold_head ) { int localStartRow = prev->first; const TapNote &tn = prev->second; if( localStartRow + tn.iDuration >= iEndRow ) - end = prev; + lEnd = prev; } } } -void NoteData::GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end ) const +void NoteData::GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &lBegin, TrackMap::const_iterator &lEnd ) const { TrackMap::iterator const_begin, const_end; const_cast(this)->GetTapNoteRange( iTrack, iStartRow, iEndRow, const_begin, const_end ); - begin = const_begin; - end = const_end; + lBegin = const_begin; + lEnd = const_end; } -void NoteData::GetTapNoteRangeInclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end, bool bIncludeAdjacent ) const +void NoteData::GetTapNoteRangeInclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &lBegin, TrackMap::const_iterator &lEnd, bool bIncludeAdjacent ) const { TrackMap::iterator const_begin, const_end; const_cast(this)->GetTapNoteRangeInclusive( iTrack, iStartRow, iEndRow, const_begin, const_end, bIncludeAdjacent ); - begin = const_begin; - end = const_end; + lBegin = const_begin; + lEnd = const_end; } -void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end ) const +void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &lBegin, TrackMap::const_iterator &lEnd ) const { TrackMap::iterator const_begin, const_end; const_cast(this)->GetTapNoteRange( iTrack, iStartRow, iEndRow, const_begin, const_end ); - begin = const_begin; - end = const_end; + lBegin = const_begin; + lEnd = const_end; } diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 8280993a27..641bae8beb 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -95,26 +95,14 @@ static Preference g_fNetStartOffset( "NetworkStartOffset", -3.0 ); static Preference g_bEasterEggs( "EasterEggs", true ); -PlayerInfo::PlayerInfo() -{ - m_pn = PLAYER_INVALID; - m_mp = MultiPlayer_Invalid; - m_bIsDummy = false; - m_iDummyIndex = 0; - m_iAddToDifficulty = 0; - m_pLifeMeter = NULL; - m_ptextCourseSongNumber = NULL; - m_ptextStepsDescription = NULL; - m_pPrimaryScoreDisplay = NULL; - m_pSecondaryScoreDisplay = NULL; - m_pPrimaryScoreKeeper = NULL; - m_pSecondaryScoreKeeper = NULL; - m_ptextPlayerOptions = NULL; - m_pActiveAttackList = NULL; - m_pPlayer = NULL; - m_pInventory = NULL; - m_pStepsDisplay = NULL; -} +PlayerInfo::PlayerInfo(): m_pn(PLAYER_INVALID), m_mp(MultiPlayer_Invalid), + m_bIsDummy(false), m_iDummyIndex(0), m_iAddToDifficulty(0), + m_bPlayerEnabled(false), m_pLifeMeter(NULL), + m_ptextCourseSongNumber(NULL), m_ptextStepsDescription(NULL), + m_pPrimaryScoreDisplay(NULL), m_pSecondaryScoreDisplay(NULL), + m_pPrimaryScoreKeeper(NULL), m_pSecondaryScoreKeeper(NULL), + m_pActiveAttackList(NULL), m_pPlayer(NULL), m_pInventory(NULL), + m_pStepsDisplay(NULL) {} void PlayerInfo::Load( PlayerNumber pn, MultiPlayer mp, bool bShowNoteField, int iAddToDifficulty ) { From 6c1a765d722f7cd6098848304c8276799c4bb5a2 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 17:09:50 -0400 Subject: [PATCH 022/241] More effective fixes. FINALLY understand how to work with Structs, Classes, Vectors, etc. Took a little long. --- Xcode/stepmania.xcodeproj/project.pbxproj | 8 ++++---- src/NoteTypes.h | 11 ++++++----- src/Trail.h | 8 ++++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj index 676ef76ec3..935e37b281 100644 --- a/Xcode/stepmania.xcodeproj/project.pbxproj +++ b/Xcode/stepmania.xcodeproj/project.pbxproj @@ -7132,7 +7132,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -7668,7 +7668,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -8003,7 +8003,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -8132,7 +8132,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; diff --git a/src/NoteTypes.h b/src/NoteTypes.h index 76ae2f92f8..b842dd2f16 100644 --- a/src/NoteTypes.h +++ b/src/NoteTypes.h @@ -134,9 +134,9 @@ struct TapNote void LoadFromNode( const XNode* pNode ); TapNote(): type(empty), subType(SubType_Invalid), source(original), - pn(PLAYER_INVALID), bHopoPossible(false), + result(), pn(PLAYER_INVALID), bHopoPossible(false), sAttackModifiers(""), fAttackDurationSeconds(0), - iKeysoundIndex(-1), iDuration(0) {} + iKeysoundIndex(-1), iDuration(0), HoldResult() {} void Init() { type = empty; @@ -155,10 +155,11 @@ struct TapNote RString sAttackModifiers_, float fAttackDurationSeconds_, int iKeysoundIndex_ ): - type(type_), subType(subType_), source(source_), - pn(PLAYER_INVALID), sAttackModifiers(sAttackModifiers_), + type(type_), subType(subType_), source(source_), result(), + pn(PLAYER_INVALID), bHopoPossible(false), + sAttackModifiers(sAttackModifiers_), fAttackDurationSeconds(fAttackDurationSeconds_), - iKeysoundIndex(iKeysoundIndex_), iDuration(0) {} + iKeysoundIndex(iKeysoundIndex_), iDuration(0), HoldResult() {} /** * @brief Determine if the two TapNotes are equal to each other. diff --git a/src/Trail.h b/src/Trail.h index 092d9c31dd..1aaa74b8a2 100644 --- a/src/Trail.h +++ b/src/Trail.h @@ -18,6 +18,7 @@ struct TrailEntry pSong(NULL), pSteps(NULL), Modifiers(""), + Attacks(), bSecret(false), iLowMeter(-1), iHighMeter(-1), @@ -72,10 +73,9 @@ public: Trail(): m_StepsType(StepsType_Invalid), m_CourseType(CourseType_Invalid), m_CourseDifficulty(Difficulty_Invalid), - m_iSpecifiedMeter(-1), m_bRadarValuesCached(false) - { - m_vEntries.clear(); - } + m_vEntries(), m_iSpecifiedMeter(-1), + m_bRadarValuesCached(false), m_CachedRadarValues(), + m_CachedObject() {} void Init() { m_StepsType = StepsType_Invalid; From 3dcdf67666d8dde9d5e393886a7b44275cd40290 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 17:10:38 -0400 Subject: [PATCH 023/241] Right, right, don't force others to be effective. Wait, that came out wrong. --- Xcode/stepmania.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj index 935e37b281..676ef76ec3 100644 --- a/Xcode/stepmania.xcodeproj/project.pbxproj +++ b/Xcode/stepmania.xcodeproj/project.pbxproj @@ -7132,7 +7132,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -7668,7 +7668,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -8003,7 +8003,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; @@ -8132,7 +8132,7 @@ GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_MISSING_PARENTHESES = YES; From 22b7b3489723bda4a213c8a85178ad421d32ed3e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 18:26:55 -0400 Subject: [PATCH 024/241] More effective fixes. Course playing still results in it playing fine. --- src/BackgroundUtil.h | 34 ++++++++++++++++------------ src/Command.h | 3 +++ src/Course.cpp | 13 +++++++++-- src/Course.h | 6 +++-- src/CourseUtil.h | 2 +- src/Font.cpp | 11 +++------ src/Font.h | 12 +++++----- src/MessageManager.h | 2 +- src/MsdFile.h | 3 +++ src/RageBitmapTexture.cpp | 2 +- src/RageDisplay.cpp | 2 +- src/RageSound.cpp | 5 ++-- src/RageTexturePreloader.h | 6 ++--- src/RageTypes.h | 1 + src/RageUtil_CachedObject.h | 7 ++---- src/SongUtil.h | 7 +++--- src/StepsUtil.h | 2 +- src/UnlockManager.h | 7 +++--- src/arch/InputHandler/InputHandler.h | 2 +- 19 files changed, 72 insertions(+), 55 deletions(-) diff --git a/src/BackgroundUtil.h b/src/BackgroundUtil.h index ca813484d8..80d36b8a92 100644 --- a/src/BackgroundUtil.h +++ b/src/BackgroundUtil.h @@ -27,15 +27,26 @@ struct BackgroundDef RString m_sColor2; // "" == use default XNode *CreateNode() const; + + /** @brief Set up the BackgroundDef with default values. */ + BackgroundDef(): m_sEffect(""), m_sFile1(""), m_sFile2(""), + m_sColor1(""), m_sColor2("") {} + + /** + * @brief Set up the BackgroundDef with some defined values. + * @param effect the intended effect. + * @param f1 the primary filename for the definition. + * @param f2 the secondary filename (optional). */ + BackgroundDef(RString effect, RString f1, RString f2): + m_sEffect(effect), m_sFile1(f1), m_sFile2(f2), + m_sColor1(""), m_sColor2("") {} }; struct BackgroundChange { - BackgroundChange() - { - m_fStartBeat=-1; - m_fRate=1; - } + BackgroundChange(): m_def(), m_fStartBeat(-1), m_fRate(1), + m_sTransition("") {} + BackgroundChange( float s, RString f1, @@ -43,15 +54,10 @@ struct BackgroundChange float r=1.f, RString e=SBE_Centered, RString t=RString() - ) - { - m_fStartBeat=s; - m_def.m_sFile1=f1; - m_def.m_sFile2=f2; - m_fRate=r; - m_def.m_sEffect=e; - m_sTransition=t; - } + ): + m_def(e, f1, f2), m_fStartBeat(s), + m_fRate(r), m_sTransition(t) {} + BackgroundDef m_def; float m_fStartBeat; float m_fRate; diff --git a/src/Command.h b/src/Command.h index 88f5110bfc..71adceb282 100644 --- a/src/Command.h +++ b/src/Command.h @@ -16,10 +16,13 @@ public: struct Arg { RString s; + Arg(): s("") {} }; Arg GetArg( unsigned index ) const; vector m_vsArgs; + + Command(): m_vsArgs() {} }; class Commands diff --git a/src/Course.cpp b/src/Course.cpp index 10dc2c7f0f..ce37abc628 100644 --- a/src/Course.cpp +++ b/src/Course.cpp @@ -88,9 +88,18 @@ int CourseEntry::GetNumModChanges() const -Course::Course() +Course::Course(): m_bIsAutogen(false), m_sPath(""), m_sMainTitle(""), + m_sMainTitleTranslit(""), m_sSubTitle(""), m_sSubTitleTranslit(""), + m_sBannerPath(""), m_sBackgroundPath(""), m_sCDTitlePath(""), + m_sGroupName(""), m_bRepeat(false), m_fGoalSeconds(0), + m_bShuffle(false), m_iLives(-1), m_bSortByMeter(false), + m_bIncomplete(false), m_vEntries(), m_SortOrder_TotalDifficulty(0), + m_SortOrder_Ranking(0), m_LoadedFromProfile(ProfileSlot_Invalid), + m_TrailCache(), m_iTrailCacheSeed(0), m_RadarCache(), + m_setStyles(), m_CachedObject() { - Init(); + FOREACH_ENUM( Difficulty,dc) + m_iCustomMeter[dc] = -1; } CourseType Course::GetCourseType() const diff --git a/src/Course.h b/src/Course.h index 25864c12f6..7ba37eb3f0 100644 --- a/src/Course.h +++ b/src/Course.h @@ -55,9 +55,11 @@ public: float fGainSeconds; // time gained back at the beginning of the song. LifeMeterTime only. int iGainLives; // lives gained back at the beginning of the next song - CourseEntry(): bSecret(false), bNoDifficult(false), + CourseEntry(): bSecret(false), songID(), songCriteria(), + stepsCriteria(), bNoDifficult(false), songSort(SongSort_Randomize), iChooseIndex(0), - sModifiers(RString("")), fGainSeconds(0), iGainLives(-1) {} + sModifiers(RString("")), attacks(), fGainSeconds(0), + iGainLives(-1) {} bool IsFixedSong() const { return songID.IsValid(); } diff --git a/src/CourseUtil.h b/src/CourseUtil.h index f897617888..e338c9c3e7 100644 --- a/src/CourseUtil.h +++ b/src/CourseUtil.h @@ -68,7 +68,7 @@ namespace EditCourseUtil class CourseID { public: - CourseID() { Unset(); } + CourseID(): sPath(""), sFullTitle(""), m_Cache() { Unset(); } void Unset() { FromCourse(NULL); } void FromCourse( const Course *p ); Course *ToCourse() const; diff --git a/src/Font.cpp b/src/Font.cpp index 10c89f5ad8..fed6ed7835 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -220,14 +220,9 @@ int Font::GetLineHeightInSourcePixels( const wstring &szLine ) const } -Font::Font() -{ - m_iRefCount = 1; - m_pDefault = NULL; - m_bRightToLeft = false; - // [sm-ssc] don't show strokes by default - m_DefaultStrokeColor = RageColor(0,0,0,0); -} +Font::Font(): m_iRefCount(1), path(""), m_apPages(), m_pDefault(NULL), + m_bRightToLeft(false), m_DefaultStrokeColor(RageColor(0,0,0,0)), + m_sChars("") {} // strokes aren't shown by default, hence the Color. Font::~Font() { diff --git a/src/Font.h b/src/Font.h index ef1eeb1f73..4242693a34 100644 --- a/src/Font.h +++ b/src/Font.h @@ -23,11 +23,7 @@ struct FontPageTextures RageTexture *m_pTextureStroke; /** @brief Set up the initial textures. */ - FontPageTextures() - { - m_pTextureMain = NULL; - m_pTextureStroke = NULL; - } + FontPageTextures(): m_pTextureMain(NULL), m_pTextureStroke(NULL) {} }; /** @brief The components of a glyph (not technically a character). */ @@ -52,6 +48,10 @@ struct glyph /** @brief Texture coordinate rect. */ RectF m_TexRect; + + /** @brief Set up the glyph with default values. */ + glyph() : m_pPage(NULL), m_FontPageTextures(), m_iHadvance(0), + m_fWidth(0), m_fHeight(0), m_fHshift(0), m_TexRect() {} }; /** @brief The settings used for the FontPage. */ @@ -75,7 +75,7 @@ struct FontPageSettings map m_mapGlyphWidths; /** @brief The initial settings for the FontPage. */ - FontPageSettings(): + FontPageSettings(): m_sTexturePath(""), m_iDrawExtraPixelsLeft(0), m_iDrawExtraPixelsRight(0), m_iAddToAllWidths(0), m_iLineSpacing(-1), diff --git a/src/MessageManager.h b/src/MessageManager.h index c067bbbe24..020868fb4a 100644 --- a/src/MessageManager.h +++ b/src/MessageManager.h @@ -156,7 +156,7 @@ private: class MessageSubscriber : public IMessageSubscriber { public: - MessageSubscriber() {} + MessageSubscriber(): m_vsSubscribedTo() {} MessageSubscriber( const MessageSubscriber &cpy ); MessageSubscriber &operator=(const MessageSubscriber &cpy); diff --git a/src/MsdFile.h b/src/MsdFile.h index 1c5f50f645..aaae912b14 100644 --- a/src/MsdFile.h +++ b/src/MsdFile.h @@ -13,6 +13,9 @@ public: { /** @brief The list of parameters. */ vector params; + /** @brief Set up the parameters with default values. */ + value_t(): params() {} + /** * @brief Access the proper parameter. * @param i the index. diff --git a/src/RageBitmapTexture.cpp b/src/RageBitmapTexture.cpp index 0579ebd56a..e6743722c2 100644 --- a/src/RageBitmapTexture.cpp +++ b/src/RageBitmapTexture.cpp @@ -31,7 +31,7 @@ static void GetResolutionFromFileName( RString sPath, int &iWidth, int &iHeight } RageBitmapTexture::RageBitmapTexture( RageTextureID name ) : - RageTexture( name ) + RageTexture( name ), m_uTexHandle(0) { Create(); } diff --git a/src/RageDisplay.cpp b/src/RageDisplay.cpp index 4519a623be..273d68a4c8 100644 --- a/src/RageDisplay.cpp +++ b/src/RageDisplay.cpp @@ -264,7 +264,7 @@ class MatrixStack vector stack; public: - MatrixStack() + MatrixStack(): stack() { stack.resize(1); LoadIdentity(); diff --git a/src/RageSound.cpp b/src/RageSound.cpp index 258023c5ce..a89ff3018a 100644 --- a/src/RageSound.cpp +++ b/src/RageSound.cpp @@ -48,9 +48,10 @@ RageSoundLoadParams::RageSoundLoadParams(): m_bSupportRateChanging(false), m_bSupportPan(false) {} RageSound::RageSound(): - m_Mutex( "RageSound" ), m_pSource(NULL), m_iStreamFrame(0), + m_Mutex( "RageSound" ), m_pSource(NULL), + m_sFilePath(""), m_Param(), m_iStreamFrame(0), m_iStoppedSourceFrame(0), m_bPlaying(false), - m_bDeleteWhenFinished(false) + m_sError(""), m_bDeleteWhenFinished(false) { ASSERT( SOUNDMAN ); } diff --git a/src/RageTexturePreloader.h b/src/RageTexturePreloader.h index a7bfb04805..1a45ffe28b 100644 --- a/src/RageTexturePreloader.h +++ b/src/RageTexturePreloader.h @@ -1,15 +1,13 @@ -/* RageTexturePreloader - Load textures in advance, for use later. */ - #ifndef RAGE_TEXTURE_PRELOADER_H #define RAGE_TEXTURE_PRELOADER_H class RageTexture; struct RageTextureID; - +/** @brief Load the textures in advance for using them later. */ class RageTexturePreloader { public: - RageTexturePreloader() { } + RageTexturePreloader(): m_apTextures() { } RageTexturePreloader( const RageTexturePreloader &cpy ) { *this = cpy; } RageTexturePreloader &operator=( const RageTexturePreloader &rhs ); ~RageTexturePreloader(); diff --git a/src/RageTypes.h b/src/RageTypes.h index 7e7238f383..610b058329 100644 --- a/src/RageTypes.h +++ b/src/RageTypes.h @@ -335,6 +335,7 @@ typedef StepMania::Rect RectF; * have the same layout that D3D expects. */ struct RageSpriteVertex // has color { + RageSpriteVertex(): p(), n(), c(), t() {} RageVector3 p; // position RageVector3 n; // normal RageVColor c; // diffuse color diff --git a/src/RageUtil_CachedObject.h b/src/RageUtil_CachedObject.h index d0305e43f9..a74c80e2a7 100644 --- a/src/RageUtil_CachedObject.h +++ b/src/RageUtil_CachedObject.h @@ -18,17 +18,14 @@ template class CachedObject { public: - CachedObject() + CachedObject(): m_pObject(NULL) { - m_pObject = NULL; - /* A new object is being constructed, so invalidate negative caching. */ ClearCacheNegative(); } - CachedObject( const CachedObject &cpy ) + CachedObject( const CachedObject &cpy ): m_pObject(NULL) { - m_pObject = NULL; ClearCacheNegative(); } diff --git a/src/SongUtil.h b/src/SongUtil.h index 368594adb5..0c0a18043d 100644 --- a/src/SongUtil.h +++ b/src/SongUtil.h @@ -47,8 +47,9 @@ public: } m_Locked; /** @brief Set up some initial song criteria. */ - SongCriteria(): m_sGroupName(""), m_bUseSongGenreAllowedList(false), - m_Selectable(Selectable_DontCare), m_bUseSongAllowedList(false), + SongCriteria(): m_sGroupName(""), m_bUseSongGenreAllowedList(false), + m_vsSongGenreAllowedList(), m_Selectable(Selectable_DontCare), + m_bUseSongAllowedList(false), m_vpSongAllowedList(), m_iMaxStagesForSong(-1), m_Tutorial(Tutorial_DontCare), m_Locked(Locked_DontCare) { @@ -182,7 +183,7 @@ public: * @brief Set up the SongID with default values. * * This used to call Unset() to do the same thing. */ - SongID(): sDir("") { m_Cache.Unset(); } + SongID(): sDir(""), m_Cache() { m_Cache.Unset(); } void Unset() { FromSong(NULL); } void FromSong( const Song *p ); Song *ToSong() const; diff --git a/src/StepsUtil.h b/src/StepsUtil.h index 05aa5a6155..fa61a61900 100644 --- a/src/StepsUtil.h +++ b/src/StepsUtil.h @@ -169,7 +169,7 @@ public: * This used to call Unset(), which set the variables to * the same thing. */ StepsID(): st(StepsType_Invalid), dc(Difficulty_Invalid), - sDescription(""), uHash(0) {} + sDescription(""), uHash(0), m_Cache() {} void Unset() { FromSteps(NULL); } void FromSteps( const Steps *p ); Steps *ToSteps( const Song *p, bool bAllowNull ) const; diff --git a/src/UnlockManager.h b/src/UnlockManager.h index 9874e5401c..f042b60da2 100644 --- a/src/UnlockManager.h +++ b/src/UnlockManager.h @@ -57,9 +57,10 @@ public: * * m_sEntryID starts as an empty string. It will be filled automatically * if not specified. */ - UnlockEntry(): m_Type(UnlockRewardType_Invalid), - m_dc(Difficulty_Invalid), m_bRequirePassHardSteps(false), - m_bRoulette(false), m_sEntryID(RString("")) + UnlockEntry(): m_Type(UnlockRewardType_Invalid), m_cmd(), + m_Song(), m_dc(Difficulty_Invalid), m_Course(), + m_bRequirePassHardSteps(false), m_bRoulette(false), + m_sEntryID(RString("")) { ZERO( m_fRequirement ); } diff --git a/src/arch/InputHandler/InputHandler.h b/src/arch/InputHandler/InputHandler.h index 307f78617b..3564a73552 100644 --- a/src/arch/InputHandler/InputHandler.h +++ b/src/arch/InputHandler/InputHandler.h @@ -25,7 +25,7 @@ public: static void Create( const RString &sDrivers, vector &apAdd ); static DriverList m_pDriverList; - InputHandler(): m_iInputsSinceUpdate(0) {} + InputHandler(): m_LastUpdate(), m_iInputsSinceUpdate(0) {} virtual ~InputHandler() { } virtual void Update() { } virtual bool DevicesChanged() { return false; } From cf81f8cc3bd9488b2acac96794af216ebeabcc16 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 19 Mar 2011 19:28:57 -0500 Subject: [PATCH 025/241] remove xbox support; it doesn't work, and it'd take too much effort to get it working again --- src/BannerCache.cpp | 12 +- src/LuaManager.cpp | 6 +- src/RageDisplay_D3D.cpp | 118 +- src/RageFileDriverDeflate.cpp | 4 +- src/RageFileDriverDirect.cpp | 2 - src/RageFileDriverDirectHelpers.cpp | 81 +- src/RageFileDriverDirectHelpers.h | 10 - src/RageFileManager.cpp | 9 +- src/RageLog.cpp | 2 +- src/RageMath.cpp | 2 +- src/RageSoundReader_MP3.cpp | 12 +- src/RageSurface_Load_JPEG.cpp | 11 +- src/RageSurface_Load_PNG.cpp | 23 +- src/RageSurface_Save_JPEG.cpp | 11 +- src/RageSurface_Save_PNG.cpp | 8 +- src/RageUtil.cpp | 4 - src/ScreenEdit.cpp | 41 +- src/ScreenMapControllers.cpp | 28 - src/ScreenServiceAction.h | 5 - src/ScreenTestFonts.h | 4 - src/SongCacheIndex.cpp | 5 - src/StepMania.cpp | 34 +- src/StepManiaXbox-2003.vcproj | 2783 ----------------- src/Texture Font Generator/Utils.cpp | 14 +- src/arch/ArchHooks/ArchHooks_Xbox.cpp | 227 -- src/arch/ArchHooks/ArchHooks_Xbox.h | 78 - src/arch/InputHandler/InputHandler_Xbox.cpp | 232 -- src/arch/InputHandler/InputHandler_Xbox.h | 52 - src/arch/LoadingWindow/LoadingWindow.cpp | 5 +- src/arch/LoadingWindow/LoadingWindow_Xbox.cpp | 179 -- src/arch/LoadingWindow/LoadingWindow_Xbox.h | 51 - .../MemoryCardDriverThreaded_Xbox.cpp | 150 - .../MemoryCardDriverThreaded_Xbox.h | 51 - src/arch/MovieTexture/MovieTexture_FFMpeg.cpp | 23 +- .../MovieTexture/MovieTexture_Generic.cpp | 2 +- src/arch/Threads/Threads_Win32.cpp | 2 - src/arch/arch.cpp | 21 +- src/arch/arch.h | 2 - src/arch/arch_default.h | 10 - src/archutils/Win32/AppInstance.h | 4 +- src/archutils/Win32/DirectXHelpers.cpp | 18 +- src/archutils/Win32/ErrorStrings.cpp | 4 - src/archutils/Win32/arch_setup.h | 18 +- src/archutils/Xbox/GraphicsWindow.cpp | 151 - src/archutils/Xbox/GraphicsWindow.h | 47 - src/archutils/Xbox/VirtualMemory.cpp | 644 ---- src/archutils/Xbox/VirtualMemory.h | 87 - src/archutils/Xbox/arch_setup.cpp | 58 - src/archutils/Xbox/arch_setup.h | 25 - src/archutils/Xbox/custom_launch_params.cpp | 66 - src/archutils/Xbox/custom_launch_params.h | 36 - src/archutils/Xbox/saveblue.XBX | Bin 18432 -> 0 bytes src/archutils/Xbox/savered.XBX | Bin 18432 -> 0 bytes src/archutils/Xbox/smicon.XBX | Bin 18432 -> 0 bytes src/crypto/CryptNoise.cpp | 11 +- src/ezsockets.cpp | 47 +- src/ezsockets.h | 14 +- src/global.cpp | 1 - src/libjpeg/jmorecfg.h | 2 +- src/lua-5.1/src/luaconf.h | 3 +- src/sm-ssc_Xbox-net2003.sln | 53 - 61 files changed, 75 insertions(+), 5528 deletions(-) delete mode 100644 src/StepManiaXbox-2003.vcproj delete mode 100644 src/arch/ArchHooks/ArchHooks_Xbox.cpp delete mode 100644 src/arch/ArchHooks/ArchHooks_Xbox.h delete mode 100644 src/arch/InputHandler/InputHandler_Xbox.cpp delete mode 100644 src/arch/InputHandler/InputHandler_Xbox.h delete mode 100644 src/arch/LoadingWindow/LoadingWindow_Xbox.cpp delete mode 100644 src/arch/LoadingWindow/LoadingWindow_Xbox.h delete mode 100644 src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.cpp delete mode 100644 src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.h delete mode 100644 src/archutils/Xbox/GraphicsWindow.cpp delete mode 100644 src/archutils/Xbox/GraphicsWindow.h delete mode 100644 src/archutils/Xbox/VirtualMemory.cpp delete mode 100644 src/archutils/Xbox/VirtualMemory.h delete mode 100644 src/archutils/Xbox/arch_setup.cpp delete mode 100644 src/archutils/Xbox/arch_setup.h delete mode 100644 src/archutils/Xbox/custom_launch_params.cpp delete mode 100644 src/archutils/Xbox/custom_launch_params.h delete mode 100644 src/archutils/Xbox/saveblue.XBX delete mode 100644 src/archutils/Xbox/savered.XBX delete mode 100644 src/archutils/Xbox/smicon.XBX delete mode 100644 src/sm-ssc_Xbox-net2003.sln diff --git a/src/BannerCache.cpp b/src/BannerCache.cpp index 8e60a2e2a8..ffcc4a3e6f 100644 --- a/src/BannerCache.cpp +++ b/src/BannerCache.cpp @@ -230,17 +230,13 @@ struct BannerTexture: public RageTexture m_iTextureWidth = m_iImageWidth = m_pImage->w; m_iTextureHeight = m_iImageHeight = m_pImage->h; - /* Find a supported texture format. If it happens to match the stored - * file, we won't have to do any conversion here, and that'll happen often - * with paletted images. */ -#if !defined(XBOX) + /* Find a supported texture format. If it happens to match the stored + * file, we won't have to do any conversion here, and that'll happen + * often with paletted images. */ PixelFormat pf = m_pImage->format->BitsPerPixel == 8? PixelFormat_PAL: PixelFormat_RGB5A1; if( !DISPLAY->SupportsTextureFormat(pf) ) pf = PixelFormat_RGBA4; -#else - // xbox display currently supports only rgba8 - PixelFormat pf = PixelFormat_RGBA8; -#endif + ASSERT( DISPLAY->SupportsTextureFormat(pf) ); ASSERT(m_pImage); diff --git a/src/LuaManager.cpp b/src/LuaManager.cpp index 70b4d84eeb..65796fcbac 100644 --- a/src/LuaManager.cpp +++ b/src/LuaManager.cpp @@ -27,7 +27,7 @@ struct Impl }; static Impl *pImpl = NULL; -#if defined(_MSC_VER) || defined (_XBOX) +#if defined(_MSC_VER) /* "interaction between '_setjmp' and C++ object destruction is non-portable" * We don't care; we'll throw a fatal exception immediately anyway. */ #pragma warning (disable : 4611) @@ -973,9 +973,7 @@ LuaFunction( VersionTime, (RString) version_time ); static RString GetOSName() { RString system; - #if defined(XBOX) - system = "Xbox"; - #elif defined(WIN32) && !defined(XBOX) + #if defined(WIN32) system = "Windows"; #elif defined(LINUX) system = "Linux"; diff --git a/src/RageDisplay_D3D.cpp b/src/RageDisplay_D3D.cpp index b977eb03b1..8dfb6974fd 100644 --- a/src/RageDisplay_D3D.cpp +++ b/src/RageDisplay_D3D.cpp @@ -17,16 +17,11 @@ #include #include -#if !defined(XBOX) #include "archutils/Win32/GraphicsWindow.h" -#else -#include "archutils/Xbox/GraphicsWindow.h" -#include "archutils/Xbox/VirtualMemory.h" -#endif // Static libraries // load Windows D3D8 dynamically -#if defined(_MSC_VER) && !defined(_XBOX) +#if defined(_MSC_VER) #pragma comment(lib, "D3dx8.lib") #pragma comment(lib, "Dxerr8.lib") #endif @@ -42,9 +37,7 @@ RString GetErrorString( HRESULT hr ) } // Globals -#if !defined(XBOX) HMODULE g_D3D8_Module = NULL; -#endif LPDIRECT3D8 g_pd3d = NULL; LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; D3DCAPS8 g_DeviceCaps; @@ -84,12 +77,8 @@ static void SetPalette( unsigned TexResource ) } // Load it. -#if !defined(XBOX) TexturePalette& pal = g_TexResourceToTexturePalette[TexResource]; g_pd3dDevice->SetPaletteEntries( iPalIndex, pal.p ); -#else - ASSERT(0); -#endif g_TexResourceToPaletteIndex[TexResource] = iPalIndex; } @@ -106,11 +95,7 @@ static void SetPalette( unsigned TexResource ) break; } -#if !defined(XBOX) g_pd3dDevice->SetCurrentTexturePalette( iPalIndex ); -#else - ASSERT(0); -#endif } #define D3DFVF_RageSpriteVertex (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1) @@ -178,11 +163,7 @@ static D3DFORMAT D3DFORMATS[NUM_PixelFormat] = D3DFMT_A4R4G4B4, D3DFMT_A1R5G5B5, D3DFMT_X1R5G5B5, -#if defined(XBOX) - D3DFMT_UNKNOWN, // no RGB -#else D3DFMT_R8G8B8, -#endif D3DFMT_P8, D3DFMT_UNKNOWN, // no BGR D3DFMT_UNKNOWN, // no ABGR @@ -214,9 +195,7 @@ RString RageDisplay_D3D::Init( const VideoModeParams &p, bool bAllowUnaccelerate typedef IDirect3D8 * (WINAPI * Direct3DCreate8_t) (UINT SDKVersion); Direct3DCreate8_t pDirect3DCreate8; -#if defined(XBOX) - pDirect3DCreate8 = Direct3DCreate8; -#else + g_D3D8_Module = LoadLibrary("D3D8.dll"); if(!g_D3D8_Module) return D3D_NOT_INSTALLED.GetValue() + "\n" + D3D_URL; @@ -227,7 +206,6 @@ RString RageDisplay_D3D::Init( const VideoModeParams &p, bool bAllowUnaccelerate LOG->Trace( "Direct3DCreate8 not found" ); return D3D_NOT_INSTALLED.GetValue(); } -#endif g_pd3d = pDirect3DCreate8( D3D_SDK_VERSION ); if(!g_pd3d) @@ -294,13 +272,11 @@ RageDisplay_D3D::~RageDisplay_D3D() /* Even after we call Release(), D3D may still affect our window. It seems * to subclass the window, and never release it. Free the DLL after * destroying the window. */ -#if !defined(XBOX) if( g_D3D8_Module ) { FreeLibrary( g_D3D8_Module ); g_D3D8_Module = NULL; } -#endif } void RageDisplay_D3D::GetDisplayResolutions( DisplayResolutions &out ) const @@ -334,9 +310,7 @@ D3DFORMAT FindBackBufferType(bool bWindowed, int iBPP) } if( iBPP == 32 || bWindowed ) { -#if !defined(XBOX) vBackBufferFormats.push_back( D3DFMT_R8G8B8 ); -#endif vBackBufferFormats.push_back( D3DFMT_X8R8G8B8 ); vBackBufferFormats.push_back( D3DFMT_A8R8G8B8 ); } @@ -383,13 +357,8 @@ RString SetD3DParams( bool &bNewDeviceOut ) HRESULT hr = g_pd3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, -#if !defined(XBOX) GraphicsWindow::GetHwnd(), D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, -#else - NULL, - D3DCREATE_HARDWARE_VERTEXPROCESSING, -#endif &g_d3dpp, &g_pd3dDevice ); if( FAILED(hr) ) @@ -506,11 +475,7 @@ static void SetPresentParametersFromVideoModeParams( const VideoModeParams &p, D pD3Dpp->BackBufferCount = 1; pD3Dpp->MultiSampleType = D3DMULTISAMPLE_NONE; pD3Dpp->SwapEffect = D3DSWAPEFFECT_DISCARD; -#if !defined(XBOX) pD3Dpp->hDeviceWindow = GraphicsWindow::GetHwnd(); -#else - pD3Dpp->hDeviceWindow = NULL; -#endif pD3Dpp->Windowed = p.windowed; pD3Dpp->EnableAutoDepthStencil = TRUE; pD3Dpp->AutoDepthStencilFormat = D3DFMT_D16; @@ -520,25 +485,9 @@ static void SetPresentParametersFromVideoModeParams( const VideoModeParams &p, D else pD3Dpp->FullScreen_PresentationInterval = p.vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE; -#if !defined(XBOX) pD3Dpp->FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; if( !p.windowed && p.rate != REFRESH_DEFAULT ) pD3Dpp->FullScreen_RefreshRateInHz = p.rate; -#else - if( XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I ) - { - // Get supported video flags. - DWORD VideoFlags = XGetVideoFlags(); - - // Set pal60 if available. - if( VideoFlags & XC_VIDEO_FLAGS_PAL_60Hz ) - pD3Dpp->FullScreen_RefreshRateInHz = 60; - else - pD3Dpp->FullScreen_RefreshRateInHz = 50; - } - else - pD3Dpp->FullScreen_RefreshRateInHz = 60; -#endif pD3Dpp->Flags = 0; @@ -556,9 +505,6 @@ static void SetPresentParametersFromVideoModeParams( const VideoModeParams &p, D RString RageDisplay_D3D::TryVideoMode( const VideoModeParams &_p, bool &bNewDeviceOut ) { VideoModeParams p = _p; -#if defined(XBOX) - p.windowed = false; -#endif LOG->Warn( "RageDisplay_D3D::TryVideoMode( %d, %d, %d, %d, %d, %d )", p.windowed, p.width, p.height, p.bpp, p.rate, p.vsync ); if( FindBackBufferType( p.windowed, p.bpp ) == D3DFMT_UNKNOWN ) // no possible back buffer formats @@ -571,11 +517,6 @@ RString RageDisplay_D3D::TryVideoMode( const VideoModeParams &_p, bool &bNewDevi SetPresentParametersFromVideoModeParams( p, &g_d3dpp ); -#if defined(XBOX) - if( D3D__pDevice ) - g_pd3dDevice = D3D__pDevice; -#endif - // Display the window immediately, so we don't display the desktop ... while( 1 ) { @@ -612,14 +553,6 @@ void RageDisplay_D3D::ResolutionChanged() { //LOG->Warn( "RageDisplay_D3D::ResolutionChanged" ); -#if defined(XBOX) - VideoModeParams p = GetActualVideoModeParams(); - D3DVIEWPORT8 viewData = { 0, 0, p.width, p.height, 0.f, 1.f }; - g_pd3dDevice->SetViewport( &viewData ); - g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, - D3DCOLOR_XRGB(0,0,0), 1.0f, 0x00000000 ); -#endif - RageDisplay::ResolutionChanged(); } @@ -632,7 +565,6 @@ bool RageDisplay_D3D::BeginFrame() { GraphicsWindow::Update(); -#if !defined(XBOX) switch( g_pd3dDevice->TestCooperativeLevel() ) { case D3DERR_DEVICELOST: @@ -647,7 +579,6 @@ bool RageDisplay_D3D::BeginFrame() break; } } -#endif g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0x00000000 ); @@ -670,16 +601,6 @@ void RageDisplay_D3D::EndFrame() bool RageDisplay_D3D::SupportsTextureFormat( PixelFormat pixfmt, bool realtime ) { -#if defined(XBOX) - /* Lazy... Xbox handles paletted textures completely differently than - * regular D3D. It's not worth writing a bunch of code to handle it. - * Paletted textures result in worse cache efficiency anyway (see "Xbox - * Palettized Texture Performance" in XDK). So, just force 32bit ARGB textures. - * -Chris - * This is also needed for XGSwizzleRect(). */ - return pixfmt == PixelFormat_RGBA8; -#endif - // Some cards (Savage) don't support alpha in palettes. // Don't allow paletted textures if this is the case. if( pixfmt == PixelFormat_PAL && !(g_DeviceCaps.TextureCaps & D3DPTEXTURECAPS_ALPHAPALETTE) ) @@ -707,9 +628,6 @@ bool RageDisplay_D3D::SupportsThreadedRendering() RageSurface* RageDisplay_D3D::CreateScreenshot() { -#if defined(XBOX) - return NULL; -#else // Get the back buffer. IDirect3DSurface8* pSurface; g_pd3dDevice->GetBackBuffer( 0, D3DBACKBUFFER_TYPE_MONO, &pSurface ); @@ -756,7 +674,6 @@ RageSurface* RageDisplay_D3D::CreateScreenshot() pCopy->Release(); return SurfaceCopy; -#endif } VideoModeParams RageDisplay_D3D::GetActualVideoModeParams() const @@ -1429,15 +1346,6 @@ unsigned RageDisplay_D3D::CreateTexture( IDirect3DTexture8* pTex; hr = g_pd3dDevice->CreateTexture( power_of_two(img->w), power_of_two(img->h), 1, 0, D3DFORMATS[pixfmt], D3DPOOL_MANAGED, &pTex ); -#if defined(XBOX) - while(hr == E_OUTOFMEMORY) - { - if(!vmem_Manager.DecommitLRU()) - break; - hr = g_pd3dDevice->CreateTexture( power_of_two(img->w), power_of_two(img->h), 1, 0, D3DFORMATS[pixfmt], D3DPOOL_MANAGED, &pTex ); - } -#endif - if( FAILED(hr) ) RageException::Throw( "CreateTexture(%i,%i,%s) failed: %s", img->w, img->h, PixelFormatToString(pixfmt).c_str(), GetErrorString(hr).c_str() ); @@ -1490,27 +1398,6 @@ void RageDisplay_D3D::UpdateTexture( ASSERT( yoffset+height <= int(desc.Height) ); // Copy bits -#if defined(XBOX) - RageSurface *Texture = CreateSurface( width, height, 32, - Swap32BE( 0x0000FF00 ), - Swap32BE( 0x00FF0000 ), - Swap32BE( 0xFF000000 ), - Swap32BE( 0x000000FF ) ); - - RageSurfaceUtils::Blit( img, Texture, width, height ); - - // Xbox textures need to be swizzled - XGSwizzleRect( - Texture->pixels, // pSource, - Texture->pitch, // Pitch, - NULL, // pRect, - lr.pBits, // pDest, - Texture->w, // Width, - Texture->h, // Height, - NULL, // pPoint, - Texture->format->BytesPerPixel ); //BytesPerPixel - delete Texture; -#else int texpixfmt; for(texpixfmt = 0; texpixfmt < NUM_PixelFormat; ++texpixfmt) if(D3DFORMATS[texpixfmt] == desc.Format) break; @@ -1521,7 +1408,6 @@ void RageDisplay_D3D::UpdateTexture( RageSurfaceUtils::Blit( img, Texture, width, height ); delete Texture; -#endif pTex->UnlockRect( 0 ); } diff --git a/src/RageFileDriverDeflate.cpp b/src/RageFileDriverDeflate.cpp index 45fff020bb..dbb839c1ab 100644 --- a/src/RageFileDriverDeflate.cpp +++ b/src/RageFileDriverDeflate.cpp @@ -6,9 +6,9 @@ #include "RageUtil.h" #include -#if defined(_WINDOWS) || defined(_XBOX) +#if defined(_WINDOWS) #include "zlib/zlib.h" -#if defined(_MSC_VER) && !defined(_XBOX) +#if defined(_MSC_VER) #pragma comment(lib, "zlib/zdll.lib") #endif #elif defined(MACOSX) diff --git a/src/RageFileDriverDirect.cpp b/src/RageFileDriverDirect.cpp index cfab22525f..d6de2ebdc3 100644 --- a/src/RageFileDriverDirect.cpp +++ b/src/RageFileDriverDirect.cpp @@ -16,9 +16,7 @@ #include #else #include "archutils/Win32/ErrorStrings.h" -#if !defined(_XBOX) #include -#endif // !defined(_XBOX) #include #endif // !defined(WIN32) diff --git a/src/RageFileDriverDirectHelpers.cpp b/src/RageFileDriverDirectHelpers.cpp index dd7a65631c..fd8aa8d048 100644 --- a/src/RageFileDriverDirectHelpers.cpp +++ b/src/RageFileDriverDirectHelpers.cpp @@ -12,57 +12,13 @@ #include #include #else -#if !defined(_XBOX) #include -#endif #include #endif -#if defined(_XBOX) -/* Wrappers for low-level file functions, to work around Xbox issues: */ -int DoMkdir( const RString &sPath, int perm ) -{ - return mkdir( DoPathReplace(sPath), perm ); -} - -int DoOpen( const RString &sPath, int flags, int perm ) -{ - return open( DoPathReplace(sPath), flags, perm ); -} - -int DoStat( const RString &sPath, struct stat *st ) -{ - return stat( DoPathReplace(sPath), st ); -} - -int DoRename( const RString &sOldPath, const RString &sNewPath ) -{ - return rename( DoPathReplace(sOldPath), DoPathReplace(sNewPath) ); -} - -int DoRemove( const RString &sPath ) -{ - return remove( DoPathReplace(sPath) ); -} - -int DoRmdir( const RString &sPath ) -{ - return rmdir( DoPathReplace(sPath) ); -} - -HANDLE DoFindFirstFile( const RString &sPath, WIN32_FIND_DATA *fd ) -{ - return FindFirstFile( DoPathReplace(sPath), fd ); -} - -#endif RString DoPathReplace(const RString &sPath) { RString TempPath = sPath; -#if defined(XBOX) - TempPath.Replace( "//", "\\" ); - TempPath.Replace( "/", "\\" ); -#endif return TempPath; } @@ -72,9 +28,9 @@ static bool WinMoveFileInternal( const RString &sOldPath, const RString &sNewPat { static bool Win9x = false; - /* Windows botches rename: it returns error if the file exists. In NT, + /* Windows botches rename: it returns error if the file exists. In NT, * we can use MoveFileEx( new, old, MOVEFILE_REPLACE_EXISTING ) (though I - * don't know if it has similar atomicity guarantees to rename). In + * don't know if it has similar atomicity guarantees to rename). In * 9x, we're screwed, so just delete any existing file (we aren't going * to be robust on 9x anyway). */ if( !Win9x ) @@ -92,7 +48,7 @@ static bool WinMoveFileInternal( const RString &sOldPath, const RString &sNewPat if( MoveFile( sOldPath, sNewPath ) ) return true; - + if( GetLastError() != ERROR_ALREADY_EXISTS ) return false; @@ -118,15 +74,15 @@ bool WinMoveFile( RString sOldPath, RString sNewPath ) /* mkdir -p. Doesn't fail if Path already exists and is a directory. */ bool CreateDirectories( RString Path ) { - /* XXX: handle "//foo/bar" paths in Windows */ + // XXX: handle "//foo/bar" paths in Windows vector parts; RString curpath; - /* If Path is absolute, add the initial slash ("ignore empty" will remove it). */ + // If Path is absolute, add the initial slash ("ignore empty" will remove it). if( Path.Left(1) == "/" ) curpath = "/"; - /* Ignore empty, so eg. "/foo/bar//baz" doesn't try to create "/foo/bar" twice. */ + // Ignore empty, so eg. "/foo/bar//baz" doesn't try to create "/foo/bar" twice. split( Path, "/", parts, true ); for(unsigned i = 0; i < parts.size(); ++i) @@ -174,7 +130,7 @@ bool CreateDirectories( RString Path ) WARN( ssprintf("Couldn't create %s: %s", curpath.c_str(), strerror(errno)) ); return false; } - + return true; } @@ -189,10 +145,10 @@ void DirectFilenameDB::SetRoot( RString root_ ) { root = root_; - /* "\abcd\" -> "/abcd/": */ + // "\abcd\" -> "/abcd/": root.Replace( "\\", "/" ); - /* "/abcd/" -> "/abcd": */ + // "/abcd/" -> "/abcd": if( root.Right(1) == "/" ) root.erase( root.size()-1, 1 ); } @@ -210,7 +166,7 @@ void DirectFilenameDB::CacheFile( const RString &sPath ) } while( !pFileSet->m_bFilled ) m_Mutex.Wait(); - + #if defined(WIN32) // There is almost surely a better way to do this WIN32_FIND_DATA fd; @@ -224,12 +180,12 @@ void DirectFilenameDB::CacheFile( const RString &sPath ) f.dir = !!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); f.size = fd.nFileSizeLow; f.hash = fd.ftLastWriteTime.dwLowDateTime; - + pFileSet->files.insert( f ); FindClose( hFind ); #else File f( Basename(sPath) ); - + struct stat st; if( DoStat(root+sPath, &st) == -1 ) { @@ -237,7 +193,7 @@ void DirectFilenameDB::CacheFile( const RString &sPath ) // If it's a broken symlink, ignore it. Otherwise, warn. // Huh? WARN( ssprintf("File '%s' is gone! (%s)", - sPath.c_str(), strerror(iError)) ); + sPath.c_str(), strerror(iError)) ); } else { @@ -255,17 +211,10 @@ void DirectFilenameDB::PopulateFileSet( FileSet &fs, const RString &path ) { RString sPath = path; -#if defined(XBOX) - /* Xbox doesn't handle path names which end with ".", which are used when using an - * alternative song directory */ - if( sPath.size() > 0 && sPath.Right(1) == "." ) - sPath.erase( sPath.size() - 1 ); -#endif - - /* Resolve path cases (path/Path -> PATH/path). */ + // Resolve path cases (path/Path -> PATH/path). ResolvePath( sPath ); - fs.age.GetDeltaTime(); /* reset */ + fs.age.GetDeltaTime(); // reset fs.files.clear(); #if defined(WIN32) diff --git a/src/RageFileDriverDirectHelpers.h b/src/RageFileDriverDirectHelpers.h index 0a3dae233d..91b2f0d9d4 100644 --- a/src/RageFileDriverDirectHelpers.h +++ b/src/RageFileDriverDirectHelpers.h @@ -5,15 +5,6 @@ #include -#if defined(_XBOX) -int DoMkdir( const RString &sPath, int perm ); -int DoOpen( const RString &sPath, int flags, int perm ); -int DoStat( const RString &sPath, struct stat *st ); -int DoRename( const RString &sOldPath, const RString &sNewPath ); -int DoRemove( const RString &sPath ); -int DoRmdir( const RString &sPath ); -HANDLE DoFindFirstFile( const RString &sPath, WIN32_FIND_DATA *fd ); -#else #define DoOpen open #define DoStat stat #define DoMkdir mkdir @@ -21,7 +12,6 @@ HANDLE DoFindFirstFile( const RString &sPath, WIN32_FIND_DATA *fd ); #define DoRename rename #define DoRemove remove #define DoRmdir rmdir -#endif RString DoPathReplace( const RString &sPath ); #if defined(WIN32) diff --git a/src/RageFileManager.cpp b/src/RageFileManager.cpp index 49740eccbe..6219b6288c 100644 --- a/src/RageFileManager.cpp +++ b/src/RageFileManager.cpp @@ -12,7 +12,7 @@ #include -#if defined(WIN32) && !defined(XBOX) +#if defined(WIN32) #include #elif defined(UNIX) || defined(MACOSX) #include @@ -174,11 +174,7 @@ static RageFileDriverMountpoints *g_Mountpoints = NULL; static RString GetDirOfExecutable( RString argv0 ) { -#ifdef _XBOX - // ???: what if it's not running from D:\? - return "D:\\"; -#else - /* argv[0] can be wrong in most OS's; try to avoid using it. */ + // argv[0] can be wrong in most OS's; try to avoid using it. RString sPath; #if defined(WIN32) @@ -241,7 +237,6 @@ static RString GetDirOfExecutable( RString argv0 ) #endif } return sPath; -#endif } static void ChangeToDirOfExecutable( const RString &argv0 ) diff --git a/src/RageLog.cpp b/src/RageLog.cpp index 8684fc6502..5c517f209e 100644 --- a/src/RageLog.cpp +++ b/src/RageLog.cpp @@ -175,7 +175,7 @@ void RageLog::SetShowLogOutput( bool show ) { m_bShowLogOutput = show; -#if defined(WIN32) && !defined(_XBOX) +#if defined(WIN32) if( m_bShowLogOutput ) { // create a new console window and attach standard handles diff --git a/src/RageMath.cpp b/src/RageMath.cpp index 6edff8df4c..dd209974cc 100644 --- a/src/RageMath.cpp +++ b/src/RageMath.cpp @@ -112,7 +112,7 @@ RageMatrix RageMatrix::GetTranspose() const void RageMatrixMultiply( RageMatrix* pOut, const RageMatrix* pA, const RageMatrix* pB ) { -//#if defined(_WINDOWS) || defined(_XBOX) +//#if defined(_WINDOWS) // // <30 cycles for theirs versus >100 for ours. // D3DXMatrixMultiply( (D3DMATRIX*)pOut, (D3DMATRIX*)pA, (D3DMATRIX*)pB ); //#else diff --git a/src/RageSoundReader_MP3.cpp b/src/RageSoundReader_MP3.cpp index 281da9d38a..0cb9e5940e 100644 --- a/src/RageSoundReader_MP3.cpp +++ b/src/RageSoundReader_MP3.cpp @@ -9,24 +9,16 @@ #include #include -#if defined(_WINDOWS) || defined(_XBOX) || defined(MACOSX) +#if defined(_WINDOWS) || defined(MACOSX) #include "mad-0.15.1b/mad.h" #ifdef _MSC_VER -#ifdef _XBOX -#ifdef DEBUG -#pragma comment(lib, "mad-0.15.1b/xboxmad/debug/xboxmad.lib") -#else -#pragma comment(lib, "mad-0.15.1b/xboxmad/Release/xboxmad.lib") -#endif // DEBUG -#else #pragma comment(lib, "mad-0.15.1b/msvc++/Release/libmad.lib") -#endif // _XBOX #endif //_MSC_VER #else #include #endif // _WINDOWS -/* ID3 code from libid3: */ +// ID3 code from libid3: enum tagtype { TAGTYPE_NONE = 0, TAGTYPE_ID3V1, diff --git a/src/RageSurface_Load_JPEG.cpp b/src/RageSurface_Load_JPEG.cpp index 353921e740..3db75aa0e4 100644 --- a/src/RageSurface_Load_JPEG.cpp +++ b/src/RageSurface_Load_JPEG.cpp @@ -7,24 +7,15 @@ #include -// Don't let jpeglib.h define the boolean type on Xbox. -#if defined(_XBOX) -# define HAVE_BOOLEAN -#endif - #if defined(WIN32) -/* work around namespace bugs in win32/libjpeg: */ +// work around namespace bugs in win32/libjpeg: #define XMD_H #undef FAR #include "libjpeg/jpeglib.h" #include "libjpeg/jerror.h" #if defined(_MSC_VER) -#if !defined(XBOX) #pragma comment(lib, "libjpeg/jpeg.lib") -#else -#pragma comment(lib, "libjpeg/xboxjpeg.lib") -#endif #endif #pragma warning(disable: 4611) /* interaction between '_setjmp' and C++ object destruction is non-portable */ diff --git a/src/RageSurface_Load_PNG.cpp b/src/RageSurface_Load_PNG.cpp index dd7014bf15..4572fc63ae 100644 --- a/src/RageSurface_Load_PNG.cpp +++ b/src/RageSurface_Load_PNG.cpp @@ -6,25 +6,16 @@ #include "RageSurface.h" -#if defined(_WINDOWS) || defined(_XBOX) +#if defined(_WINDOWS) # include "libpng/include/png.h" # if defined(_MSC_VER) -# if defined(_XBOX) -# pragma comment(lib, "libpng/lib/xboxlibpng.lib") -# else -# pragma comment(lib, "libpng/lib/libpng.lib") -# endif +# pragma comment(lib, "libpng/lib/libpng.lib") # pragma warning(disable: 4611) /* interaction between '_setjmp' and C++ object destruction is non-portable */ # endif // _MSC_VER #else # include #endif -#if defined(_XBOX) -# include // for alloca -# include "archutils/Xbox/VirtualMemory.h" -#endif - namespace { void RageFile_png_read( png_struct *png, png_byte *p, png_size_t size ) @@ -80,16 +71,6 @@ static RageSurface *RageSurface_Load_PNG( RageFile *f, const char *fn, char erro png_struct *png = png_create_read_struct( PNG_LIBPNG_VER_STRING, &error, PNG_Error, PNG_Warning ); -#if defined(XBOX) - while(png == NULL) - { - if(!vmem_Manager.DecommitLRU()) - break; - - png = png_create_read_struct( PNG_LIBPNG_VER_STRING, &error, PNG_Error, PNG_Warning ); - } -#endif - if( png == NULL ) { sprintf( errorbuf, "creating png_create_read_struct failed"); diff --git a/src/RageSurface_Save_JPEG.cpp b/src/RageSurface_Save_JPEG.cpp index 1ea4c34178..0348d620eb 100644 --- a/src/RageSurface_Save_JPEG.cpp +++ b/src/RageSurface_Save_JPEG.cpp @@ -6,7 +6,7 @@ #include "RageUtil.h" #include "RageFile.h" -#undef FAR /* fix for VC */ +#undef FAR // fix for VC /** @brief A helper to get the jpeg lib. */ namespace jpeg { @@ -16,16 +16,11 @@ namespace jpeg } } -/* Pull in JPEG library here. */ -#ifdef _XBOX -#pragma comment(lib, "libjpeg/xboxjpeg.lib") -#elif defined _MSC_VER +// Pull in JPEG library here. +#if defined _MSC_VER #pragma comment(lib, "libjpeg/jpeg.lib") #endif - - - #define OUTPUT_BUFFER_SIZE 4096 typedef struct { diff --git a/src/RageSurface_Save_PNG.cpp b/src/RageSurface_Save_PNG.cpp index f971760fbd..797bfec8eb 100644 --- a/src/RageSurface_Save_PNG.cpp +++ b/src/RageSurface_Save_PNG.cpp @@ -6,14 +6,10 @@ #include "RageLog.h" #include "RageUtil.h" -#if defined(WINDOWS) || defined(_XBOX) +#if defined(WINDOWS) #include "libpng/include/png.h" #if defined(_MSC_VER) -# if defined(_XBOX) -# pragma comment(lib, "libpng/lib/xboxlibpng.lib") -# else -# pragma comment(lib, "libpng/lib/libpng.lib") -# endif +# pragma comment(lib, "libpng/lib/libpng.lib") #pragma warning(disable: 4611) /* interaction between '_setjmp' and C++ object destruction is non-portable */ #endif #else diff --git a/src/RageUtil.cpp b/src/RageUtil.cpp index 15257851ff..a6428a7f6b 100644 --- a/src/RageUtil.cpp +++ b/src/RageUtil.cpp @@ -967,14 +967,10 @@ bool GetCommandlineArgument( const RString &option, RString *argument, int iInde RString GetCwd() { -#ifdef _XBOX - return SYS_BASE_PATH; -#else char buf[PATH_MAX]; bool ret = getcwd(buf, PATH_MAX) != NULL; ASSERT(ret); return buf; -#endif } /* diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 8a17a27059..213cc01028 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -94,35 +94,6 @@ static const char *EditStateNames[] = { XToString( EditState ); LuaXType( EditState ); -#if defined(XBOX) -void ScreenEdit::InitEditMappings() -{ - /* XXX: fill this in */ - m_EditMappingsDeviceInput.Clear(); - - switch( EDIT_MODE.GetValue() ) - { - case EditMode_Practice: - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_PREV_MEASURE][0] = DeviceInput(DEVICE_JOY1, JOY_HAT_UP); - m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_PREV_MEASURE][0] = GAME_BUTTON_UP; - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_NEXT_MEASURE][0] = DeviceInput(DEVICE_JOY1, JOY_HAT_DOWN); - m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_NEXT_MEASURE][0] = GAME_BUTTON_DOWN; - break; - default: - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_UP_LINE][0] = DeviceInput(DEVICE_JOY1, JOY_HAT_UP); - m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_UP_LINE][0] = GAME_BUTTON_UP; - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_LINE][0] = DeviceInput(DEVICE_JOY1, JOY_HAT_DOWN); - m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_DOWN_LINE][0] = GAME_BUTTON_DOWN; - break; - } - - // Map these to the triggers: L goes up, R goes down. - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_UP_PAGE][0] = DeviceInput(DEVICE_JOY1, JOY_BUTTON_7); - //m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_UP_PAGE][0] = GAME_BUTTON_UPLEFT; - m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_PAGE][0] = DeviceInput(DEVICE_JOY1, JOY_BUTTON_8); - //m_EditMappingsMenuButton.button[EDIT_BUTTON_SCROLL_DOWN_PAGE][0] = GAME_BUTTON_UPRIGHT; -} -#else void ScreenEdit::InitEditMappings() { m_EditMappingsDeviceInput.Clear(); @@ -268,7 +239,7 @@ void ScreenEdit::InitEditMappings() m_EditMappingsDeviceInput.button[EDIT_BUTTON_RIGHT_SIDE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT); m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_ROLL][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT); // m_EditMappingsDeviceInput.button[EDIT_BUTTON_LAY_TAP_ATTACK][0] = DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT); - + m_EditMappingsDeviceInput.button[EDIT_BUTTON_CYCLE_TAP_LEFT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cn); m_EditMappingsDeviceInput.button[EDIT_BUTTON_CYCLE_TAP_RIGHT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cm); @@ -291,7 +262,7 @@ void ScreenEdit::InitEditMappings() m_EditMappingsMenuButton.button[EDIT_BUTTON_OPEN_EDIT_MENU][1] = GAME_BUTTON_BACK; m_EditMappingsDeviceInput.button[EDIT_BUTTON_OPEN_AREA_MENU][0] = DeviceInput(DEVICE_KEYBOARD, KEY_ENTER); m_EditMappingsDeviceInput.button[EDIT_BUTTON_OPEN_INPUT_HELP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_F1); - + m_EditMappingsDeviceInput.button[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb); m_EditMappingsDeviceInput.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LALT); m_EditMappingsDeviceInput.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT); @@ -309,7 +280,7 @@ void ScreenEdit::InitEditMappings() m_EditMappingsDeviceInput.button[EDIT_BUTTON_ADJUST_FINE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT); m_EditMappingsDeviceInput.button[EDIT_BUTTON_ADJUST_FINE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_LALT); - + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SAVE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_Cs); #if defined(MACOSX) /* use cmd */ @@ -322,10 +293,10 @@ void ScreenEdit::InitEditMappings() #endif m_EditMappingsDeviceInput.button[EDIT_BUTTON_UNDO][1] = DeviceInput(DEVICE_KEYBOARD, KEY_Cu); - + // Switch players, if it makes sense to do so. m_EditMappingsDeviceInput.button[EDIT_BUTTON_SWITCH_PLAYERS][0] = DeviceInput(DEVICE_KEYBOARD, KEY_SLASH); - + m_PlayMappingsDeviceInput.button[EDIT_BUTTON_RETURN_TO_EDIT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_ESC); m_PlayMappingsMenuButton.button[EDIT_BUTTON_RETURN_TO_EDIT][1] = GAME_BUTTON_BACK; @@ -346,8 +317,6 @@ void ScreenEdit::InitEditMappings() m_RecordPausedMappingsDeviceInput.button[EDIT_BUTTON_UNDO][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cu); } -#endif - /* Given a DeviceInput that was just depressed, return an active edit function. */ EditButton ScreenEdit::DeviceToEdit( const DeviceInput &DeviceI ) const { diff --git a/src/ScreenMapControllers.cpp b/src/ScreenMapControllers.cpp index ed6b3dcacd..d2ed7b085e 100644 --- a/src/ScreenMapControllers.cpp +++ b/src/ScreenMapControllers.cpp @@ -240,28 +240,6 @@ void ScreenMapControllers::Input( const InputEventPlus &input ) int button = input.DeviceI.button; -#ifdef _XBOX - if( m_WaitingForPress.IsZero() && input.DeviceI.device == DEVICE_JOY1 ) - { - // map the xbox controller buttons to the keyboard equivalents - if( input.DeviceI.button == JOY_HAT_LEFT ) - button = KEY_LEFT; - else if( input.DeviceI.button == JOY_HAT_RIGHT ) - button = KEY_RIGHT; - else if( input.DeviceI.button == JOY_HAT_UP ) - button = KEY_UP; - else if( input.DeviceI.button == JOY_HAT_DOWN ) - button = KEY_DOWN; - else if( input.DeviceI.button == JOY_AUX_1 ) - button = KEY_ENTER; - else if( input.DeviceI.button == JOY_AUX_2 ) - button = KEY_ESC; - else if( input.DeviceI.button == JOY_BUTTON_1 || input.DeviceI.button == JOY_BUTTON_2 || - input.DeviceI.button == JOY_BUTTON_3 || input.DeviceI.button == JOY_BUTTON_4 ) - button = KEY_DEL; - } -#endif - /* TRICKY: Some adapters map the PlayStation digital d-pad to both axes and * buttons. We want buttons to be used for any mappings where possible * because presses of buttons aren't mutually exclusive and presses of axes @@ -293,11 +271,7 @@ void ScreenMapControllers::Input( const InputEventPlus &input ) m_DeviceIToMap = input.DeviceI; } } -#ifdef _XBOX - else if( input.DeviceI.device == DEVICE_JOY1 ) -#else else if( input.DeviceI.device == DEVICE_KEYBOARD ) -#endif { switch( button ) { @@ -310,10 +284,8 @@ void ScreenMapControllers::Input( const InputEventPlus &input ) * pressed up on the joypad. */ case KEY_DEL: -#ifndef _XBOX case KEY_SPACE: case KEY_BACK: // Clear the selected input mapping. -#endif if( m_iCurButton == (int) m_KeysToMap.size() ) break; // on exit diff --git a/src/ScreenServiceAction.h b/src/ScreenServiceAction.h index 0a19dc3e0c..35011f0106 100644 --- a/src/ScreenServiceAction.h +++ b/src/ScreenServiceAction.h @@ -3,11 +3,6 @@ #ifndef ScreenServiceAction_H #define ScreenServiceAction_H -//There's a FAILED macro somewhere in winerror.h, which gets included with Xbox. -#if defined(_XBOX) -#undef FAILED -#endif - #include "ScreenPrompt.h" class ScreenServiceAction : public ScreenPrompt diff --git a/src/ScreenTestFonts.h b/src/ScreenTestFonts.h index d966f85f36..16c9e2fd19 100644 --- a/src/ScreenTestFonts.h +++ b/src/ScreenTestFonts.h @@ -3,10 +3,6 @@ #ifndef SCREEN_TEST_FONTS_H #define SCREEN_TEST_FONTS_H -#if defined(_XBOX) -#undef TEXT -#endif - #include "Screen.h" #include "BitmapText.h" #include "Quad.h" diff --git a/src/SongCacheIndex.cpp b/src/SongCacheIndex.cpp index 482ed06ed6..fb0d588adc 100644 --- a/src/SongCacheIndex.cpp +++ b/src/SongCacheIndex.cpp @@ -50,12 +50,7 @@ RString SongCacheIndex::GetCacheFilePath( const RString &sGroup, const RString & for( size_t pos = s.find_first_of(invalid); pos != RString::npos; pos = s.find_first_of(invalid, pos) ) s[pos] = '_'; // CACHE_DIR ends with a /. -#if defined(XBOX) - // Use CRC32 to make fatx compatible filenames. - return ssprintf( "%s%s/%X", SpecialFiles::CACHE_DIR.c_str(), sGroup.c_str(), GetHashForString(s)); -#else return ssprintf( "%s%s/%s", SpecialFiles::CACHE_DIR.c_str(), sGroup.c_str(), s.c_str() ); -#endif } SongCacheIndex::SongCacheIndex() diff --git a/src/StepMania.cpp b/src/StepMania.cpp index c0449cc0ae..0f032907f8 100644 --- a/src/StepMania.cpp +++ b/src/StepMania.cpp @@ -68,27 +68,12 @@ #include "SpecialFiles.h" #include "Profile.h" -#if defined(XBOX) -#include "Archutils/Xbox/VirtualMemory.h" -#endif - -#if defined(WIN32) && !defined(XBOX) +#if defined(WIN32) #include #endif -// since the XBOX SDK only works with VS.Net 2003, this doesn't exist yet. -// see http://old.nabble.com/Linking-Error-with-MSVC%2B%2B-6.0-td21608559.html -// for more information. -aj -#if defined(XBOX) - extern "C" - { - int _get_output_format( void ){ return 0; } - } -#endif - static Preference g_bAllowMultipleInstances( "AllowMultipleInstances", false ); - void StepMania::GetPreferredVideoModeParams( VideoModeParams ¶msOut ) { /* We can't rely on there being full-screen video modes that give us square @@ -469,14 +454,6 @@ struct VideoCardDefaults } } const g_VideoCardDefaults[] = { - VideoCardDefaults( - "Xbox", - "d3d", - 600,400, - 32,32,32, - 2048, - true - ), VideoCardDefaults( "Voodoo *5", "d3d,opengl", // received 3 reports of opengl crashing. -Chris @@ -636,8 +613,6 @@ static RString GetVideoDriverName() { #if defined(_WINDOWS) return GetPrimaryVideoDriverName(); -#elif defined(_XBOX) - return "Xbox"; #else return "OpenGL"; #endif @@ -879,11 +854,8 @@ static void MountTreeOfZips( const RString &dir ) RString path = dirs.back(); dirs.pop_back(); -#if !defined(XBOX) - // Xbox doesn't detect directories properly, so we'll ignore this if( !IsADirectory(path) ) continue; -#endif vector zips; GetDirListing( path + "/*.zip", zips, false, true ); @@ -997,10 +969,6 @@ int main(int argc, char* argv[]) ApplyLogPreferences(); -#if defined(XBOX) - vmem_Manager.Init(); -#endif - WriteLogHeader(); // Set up alternative filesystem trees. diff --git a/src/StepManiaXbox-2003.vcproj b/src/StepManiaXbox-2003.vcproj deleted file mode 100644 index e3cdae7552..0000000000 --- a/src/StepManiaXbox-2003.vcproj +++ /dev/null @@ -1,2783 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Texture Font Generator/Utils.cpp b/src/Texture Font Generator/Utils.cpp index 125334c2e3..338badef2d 100644 --- a/src/Texture Font Generator/Utils.cpp +++ b/src/Texture Font Generator/Utils.cpp @@ -100,22 +100,10 @@ void GetBounds( const Surface *pSurf, RECT *out ) } - - - - - - - - #pragma include_alias( "zlib/zlib.h", "../zlib/zlib.h" ) #include "../libpng/include/png.h" #if defined(_MSC_VER) -# if defined(_XBOX) -# pragma comment(lib, "../libpng/lib/xboxlibpng.lib") -# else -# pragma comment(lib, "../libpng/lib/libpng.lib") -# endif +# pragma comment(lib, "../libpng/lib/libpng.lib") #pragma warning(disable: 4611) /* interaction between '_setjmp' and C++ object destruction is non-portable */ #endif diff --git a/src/arch/ArchHooks/ArchHooks_Xbox.cpp b/src/arch/ArchHooks/ArchHooks_Xbox.cpp deleted file mode 100644 index ff4c37400b..0000000000 --- a/src/arch/ArchHooks/ArchHooks_Xbox.cpp +++ /dev/null @@ -1,227 +0,0 @@ -#include "global.h" -#include "ArchHooks_Xbox.h" -#include "dsound.h" // for timeGetTime -#include "archutils/Xbox/custom_launch_params.h" // for XGetCustomLaunchData -#include "archutils/Xbox/VirtualMemory.h" - -#include // for XNetStartup -#include // for _set_new_handler and _set_new_mode - -typedef struct _UNICODE_STRING {unsigned short Length; unsigned short MaximumLength; PSTR Buffer;} UNICODE_STRING,*PUNICODE_STRING; -extern "C" XBOXAPI DWORD WINAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName,IN PUNICODE_STRING DeviceName); - -static bool g_bTimerInitialized; -static DWORD g_iStartTime; - -static void InitTimer() -{ - if( g_bTimerInitialized ) - return; - g_bTimerInitialized = true; - - g_iStartTime = timeGetTime(); -} - -int64_t ArchHooks::GetMicrosecondsSinceStart( bool bAccurate ) -{ - if( !g_bTimerInitialized ) - InitTimer(); - - int64_t ret = (timeGetTime() - g_iStartTime) * int64_t(1000); - if( bAccurate ) - { - ret = FixupTimeIfLooped( ret ); - ret = FixupTimeIfBackwards( ret ); - } - - return ret; -} - -void MountDriveLetter(char drive, char* szDevice, char* szDir) -{ - char szSourceDevice[256]; - char szDestinationDrive[16]; - sprintf(szDestinationDrive, "\\??\\%c:", drive); - sprintf(szSourceDevice,"\\Device\\%s",szDevice); - if (*szDir != 0x00 && *szDir != '\\') - { - strcat(szSourceDevice, "\\"); - strcat(szSourceDevice, szDir); - } - - UNICODE_STRING LinkName = - { - strlen(szDestinationDrive), - strlen(szDestinationDrive) + 1, - szDestinationDrive - }; - UNICODE_STRING DeviceName = - { - strlen(szSourceDevice), - strlen(szSourceDevice) + 1, - szSourceDevice - }; - - IoCreateSymbolicLink(&LinkName, &DeviceName); -} - -void MountDrives() -{ - MountDriveLetter('A', "Cdrom0", "\\"); - MountDriveLetter('E', "Harddisk0\\Partition1", "\\"); - MountDriveLetter('C', "Harddisk0\\Partition2", "\\"); - MountDriveLetter('X', "Harddisk0\\Partition3", "\\"); - MountDriveLetter('Y', "Harddisk0\\Partition4", "\\"); - MountDriveLetter('F', "Harddisk0\\Partition6", "\\"); - MountDriveLetter('G', "Harddisk0\\Partition7", "\\"); -} - -bool SetupNetwork() -{ -#if !defined(WITHOUT_NETWORKING) - XNetStartupParams xnsp; - memset(&xnsp, 0, sizeof(xnsp)); - xnsp.cfgSizeOfStruct = sizeof(XNetStartupParams); - xnsp.cfgFlags = XNET_STARTUP_BYPASS_SECURITY; - - INT err = XNetStartup(&xnsp); - - return err == 0; -#else - return true; -#endif -} - -// if Xbox has 128 meg RAM make sure its used -void EnableExtraRAM() -{ - LARGE_INTEGER regVal; - - // Verify that we have 128 megs available - MEMORYSTATUS memStatus; - GlobalMemoryStatus( &memStatus ); - if( memStatus.dwTotalPhys < (100 * 1024 * 1024) ) - return; - - // Grab the existing default type (0x02FF) - READMSRREG( 0x02FF, ®Val ); - - // Set the default to WriteBack (0x06) - regVal.LowPart = (regVal.LowPart & ~0xFF) | 0x06; - WRITEMSRREG( 0x02FF, regVal ); -} - -void InitDevices() -{ - XDEVICE_PREALLOC_TYPE xdpt[] = {{XDEVICE_TYPE_GAMEPAD, 4}, {XDEVICE_TYPE_MEMORY_UNIT, 2}}; - XInitDevices( sizeof(xdpt) / sizeof(XDEVICE_PREALLOC_TYPE), xdpt ); -} - -ArchHooks_Xbox::ArchHooks_Xbox() -{ - _set_new_handler(NoMemory); - _set_new_mode(1); - SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER) CheckPageFault); - - XGetCustomLaunchData(); - - // mount A to DVD, C, E, F, G, X, and Y to the harddisk - MountDrives(); - - SetupNetwork(); - - EnableExtraRAM(); - - InitDevices(); -} - -static RString XLangID( DWORD Lang ) -{ - switch(Lang) - { - case XC_LANGUAGE_JAPANESE:return "JA"; - case XC_LANGUAGE_GERMAN:return "DE"; - case XC_LANGUAGE_FRENCH:return "FR"; - case XC_LANGUAGE_SPANISH:return "ES"; - case XC_LANGUAGE_ITALIAN:return "IT"; - case XC_LANGUAGE_KOREAN:return "KO"; - case XC_LANGUAGE_TCHINESE:return "ZH"; - case XC_LANGUAGE_PORTUGUESE:return "PT"; - default: - case XC_LANGUAGE_ENGLISH: return "EN"; - } -} - -RString ArchHooks::GetPreferredLanguage() -{ - return XLangID( XGetLanguage() ); -} - -ArchHooks_Xbox::~ArchHooks_Xbox() -{ - // We only want to reboot the Xbox in a software manner. - XLaunchNewImage( NULL, NULL ); -} - -void ArchHooks_Xbox::DumpDebugInfo() -{ - -} - -float ArchHooks_Xbox::GetDisplayAspectRatio() -{ - // xxx: does this take into account system settings? -aj - float fDisplayAspectRatio = 4.0 / 3.0; - IDirect3DSurface8 *pBackBuffer = NULL; - if( D3D__pDevice->GetBackBuffer( -1, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer) == D3D_OK ) - { - D3DSURFACE_DESC Desc; - if( pBackBuffer->GetDesc(&Desc) == D3D_OK ) - { - fDisplayAspectRatio = (float)Desc.Width / (float)Desc.Height; - } - pBackBuffer->Release(); - } - return fDisplayAspectRatio; -} - -#include "RageFileManager.h" - -void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable ) -{ - FILEMAN->Mount( "dir", "D:\\", "/" ); -} - -void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) -{ - // Mount everything game-writable (not counting the editor) to the game title persistent data region ( /E/TDATA/33342530/ ) - FILEMAN->Mount( "dir", "T:/Cache", "/Cache" ); - FILEMAN->Mount( "dir", "T:/Logs", "/Logs" ); - FILEMAN->Mount( "dir", "T:/Save", "/Save" ); - FILEMAN->Mount( "dir", "T:/Screenshots", "/Screenshots" ); -} - -/* - * (c) 2003-2004 Glenn Maynard, Chris Danford - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/ArchHooks/ArchHooks_Xbox.h b/src/arch/ArchHooks/ArchHooks_Xbox.h deleted file mode 100644 index a1e349db8d..0000000000 --- a/src/arch/ArchHooks/ArchHooks_Xbox.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef ARCH_HOOKS_XBOX_H -#define ARCH_HOOKS_XBOX_H - -#include "ArchHooks.h" -class RageMutex; - -class ArchHooks_Xbox: public ArchHooks -{ -public: - ArchHooks_Xbox(); - ~ArchHooks_Xbox(); - RString GetArchName() { return "Xbox"; } - void DumpDebugInfo(); - float GetDisplayAspectRatio(); - - //void MountInitialFilesystems( const RString &sDirOfExecutable ); -}; - -// XXX: This stuff doesn't belong here. Hide it in ArchHooks. - -// Read a 64 bit MSR register -inline void READMSRREG( UINT32 reg, LARGE_INTEGER *val ) -{ -UINT32 lowPart, highPart; - __asm - { - mov ecx, reg - rdmsr - mov lowPart, eax - mov highPart, edx - }; - - val->LowPart = lowPart; - val->HighPart = highPart; -} - -// Write a 64 bit MSR register -inline void WRITEMSRREG( UINT32 reg, LARGE_INTEGER val ) -{ - __asm - { - mov ecx, reg - mov eax, val.LowPart - mov edx, val.HighPart - wrmsr - }; -} - -#ifdef ARCH_HOOKS -#error "More than one ArchHooks selected!" -#endif -#define ARCH_HOOKS ArchHooks_Xbox - -#endif -/* - * (c) 2002-2004 Glenn Maynard, Chris Danford - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/InputHandler/InputHandler_Xbox.cpp b/src/arch/InputHandler/InputHandler_Xbox.cpp deleted file mode 100644 index 1c2f870456..0000000000 --- a/src/arch/InputHandler/InputHandler_Xbox.cpp +++ /dev/null @@ -1,232 +0,0 @@ -#include "global.h" -#include "InputHandler_Xbox.h" -#include "RageUtil.h" -#include "RageLog.h" -#include "RageDisplay.h" - - -#include - -struct DEVICE_STATE { - XPP_DEVICE_TYPE *pxdt; - DWORD dwState; -}; - -byte buttonMasks[] = { XINPUT_GAMEPAD_DPAD_LEFT, - XINPUT_GAMEPAD_DPAD_RIGHT, - XINPUT_GAMEPAD_DPAD_UP, - XINPUT_GAMEPAD_DPAD_DOWN, - XINPUT_GAMEPAD_START, - XINPUT_GAMEPAD_BACK, - XINPUT_GAMEPAD_LEFT_THUMB, - XINPUT_GAMEPAD_RIGHT_THUMB}; - - -/** - * XBOX controller maps to the following RageInputDevice constants: - * DPAD -> JOY_HAT_... - * START -> JOY_AUX_1 - * BACK -> JOY_AUX_2 - * Left thumb button -> JOY_AUX_3 - * Right thumb button -> JOY_AUX_4 - * Following buttons are JOY_(index): - * A, B, X, Y, BLACK, WHITE, Left trigger, right trigger - */ - -InputHandler_Xbox::InputHandler_Xbox() -{ - // - // Init joysticks - // - ZeroMemory( joysticks, sizeof(joysticks) ); - - getHandles(); -} - -InputHandler_Xbox::~InputHandler_Xbox() -{ - for(unsigned i = 0; i < NUM_JOYSTICKS; i++) - { - if(joysticks[i] != 0) - XInputClose(joysticks[i]); - } -} - -void InputHandler_Xbox::Update() -{ - // check insertions and removals - DWORD dwInsert, dwRemove; - DEVICE_STATE devices = {XDEVICE_TYPE_GAMEPAD, 0}; - - bool changes = false; - // Check each device type to see if any changes have occurred. - if( XGetDeviceChanges( devices.pxdt, &dwInsert, &dwRemove ) ) - { - for(int j = 0; j < 4; j++) - { - if(1 << j & dwRemove) - { - changes = true; - LOG->Trace("A joystick was removed"); - } - if(1 << j & dwInsert) - { - changes = true; - LOG->Trace("A joystick was inserted"); - } - } - } - - if(changes) - { - getHandles(); - return; - } - - for(unsigned i = 0; i < NUM_JOYSTICKS; i++) - { - if(joysticks[i] == 0) - continue; - - InputDevice inputDevice = InputDevice(DEVICE_JOY1 + i); - XINPUT_STATE xis; - // Query latest state. - XInputGetState( joysticks[i], &xis ); - - // check buttons - for(int j = 0; j < ARRAYLEN(buttonMasks); j++) - { - DWORD nowPressed = xis.Gamepad.wButtons & buttonMasks[j]; - DWORD wasPressed = lastState[i].wButtons & buttonMasks[j]; - - if(nowPressed != wasPressed) - { - DeviceButton Button = DeviceButton(JOY_HAT_LEFT + j); - if(Button >= JOY_BUTTON_32) - { - LOG->Warn("Ignored joystick event (button too high)"); - continue; - } - DeviceInput di(inputDevice, Button, nowPressed != 0); - ButtonPressed(di); - continue; - } - } - - // check analog buttons - for(int j = 0; j < ARRAYLEN(xis.Gamepad.bAnalogButtons); j++) - { - bool nowPressed = xis.Gamepad.bAnalogButtons[j] > XINPUT_GAMEPAD_MAX_CROSSTALK; - bool wasPressed = lastState[i].bAnalogButtons[j] > XINPUT_GAMEPAD_MAX_CROSSTALK; - - if(nowPressed != wasPressed) - { - DeviceButton Button = DeviceButton(JOY_BUTTON_1 + j); - if(Button >= JOY_BUTTON_32) - { - LOG->Warn("Ignored joystick event (button too high)"); - continue; - } - DeviceInput di(inputDevice, Button, nowPressed); - ButtonPressed(di); - continue; - } - } - - // check thumbsticks - SHORT axes[] = { xis.Gamepad.sThumbLX, xis.Gamepad.sThumbLY, xis.Gamepad.sThumbRX, xis.Gamepad.sThumbRY}; - - for(int j = 0; j < ARRAYLEN(axes); j++) - { - if(axes[j] != 0) - { - // Reverse y axis (negative values are down, not up) - if(j == 1 || j == 3) - axes[j] = -axes[j]; - - DeviceButton neg = (DeviceButton)(JOY_LEFT + (2 * j)); - DeviceButton pos = (DeviceButton)(JOY_RIGHT + (2 * j)); - float l = SCALE( axes[j], 0.0f, 32768.0f, 0.0f, 1.0f ); - ButtonPressed(DeviceInput(inputDevice, neg,max(-l,0),RageZeroTimer)); - ButtonPressed(DeviceInput(inputDevice, pos,max(+l,0),RageZeroTimer)); - continue; - } - } - - memcpy(&lastState[i], &xis.Gamepad, sizeof(XINPUT_GAMEPAD)); - } - - InputHandler::UpdateTimer(); -} - -void InputHandler_Xbox::GetDevicesAndDescriptions( vector& vDevicesOut ) -{ - for( int i=0; iInfo( "Found %d connected joysticks for %d players", joysFound, playersAllocated ); -} - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/InputHandler/InputHandler_Xbox.h b/src/arch/InputHandler/InputHandler_Xbox.h deleted file mode 100644 index 14a8cc2292..0000000000 --- a/src/arch/InputHandler/InputHandler_Xbox.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef INPUT_HANDLER_XBOX_H -#define INPUT_HANDLER_XBOX_H - -#include "InputHandler.h" - -#include - -#define NUM_PORTS 4 - -class InputHandler_Xbox: public InputHandler -{ - HANDLE joysticks[NUM_JOYSTICKS]; - XINPUT_GAMEPAD lastState[NUM_JOYSTICKS]; - -public: - void Update(); - InputHandler_Xbox(); - ~InputHandler_Xbox(); - void GetDevicesAndDescriptions( vector& vDevicesOut ); - -private: - void getHandles(); -}; -#define USE_INPUT_HANDLER_XBOX -REGISTER_INPUT_HANDLER_CLASS( Xbox ); - -#endif - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/LoadingWindow/LoadingWindow.cpp b/src/arch/LoadingWindow/LoadingWindow.cpp index 8fa1d0ae01..2002e81f45 100644 --- a/src/arch/LoadingWindow/LoadingWindow.cpp +++ b/src/arch/LoadingWindow/LoadingWindow.cpp @@ -12,7 +12,7 @@ LoadingWindow *LoadingWindow::Create() return new LoadingWindow_Null; #endif // Don't load NULL by default. - const RString drivers = "xbox,win32,macosx,gtk"; + const RString drivers = "win32,macosx,gtk"; vector DriversToTry; split( drivers, ",", DriversToTry, true ); @@ -33,9 +33,6 @@ LoadingWindow *LoadingWindow::Create() #endif #ifdef USE_LOADING_WINDOW_WIN32 if( !DriversToTry[i].CompareNoCase("Win32") ) ret = new LoadingWindow_Win32; -#endif -#ifdef USE_LOADING_WINDOW_XBOX - if( !DriversToTry[i].CompareNoCase("Xbox") ) ret = new LoadingWindow_Xbox; #endif if( !DriversToTry[i].CompareNoCase("Null") ) ret = new LoadingWindow_Null; diff --git a/src/arch/LoadingWindow/LoadingWindow_Xbox.cpp b/src/arch/LoadingWindow/LoadingWindow_Xbox.cpp deleted file mode 100644 index 1e6b7edf73..0000000000 --- a/src/arch/LoadingWindow/LoadingWindow_Xbox.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include "global.h" -#include "LoadingWindow_Xbox.h" -#include "RageLog.h" - -#include "ProductInfo.h" - -LPDIRECT3D8 g_pD3D = NULL; // DirectX Object -LPDIRECT3DDEVICE8 g_pD3DDevice = NULL; // Screen Object -LPDIRECT3DTEXTURE8 splash = NULL; // splash texture -LPD3DXSPRITE g_sprite = NULL; // sprite object - -LoadingWindow_Xbox::LoadingWindow_Xbox() -{ - // Initialise Direct3D - g_pD3D = Direct3DCreate8(D3D_SDK_VERSION); - - // Create a structure to hold the settings for our device - D3DPRESENT_PARAMETERS d3dpp; - ZeroMemory(&d3dpp, sizeof(d3dpp)); - - // Fill the structure. - // Set fullscreen 640x480x32 mode - d3dpp.BackBufferWidth = 640; - d3dpp.BackBufferHeight = 480; - d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; - - // Create one backbuffer and a zbuffer - d3dpp.BackBufferCount = 1; - - // Set up how the backbuffer is "presented" to the frontbuffer each time - d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; - - //Create a Direct3D device. - g_pD3D->CreateDevice(0, D3DDEVTYPE_HAL, NULL, - D3DCREATE_HARDWARE_VERTEXPROCESSING, - &d3dpp, &g_pD3DDevice); - g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); - - // Create the sprite object (for painting the image) - D3DXCreateSprite(g_pD3DDevice, &g_sprite); - - // Load the default font - XFONT_OpenDefaultFont(&font); - font->SetTextColor(D3DCOLOR_XRGB(255,255,255)); - font->SetTextAlignment(XFONT_CENTER); - - // Load the splash.png - - HRESULT result = D3DXCreateTextureFromFileA(g_pD3DDevice, "D:\\Data\\splash.png", &splash); - useImage = (result == D3D_OK); - - if(!useImage) - LOG->Trace("Error loading splash.png - %i", result); - - SetText(RString("Loading songs")); -} - -LoadingWindow_Xbox::~LoadingWindow_Xbox() -{ - g_pD3DDevice->Release(); - g_pD3D->Release(); - font->Release(); -} - -void LoadingWindow_Xbox::Paint() -{ - LPDIRECT3DSURFACE8 g_pFrontBuffer; - - if(text == "") - return; - - g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); - - g_pD3DDevice->BeginScene(); - g_pD3DDevice->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO,&g_pFrontBuffer); - - if(useImage) - { - // Draw the splash image - // Only draw if the splash texture is successfully loaded - D3DXVECTOR2 pos; - pos.x = 70.0f; - pos.y = 30.0f; - - g_sprite->Begin(); - g_sprite->Draw(splash, NULL, NULL, NULL, NULL, &pos, 0xFFFFFFFF); - g_sprite->End(); - } - else - { - // Lo-fi version: print the product name and version at the top of the screen - font->SetTextColor(D3DCOLOR_XRGB(255, 0, 0)); - RString title = "Version "; - title = title + PRODUCT_VER; - WCHAR wc_title[200] = {0}; - swprintf(wc_title, L"%S", title.c_str()); - - font->TextOut(g_pFrontBuffer, L"StepMania", -1, 320, 30); - font->SetTextColor(D3DCOLOR_XRGB(255, 255, 0)); - font->TextOut(g_pFrontBuffer, wc_title, -1, 320, 40 + font->GetTextHeight()); - } - - // Draw the text on the screen - font->SetTextColor(D3DCOLOR_XRGB(255, 255, 255)); - basic_string ::size_type newLineIndex = text.find("\n", 0); - int y = 240; - - if(newLineIndex == RString.npos) - { - WCHAR wc_text[200] = {0}; - swprintf(wc_text, L"%S", text.c_str()); - - font->TextOut(g_pFrontBuffer, wc_text, wcslen(wc_text), 320, y); - } - else - { - int start = 0; - - while(start != RString.npos) - { - RString toPrint; - if(newLineIndex != RString.npos) - toPrint = text.substr(start, newLineIndex - start); - else - toPrint = text.substr(start); - - if(toPrint != "") - { - WCHAR wc_text[200] = {0}; - swprintf(wc_text, L"%S", toPrint.c_str()); - - font->TextOut(g_pFrontBuffer, wc_text, wcslen(wc_text), 320, y); - } - y = y + font->GetTextHeight() + 10; - - if(newLineIndex != RString.npos) - start = newLineIndex + 1; - else - start = RString.npos; - - newLineIndex = text.find("\n", start); - } - } - - g_pFrontBuffer->Release(); - - g_pD3DDevice->EndScene(); - g_pD3DDevice->Present(NULL, NULL, NULL, NULL); -} - -void LoadingWindow_Xbox::SetText(RString str) -{ - text = str ; -} - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ \ No newline at end of file diff --git a/src/arch/LoadingWindow/LoadingWindow_Xbox.h b/src/arch/LoadingWindow/LoadingWindow_Xbox.h deleted file mode 100644 index 956bef0157..0000000000 --- a/src/arch/LoadingWindow/LoadingWindow_Xbox.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef LOADING_WINDOW_XBOX_H -#define LOADING_WINDOW_XBOX_H - -#include "LoadingWindow.h" - -#include -#include -#define XFONT_TRUETYPE - -class LoadingWindow_Xbox: public LoadingWindow -{ -public: - LoadingWindow_Xbox(); - ~LoadingWindow_Xbox(); - - void Paint(); - void SetText(RString str); - -protected: - RString text ; - XFONT* font; - bool useImage; -}; -#define USE_LOADING_WINDOW_XBOX - -#endif - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.cpp b/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.cpp deleted file mode 100644 index 0523f27de3..0000000000 --- a/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include "global.h" -#include "MemoryCardDriverThreaded_Xbox.h" -#include "RageUtil.h" -#include "RageLog.h" - -MemoryCardDriverThreaded_Xbox::MemoryCardDriverThreaded_Xbox() -{ -} - -MemoryCardDriverThreaded_Xbox::~MemoryCardDriverThreaded_Xbox() -{ -} - -static bool TestReady( const RString &sDrive, RString &sVolumeLabelOut ) -{ - TCHAR szVolumeNameBuffer[MAX_PATH]; - DWORD dwVolumeSerialNumber; - DWORD dwMaximumComponentLength; - DWORD lpFileSystemFlags; - TCHAR szFileSystemNameBuffer[MAX_PATH]; - - if( !GetVolumeInformation( - sDrive, - szVolumeNameBuffer, - sizeof(szVolumeNameBuffer), - &dwVolumeSerialNumber, - &dwMaximumComponentLength, - &lpFileSystemFlags, - szFileSystemNameBuffer, - sizeof(szFileSystemNameBuffer)) ){ - LOG->Trace("GetVolumeInformation failed %u", GetLastError()); - return false; - } - - sVolumeLabelOut = szVolumeNameBuffer; - return true; -} - -bool MemoryCardDriverThreaded_Xbox::TestWrite( UsbStorageDevice* pDevice ) -{ - /* Try to write a file, to check if the device is writable and that we have write permission.*/ - for( int i = 0; i < 10; ++i ) - { - HANDLE hFile = CreateFile( - ssprintf( "%s\\tmp%i", pDevice->sOsMountDir.c_str(), RandomInt(100000)), - GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, - CREATE_NEW, - FILE_FLAG_DELETE_ON_CLOSE, - NULL ); - - if( hFile == INVALID_HANDLE_VALUE ) - { - DWORD iError = GetLastError(); - LOG->Warn( "Couldn't write to %s (%u)", pDevice->sOsMountDir.c_str(), iError); - - if( iError == ERROR_FILE_EXISTS ) - continue; - break; - } - - CloseHandle( hFile ); - return true; - } - - pDevice->SetError( "TestFailed" ); - return false; -} - -void MemoryCardDriverThreaded_Xbox::GetUSBStorageDevices( vector& vDevicesOut ) -{ - DWORD devices=XGetDevices(XDEVICE_TYPE_MEMORY_UNIT); - - for(int port=0;port<4;port++){ - //top slot - if(devices&(1<Trace( "%s", __FUNCTION__); - CHAR drive; - DWORD MountRetval=XMountMU(pDevice->iPort, pDevice->iLevel, &drive); - if(MountRetval==ERROR_SUCCESS){ - LOG->Trace("Mounted memory card from port %u slot %u to %c:", pDevice->iPort, pDevice->iLevel, drive); - pDevice->SetOsMountDir(ssprintf("%c:", drive)); - RString sVolumeLabel; - if( !TestReady(pDevice->sOsMountDir + "\\", sVolumeLabel) ) - { - LOG->Trace( "not TestReady" ); - } - pDevice->sVolumeLabel = sVolumeLabel; - return true; - }else{ - LOG->Trace("Could not mount memory card %u", MountRetval); - return false; - } -} - -void MemoryCardDriverThreaded_Xbox::Unmount( UsbStorageDevice* pDevice ) -{ - XUnmountMU(pDevice->iPort, pDevice->iLevel); -} - -/* - * (c) 2003-2004 Chris Danford - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.h b/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.h deleted file mode 100644 index af3c47d1dd..0000000000 --- a/src/arch/MemoryCard/MemoryCardDriverThreaded_Xbox.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef MemoryCardDriverThreaded_Xbox_H -#define MemoryCardDriverThreaded_Xbox_H - -#include "MemoryCardDriver.h" - -class MemoryCardDriverThreaded_Xbox: public MemoryCardDriver -{ -public: - MemoryCardDriverThreaded_Xbox(); - virtual ~MemoryCardDriverThreaded_Xbox(); - - virtual bool Mount( UsbStorageDevice* pDevice ); - virtual void Unmount( UsbStorageDevice* pDevice ); - -private: - void GetUSBStorageDevices( vector& vDevicesOut ); - bool USBStorageDevicesChanged(); - bool TestWrite( UsbStorageDevice* pDevice ); -}; - -#ifdef ARCH_MEMORY_CARD_DRIVER -#error "More than one MemoryCardDriver included!" -#endif -#define ARCH_MEMORY_CARD_DRIVER MemoryCardDriverThreaded_Xbox - -#endif - -/* - * (c) 2003-2004 Chris Danford - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp index fd27ba5d3a..ed70a0acbf 100644 --- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp +++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp @@ -29,34 +29,15 @@ namespace avcodec }; /* -#if defined(_MSC_VER) && !defined(XBOX) +#if defined(_MSC_VER) #pragma comment(lib, "ffmpeg/lib/avcodec.lib") #pragma comment(lib, "ffmpeg/lib/avformat.lib") #if defined(USE_MODERN_FFMPEG) #pragma comment(lib, "ffmpeg/lib/swscale.lib") #endif -#endif // _MSC_VER && !XBOX +#endif // _MSC_VER */ -#if defined(XBOX) - /* NOTES: ffmpeg static libraries arent included in SVN. You have to build - *them yourself or remove this file to produce the xbox build. - * - * build ffmpeg with mingw32 ( howto http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page ) - * ./configure --enable-memalign-hack --enable-static --disable-mmx --target-os=mingw32 --arch=x86 - * you can use various switches to enable/disable codecs/muxers/etc. - * - * libgcc.a and libmingwex.a comes from mingw installation - * msys\mingw\lib\gcc\mingw32\3.4.5\libgcc.a */ - #pragma comment(lib, "ffmpeg/lib/libavcodec.a") - #pragma comment(lib, "ffmpeg/lib/libavformat.a") - #pragma comment(lib, "ffmpeg/lib/libavutil.a") - #pragma comment(lib, "ffmpeg/lib/libswscale.a") - #pragma comment(lib, "ffmpeg/lib/libgcc.a") - #pragma comment(lib, "ffmpeg/lib/libmingwex.a") - #pragma comment(lib, "ffmpeg/lib/libcoldname.a") -#endif - #if !defined(MACOSX) static const int sws_flags = SWS_BICUBIC; // XXX: Reasonable default? #endif diff --git a/src/arch/MovieTexture/MovieTexture_Generic.cpp b/src/arch/MovieTexture/MovieTexture_Generic.cpp index ae14237fc9..e3f1ea0aee 100644 --- a/src/arch/MovieTexture/MovieTexture_Generic.cpp +++ b/src/arch/MovieTexture/MovieTexture_Generic.cpp @@ -9,7 +9,7 @@ #include "RageUtil.h" #include "Sprite.h" -#if defined(WIN32) && !defined(XBOX) +#if defined(WIN32) #include "archutils/Win32/ErrorStrings.h" #include #endif diff --git a/src/arch/Threads/Threads_Win32.cpp b/src/arch/Threads/Threads_Win32.cpp index 027c11f573..3fd4a72795 100644 --- a/src/arch/Threads/Threads_Win32.cpp +++ b/src/arch/Threads/Threads_Win32.cpp @@ -31,11 +31,9 @@ HANDLE Win32ThreadIdToHandle( uint64_t iID ) void ThreadImpl_Win32::Halt( bool Kill ) { -#ifndef _XBOX if( Kill ) TerminateThread( ThreadHandle, 0 ); else -#endif SuspendThread( ThreadHandle ); } diff --git a/src/arch/arch.cpp b/src/arch/arch.cpp index cafa822ef6..5cbdcdcd02 100644 --- a/src/arch/arch.cpp +++ b/src/arch/arch.cpp @@ -52,9 +52,6 @@ void MakeInputHandlers( const RString &drivers, vector &Add ) #ifdef USE_INPUT_HANDLER_X11 if( !s->CompareNoCase("X11") ) ret = new InputHandler_X11; #endif -#ifdef USE_INPUT_HANDLER_XBOX - if( !s->CompareNoCase("Xbox") ) ret = new InputHandler_Xbox; -#endif #ifdef USE_INPUT_HANDLER_MACOSX_HID if( !s->CompareNoCase("MacOSX") ) ret = new InputHandler_MacOSX_HID; #endif @@ -104,7 +101,7 @@ LoadingWindow *MakeLoadingWindow() return new LoadingWindow_Null; #endif // Don't load NULL by default. - const RString drivers = "xbox,win32,cocoa,gtk"; + const RString drivers = "win32,cocoa,gtk"; vector DriversToTry; split( drivers, ",", DriversToTry, true ); @@ -129,11 +126,7 @@ LoadingWindow *MakeLoadingWindow() #ifdef USE_LOADING_WINDOW_WIN32 if( !DriversToTry[i].CompareNoCase("Win32") ) ret = new LoadingWindow_Win32; #endif -#ifdef USE_LOADING_WINDOW_XBOX - if( !DriversToTry[i].CompareNoCase("Xbox") ) ret = new LoadingWindow_Xbox; -#endif - if( ret == NULL ) continue; @@ -144,10 +137,10 @@ LoadingWindow *MakeLoadingWindow() SAFE_DELETE( ret ); } } - + if(ret) LOG->Info( "Loading window: %s", Driver.c_str() ); - + return ret; } @@ -191,7 +184,7 @@ RageMovieTexture *MakeRageMovieTexture( RageTextureID ID ) vector DriversToTry; split( sDrivers, ",", DriversToTry, true ); - + if( DriversToTry.empty() ) RageException::Throw( MOVIE_DRIVERS_EMPTY.GetValue() ); @@ -231,7 +224,7 @@ RageMovieTexture *MakeRageMovieTexture( RageTextureID ID ) RageException::Throw( COULDNT_CREATE_MOVIE_DRIVER.GetValue() ); LOG->Trace( "Created movie texture \"%s\" with driver \"%s\"", - ID.filename.c_str(), Driver.c_str() ); + ID.filename.c_str(), Driver.c_str() ); return ret; } @@ -291,10 +284,10 @@ RageSoundDriver *MakeRageSoundDriver( const RString &drivers ) SAFE_DELETE( ret ); } } - + if( ret ) LOG->Info( "Sound driver: %s", Driver.c_str() ); - + return ret; } diff --git a/src/arch/arch.h b/src/arch/arch.h index 29e3a29f60..eaa457ca5a 100644 --- a/src/arch/arch.h +++ b/src/arch/arch.h @@ -7,8 +7,6 @@ #if defined(_WINDOWS) #define SUPPORT_OPENGL #define SUPPORT_D3D -#elif defined(_XBOX) -#define SUPPORT_D3D #else #define SUPPORT_OPENGL #endif diff --git a/src/arch/arch_default.h b/src/arch/arch_default.h index 5752dacadc..4dcbe1a5f2 100644 --- a/src/arch/arch_default.h +++ b/src/arch/arch_default.h @@ -22,16 +22,6 @@ #define DEFAULT_SOUND_DRIVER_LIST "AudioUnit,Null" -#elif defined(_XBOX) -#include "ArchHooks/ArchHooks_Xbox.h" -#include "LoadingWindow/LoadingWindow_Xbox.h" -#include "LowLevelWindow/LowLevelWindow_Win32.h" -#include "MemoryCard/MemoryCardDriverThreaded_Xbox.h" -#define DEFAULT_INPUT_DRIVER_LIST "Xbox" -#define DEFAULT_MOVIE_DRIVER_LIST "Theora,FFMpeg,DShow,Null" -#define DEFAULT_SOUND_DRIVER_LIST "DirectSound,DirectSound-sw,Null" - - #elif defined(UNIX) #include "ArchHooks/ArchHooks_Unix.h" #include "LowLevelWindow/LowLevelWindow_X11.h" diff --git a/src/archutils/Win32/AppInstance.h b/src/archutils/Win32/AppInstance.h index 59386febe5..3a0358094e 100644 --- a/src/archutils/Win32/AppInstance.h +++ b/src/archutils/Win32/AppInstance.h @@ -1,9 +1,7 @@ #ifndef APP_INSTANCE_H #define APP_INSTANCE_H -#if !defined(_XBOX) -# include "windows.h" -#endif +#include "windows.h" /** @brief get an HINSTANCE for starting dialog boxes. */ class AppInstance diff --git a/src/archutils/Win32/DirectXHelpers.cpp b/src/archutils/Win32/DirectXHelpers.cpp index 430bb32666..3b28626926 100644 --- a/src/archutils/Win32/DirectXHelpers.cpp +++ b/src/archutils/Win32/DirectXHelpers.cpp @@ -2,14 +2,10 @@ #include "DirectXHelpers.h" #include "RageUtil.h" -#ifdef _XBOX -# include -#else -# include -# include -# if defined(_MSC_VER) -# pragma comment(lib, "dxerr8.lib") -# endif +#include +#include +#if defined(_MSC_VER) +# pragma comment(lib, "dxerr8.lib") #endif RString hr_ssprintf( int hr, const char *fmt, ... ) @@ -19,13 +15,7 @@ RString hr_ssprintf( int hr, const char *fmt, ... ) RString s = vssprintf( fmt, va ); va_end(va); -#ifdef _XBOX - char szError[1024] = ""; - D3DXGetErrorString( hr, szError, sizeof(szError) ); -#else const char *szError = DXGetErrorString8( hr ); -#endif - return s + ssprintf( " (%s)", szError ); } diff --git a/src/archutils/Win32/ErrorStrings.cpp b/src/archutils/Win32/ErrorStrings.cpp index de53870c66..7f5b40b3c8 100644 --- a/src/archutils/Win32/ErrorStrings.cpp +++ b/src/archutils/Win32/ErrorStrings.cpp @@ -2,17 +2,13 @@ #include "ErrorStrings.h" #include "RageUtil.h" -#if !defined(XBOX) #include -#endif RString werr_ssprintf( int err, const char *fmt, ... ) { char buf[1024] = ""; -#ifndef _XBOX FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, err, 0, buf, sizeof(buf), NULL); -#endif // Why is FormatMessage returning text ending with \r\n? (who? -aj) // Perhaps it's because you're on Windows, where newlines are \r\n. -aj diff --git a/src/archutils/Win32/arch_setup.h b/src/archutils/Win32/arch_setup.h index 9ad85a8a37..faa6ee057d 100644 --- a/src/archutils/Win32/arch_setup.h +++ b/src/archutils/Win32/arch_setup.h @@ -1,14 +1,10 @@ #ifndef ARCH_SETUP_WINDOWS_H #define ARCH_SETUP_WINDOWS_H -#if !defined(XBOX) #define HAVE_FFMPEG #define HAVE_THEORA -#endif -#if !defined(XBOX) #define SUPPORT_OPENGL -#endif #define SUPPORT_D3D #if defined(__MINGW32__) @@ -143,25 +139,13 @@ inline long int lrintf( float f ) /* We implement the crash handler interface (though that interface isn't * completely uniform across platforms yet). */ -#if !defined(_XBOX) && !defined(SMPACKAGE) +#if !defined(SMPACKAGE) #define CRASH_HANDLER #endif #define ENDIAN_LITTLE -#if defined(_XBOX) -#if defined(_DEBUG) -#define OGG_LIB_DIR "vorbis/xbox/debug/" -#else -#define OGG_LIB_DIR "vorbis/xbox/release/" -#endif -#else #define OGG_LIB_DIR "vorbis/win32/" -#endif - -#if defined(XBOX) -#include "ArchUtils/Xbox/arch_setup.h" -#endif #if defined(__GNUC__) // It might be MinGW or Cygwin(?) #include "archutils/Common/gcc_byte_swaps.h" diff --git a/src/archutils/Xbox/GraphicsWindow.cpp b/src/archutils/Xbox/GraphicsWindow.cpp deleted file mode 100644 index 42ad602abd..0000000000 --- a/src/archutils/Xbox/GraphicsWindow.cpp +++ /dev/null @@ -1,151 +0,0 @@ -#include "global.h" -#include "archutils/Xbox/GraphicsWindow.h" -#include "ProductInfo.h" -#include "RageLog.h" -#include "RageUtil.h" -#include "RageDisplay.h" - -static const RString g_sClassName = RString(PRODUCT_ID) + " LowLevelWindow_Win32"; - -static VideoModeParams g_CurrentParams; -static bool g_bResolutionChanged = false; -static bool g_bHasFocus = true; -static bool g_bLastHasFocus = true; -static bool m_bWideWindowClass; -bool isPALSystem(); -void setScreenResolutionValues(); - -void GraphicsWindow::SetVideoModeParams( const VideoModeParams ¶ms ) -{ - g_CurrentParams = params; -} - -const VideoModeParams &GraphicsWindow::GetParams() -{ - return g_CurrentParams; -} - -void GraphicsWindow::Update() -{ - if( g_bResolutionChanged ) - { - /* Let DISPLAY know that our resolution has changed. */ - DISPLAY->ResolutionChanged(); - g_bResolutionChanged = false; - } -} - -void GraphicsWindow::Initialize( bool bD3D ) -{ - /* We do the parameters initialisation here. No need to use the INI, - because if we changed resolutions, it wouldn't keep up. */ - - g_CurrentParams.bpp = 32; - g_CurrentParams.windowed=false; - - isPALSystem(); - setScreenResolutionValues(); -} - -bool isPALSystem() -{ - if(XGetVideoStandard() == XC_VIDEO_STANDARD_PAL_I) - { - g_CurrentParams.interlaced=true; - - /* Get supported video flags. */ - DWORD VideoFlags = XGetVideoFlags(); - - /* Set pal60 if available. */ - if( VideoFlags & XC_VIDEO_FLAGS_PAL_60Hz ) - g_CurrentParams.rate = 60; - else - g_CurrentParams.rate = 50; - - g_CurrentParams.PAL = true; - return true; - } - g_CurrentParams.rate = 60; - g_CurrentParams.PAL = false; - return false; -} -void setScreenResolutionValues() -{ - DWORD CurrentVideoFlags = XGetVideoFlags(); - int heightStandards; - - // Preventive definition. Changed only if needed. - g_CurrentParams.interlaced=false; - - switch(isPALSystem()){ - case true: - heightStandards = 576; - break; - case false: - heightStandards = 480; - g_CurrentParams.interlaced=false; - break; - } - - switch (CurrentVideoFlags){ - - case XC_VIDEO_FLAGS_HDTV_480p: - g_CurrentParams.width=720; - g_CurrentParams.height=480; - break; - - case XC_VIDEO_FLAGS_HDTV_720p: - g_CurrentParams.width=1280; - g_CurrentParams.height=720; - break; - - case XC_VIDEO_FLAGS_HDTV_1080i: - g_CurrentParams.width=1920; - g_CurrentParams.height=1080; - g_CurrentParams.interlaced=true; - break; - - case XC_VIDEO_FLAGS_WIDESCREEN: - g_CurrentParams.width=720; - g_CurrentParams.height=heightStandards; - break; - - case XC_VIDEO_FLAGS_LETTERBOX: - default: - g_CurrentParams.width=640; - g_CurrentParams.height=heightStandards; - break; - } -} - -void GraphicsWindow::Shutdown() { } -RString GraphicsWindow::SetScreenMode( const VideoModeParams &p ) { return ""; } -void GraphicsWindow::CreateGraphicsWindow( const VideoModeParams &p ) { } -void GraphicsWindow::RecreateGraphicsWindow( const VideoModeParams &p ) { } -void GraphicsWindow::DestroyGraphicsWindow() { } -void GraphicsWindow::ConfigureGraphicsWindow( const VideoModeParams &p ) { } - -/* - * (c) 2004 Glenn Maynard, Renaud Lepage - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/archutils/Xbox/GraphicsWindow.h b/src/archutils/Xbox/GraphicsWindow.h deleted file mode 100644 index fa1ada8ba0..0000000000 --- a/src/archutils/Xbox/GraphicsWindow.h +++ /dev/null @@ -1,47 +0,0 @@ -#if !defined(GRAPHICS_WINDOW_H) -#define GRAPHICS_WINDOW_H - -#pragma once - -class VideoModeParams; - -namespace GraphicsWindow -{ - void Initialize( bool bD3D ); - void Shutdown(); - void SetVideoModeParams( const VideoModeParams &p ); - RString SetScreenMode( const VideoModeParams &p ); - void CreateGraphicsWindow( const VideoModeParams &p ); - void RecreateGraphicsWindow( const VideoModeParams &p ); - void DestroyGraphicsWindow(); - void ConfigureGraphicsWindow( const VideoModeParams &p ); - const VideoModeParams &GetParams(); - void Update(); -}; - -#endif - -/* - * (c) 2004 Glenn Maynard - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/archutils/Xbox/VirtualMemory.cpp b/src/archutils/Xbox/VirtualMemory.cpp deleted file mode 100644 index f302989e91..0000000000 --- a/src/archutils/Xbox/VirtualMemory.cpp +++ /dev/null @@ -1,644 +0,0 @@ -/* This handles manual paging. It's primarily intended for the Xbox, but works - * in Windows as well; it can be enabled for debugging. */ - -#include "global.h" -#include "VirtualMemory.h" -#include "RageLog.h" -#include "Preference.h" -#include - -#if defined(WINDOWS) -#define PAGE_FILE_PATH "StepMania pagefile.dat" -#else -#define PAGE_FILE_PATH "Z:\\xxpagefile.sys" -#endif - -VirtualMemoryManager vmem_Manager; - -static Preference g_bEnableVirtualMemory( "EnableVirtualMemory", true ); -// page file size in megabytes -static Preference g_iPageFileSize( "PageFileSize", 384 ); -// page size in kilobytes -static Preference g_iPageSize( "PageSize", 16 ); -// threshold in kilobytes where virtual memory will be used -static Preference g_iPageThreshold( "PageThreshold", 8 ); -// (under debug) log the virtual memory allocation, etc. -static Preference g_bLogVirtualMemory( "LogVirtualMemory", false ); - -struct vm_page -{ - DWORD startAddress; // start address for this page - unsigned long headPage; // 0 if not allocated. Otherwise, the index of the first page - // of this segment. - bool committed; // true if this page is committed to RAM (is otherwise in the page file) - bool locked; // true if this page should not be decommitted - int pageFaults; // number of times this page has been accessed when it wasn't committed - unsigned long sizeInPages; // size of the data segment in pages. - size_t sizeInBytes; // size of the data segment in bytes. -}; - -VirtualMemoryManager::VirtualMemoryManager(): - vmemMutex("VirtualMemory") -{ - pages = 0; - pageLRU = -1; - inited = false; -} - -VirtualMemoryManager::~VirtualMemoryManager() -{ - Destroy(); -} - -bool VirtualMemoryManager::Init() -{ - if( !g_bEnableVirtualMemory ) - return true; - unsigned long totalPageSize = 1024 * 1024 * g_iPageFileSize; - unsigned long sizePerPage = 1024 * g_iPageSize; - unsigned long thold = 1024 * g_iPageThreshold; - - threshold = thold; - - totalPages = totalPageSize / sizePerPage; - pageSize = sizePerPage; - - if(totalPageSize % sizePerPage != 0) - totalPageSize = sizePerPage * totalPages; - - // initialise the pages array - // bypass the overridden new by using HeapAlloc - pages = (vm_page*)HeapAlloc(GetProcessHeap(), 0, totalPages * sizeof(vm_page)); - - if(pages == NULL) - return false; - - // create the page file on Z drive - vmemFile = CreateFile( PAGE_FILE_PATH, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); - - if(vmemFile == INVALID_HANDLE_VALUE) - return false; - - // set the file size - // find the current file size - unsigned long fileSize = SetFilePointer(vmemFile, 0, 0, FILE_END); - if(fileSize == INVALID_SET_FILE_POINTER) - return false; - - if(fileSize < totalPageSize) - { - fileSize = SetFilePointer(vmemFile, totalPageSize, 0, FILE_BEGIN); - if(fileSize == INVALID_SET_FILE_POINTER) - return false; - } - - // Reserve the virtual memory and get the base address - baseAddress = (DWORD)VirtualAlloc(NULL, totalPageSize, MEM_RESERVE, PAGE_NOACCESS); - - if(baseAddress == NULL) - return false; - - // initialise the page array - for(unsigned long i = 0; i < totalPages; i++) - { - pages[i].startAddress = baseAddress + (i * pageSize); - pages[i].headPage = -1; - pages[i].committed = false; - pages[i].sizeInPages = 0; - pages[i].sizeInBytes = 0; - pages[i].pageFaults = 0; - pages[i].locked = false; - } - - SetLogging( g_bLogVirtualMemory ); - - inited = true; - return true; -} - -void VirtualMemoryManager::Destroy() -{ - if(pages != 0) - { - VirtualFree((LPVOID)baseAddress, 0, MEM_RELEASE); - HeapFree(GetProcessHeap(), 0, pages); - CloseHandle(vmemFile); - } -} - -void* VirtualMemoryManager::Allocate(size_t size) -{ - if(!inited) - return NULL; - - LockMut(vmemMutex); - - unsigned long startPage = -1; - unsigned long freeSegments = 0; - unsigned long sizeInPages = (size / pageSize) + 1; - - if(size % pageSize == 0) - sizeInPages--; - - // find a contiguous group of pages that will fit the data - for(unsigned long i = 0; i < totalPages; i++) - { - if(pages[i].sizeInPages != 0) - { - startPage = -1; - freeSegments = 0; - i += pages[i].sizeInPages - 1; // go to next page segment - } - else - { - if(startPage == -1) - { - startPage = i; - freeSegments = 1; - } - else - freeSegments++; - - if(sizeInPages == freeSegments) - { - if(LOG && logging) - LOG->Trace("Allocating pages %u to %u", startPage, startPage + freeSegments - 1); - - // commit this to memory - DWORD ret = (DWORD)VirtualAlloc((LPVOID)pages[startPage].startAddress, size, MEM_COMMIT, PAGE_READWRITE); - while(ret == NULL) - { - bool swappedOut = DecommitLRU(); - - if(!swappedOut) - { - if(LOG) - LOG->Trace("VMem error: out of memory with no pages to swap out left"); - return NULL; - } - - ret = (DWORD)VirtualAlloc((LPVOID)pages[startPage].startAddress, size, MEM_COMMIT, PAGE_READWRITE); - } - - pageLRU = (startPage + sizeInPages) % totalPages; - for(unsigned long j = startPage; j < startPage + freeSegments; j++) - { - pages[j].headPage = startPage; - pages[j].pageFaults = 0; - pages[j].sizeInPages = freeSegments; - pages[j].sizeInBytes = size; - pages[j].committed = true; - pages[i].locked = false; - } - - return (void*) ret; - } - } - } - - if(LOG) - LOG->Trace("VMem error: Couldn't find contiguous group of pages to allocate"); - - return NULL; -} - -bool VirtualMemoryManager::Free(void *ptr) -{ - if(!inited) - return false; - - LockMut(vmemMutex); - - // check that the address is within the virtual address bounds - if((DWORD)ptr < baseAddress || (DWORD)ptr >= baseAddress + (totalPages * pageSize)) - { - return false; - } - - // find the page(s) to free - DWORD offset = (DWORD)ptr - baseAddress; - unsigned long pageIndex = offset / pageSize; - - if(pages[pageIndex].headPage == -1) - { - return false; - } - - pageIndex = pages[pageIndex].headPage; - ptr = (void *)pages[pageIndex].startAddress; - - unsigned long endPage = pageIndex + pages[pageIndex].sizeInPages; - unsigned long size = pages[pageIndex].sizeInBytes; - - if(size == 0) - { - return false; // trying to free unallocated memory - } - - if(LOG && logging) - LOG->Trace("Freeing pages %u to %u", pageIndex, endPage - 1); - - if(pages[pageIndex].committed) - VirtualFree(ptr, size, MEM_DECOMMIT); - - for(unsigned long i = pageIndex; i < endPage; i++) - { - pages[i].headPage = -1; - pages[i].committed = false; - pages[i].pageFaults = 0; - pages[i].sizeInBytes = 0; - pages[i].sizeInPages = 0; - pages[i].locked = false; - } - - return true; -} - -bool VirtualMemoryManager::PageFault(void *ptr) -{ - if(!inited) - return false; - - LockMut(vmemMutex); - - // check that the address is within the virtual address bounds - if((DWORD)ptr < baseAddress || (DWORD)ptr >= baseAddress + (totalPages * pageSize)) - { - if(LOG) - { - LOG->Trace("Vmem error: Page fault outside virtual memory bounds"); - LOG->Trace("Address: %u, bounds: %u to %u", (DWORD)ptr, baseAddress, baseAddress + (totalPages * pageSize)); - } - return false; - } - - // find the page segment that the fault occurred - unsigned long offset = (DWORD)ptr - baseAddress; - unsigned long pageIndex = offset / pageSize; - - - unsigned long startPage = pages[pageIndex].headPage; - if(startPage == -1) - { - if(LOG) - LOG->Trace("VMem error: Trying to access memory that wasn't allocated"); - // trying to access memory that wasn't allocated - return false; - } - - if(pages[startPage].committed) - { - if(LOG && logging) - LOG->Trace("Pages appear to be committed already. Doing nothing..."); - return true; - } - - pageLRU = (startPage + pages[startPage].sizeInPages) % totalPages; - - if(LOG && logging) - LOG->Trace("Reallocating pages %u to %u", startPage, startPage + pages[startPage].sizeInPages - 1); - - DWORD ret = (DWORD)VirtualAlloc((LPVOID)pages[startPage].startAddress, pages[startPage].sizeInBytes, MEM_COMMIT, PAGE_READWRITE); - - while(ret == NULL) - { - bool swappedOut = DecommitLRU(); - if(!swappedOut) - { - if(LOG) - LOG->Trace("VMem error: no pages left to swap out while reallocating"); - - return false; - } - - ret = (DWORD)VirtualAlloc((LPVOID)pages[startPage].startAddress, pages[startPage].sizeInBytes, MEM_COMMIT, PAGE_READWRITE); - } - - for(unsigned long i = startPage; i < startPage + pages[startPage].sizeInPages; i++) - { - pages[i].committed = true; - pages[i].pageFaults++; - } - - DWORD numRead; - - SetFilePointer(vmemFile, pages[startPage].startAddress - baseAddress, 0, FILE_BEGIN); - ReadFile(vmemFile, (void *)pages[startPage].startAddress, pages[startPage].sizeInBytes, &numRead, NULL); - - return true; -} - -bool VirtualMemoryManager::DecommitLRU() -{ - if(!inited) - return false; - - LockMut(vmemMutex); - - // choose random LRU - pageLRU = rand() % totalPages; - - for(unsigned long i = 0; i < totalPages; i++) - { - unsigned long index = (pageLRU + i) % totalPages; - - if(index == 0) - index++; - - if(pages[index].headPage == index && pages[index].committed && !pages[index].locked) // this is a head page - { - DWORD addr = pages[index].startAddress; - unsigned long size = pages[index].sizeInPages; - - // decommit this page - // write to the page file - if(SetFilePointer(vmemFile, addr - baseAddress, 0, FILE_BEGIN) == INVALID_SET_FILE_POINTER) - { - if(LOG) - LOG->Trace("Vmem error: could not write to page file"); - return false; - } - - DWORD written; - - WriteFile(vmemFile, (LPCVOID)addr, pages[index].sizeInBytes, &written, NULL); - - // reset the page data - if(LOG && logging) - LOG->Trace("Swapping out pages %i to %i", index, index + size - 1); - - for(unsigned long j = index; j < index + size; j++) - { - pages[j].committed = false; - } - - if(VirtualFree((LPVOID)addr, pages[index].sizeInBytes, MEM_DECOMMIT) == 0) - { - return false; - } - - pageLRU = (pageLRU + pages[index].sizeInPages) % totalPages; - - return true; - } - } - - return false; -} - -bool VirtualMemoryManager::EnsureFreeMemory(size_t size) -{ - if(!inited) - return false; - - LockMut(vmemMutex); - - MEMORYSTATUS ms; - GlobalMemoryStatus(&ms); - - while(ms.dwAvailPhys < size) - { - if(LOG && logging) - LOG->Trace("Freeing memory: need %i, have %i", size, ms.dwAvailPhys); - - if(!DecommitLRU()) - { - if(LOG) - LOG->Trace("VMem error: No pages left to free while reserving memory"); - return false; - } - } - - return true; -} - -void VirtualMemoryManager::Lock(void *ptr) -{ - if(!inited) - return; - - LockMut(vmemMutex); - - // check that the address is within the virtual address bounds - if((DWORD)ptr < baseAddress || (DWORD)ptr >= baseAddress + (totalPages * pageSize)) - { - return; - } - - // find the page(s) to free - DWORD offset = (DWORD)ptr - baseAddress; - unsigned long pageIndex = offset / pageSize; - - if(pages[pageIndex].headPage == -1) - { - return; - } - - pageIndex = pages[pageIndex].headPage; - - unsigned long endPage = pageIndex + pages[pageIndex].sizeInPages; - - if(!pages[pageIndex].committed) - { - if(!PageFault(ptr)) - return; - } - - for(unsigned long i = pageIndex; i < endPage; i++) - { - pages[i].locked = true; - } -} -void VirtualMemoryManager::Unlock(void *ptr) -{ - if(!inited) - return; - - LockMut(vmemMutex); - - // check that the address is within the virtual address bounds - if((DWORD)ptr < baseAddress || (DWORD)ptr >= baseAddress + (totalPages * pageSize)) - { - return; - } - - // find the page(s) to free - DWORD offset = (DWORD)ptr - baseAddress; - unsigned long pageIndex = offset / pageSize; - - if(pages[pageIndex].headPage == -1) - { - return; - } - - pageIndex = pages[pageIndex].headPage; - - unsigned long endPage = pageIndex + pages[pageIndex].sizeInPages; - - for(unsigned long i = pageIndex; i < endPage; i++) - { - pages[i].locked = false; - } -} - -void* operator new (size_t size) -{ - if(!vmem_Manager.IsValid()) - return HeapAlloc(GetProcessHeap(), 0, size); - - if(size > vmem_Manager.GetThreshold()) - return vmem_Manager.Allocate(size); - else - { - void *ret = HeapAlloc(GetProcessHeap(), 0, size); - while(ret == NULL) - { - if(!vmem_Manager.DecommitLRU()) - return NULL; - - ret = HeapAlloc(GetProcessHeap(), 0, size); - } - return ret; - } -} - -void* operator new[] (size_t size) -{ - if(!vmem_Manager.IsValid()) - return HeapAlloc(GetProcessHeap(), 0, size); - - if(size > vmem_Manager.GetThreshold()) - return vmem_Manager.Allocate(size); - else - { - void *ret = HeapAlloc(GetProcessHeap(), 0, size); - while(ret == NULL) - { - if(!vmem_Manager.DecommitLRU()) - return NULL; - - ret = HeapAlloc(GetProcessHeap(), 0, size); - } - return ret; - } -} - -void operator delete (void *p) -{ - if(vmem_Manager.IsValid()) - { - if(vmem_Manager.Free(p)) - return; - } - - HeapFree(GetProcessHeap(), 0, p); -} - -void operator delete[] (void *p) -{ - if(vmem_Manager.IsValid()) - { - if(vmem_Manager.Free(p)) - return; - } - - HeapFree(GetProcessHeap(), 0, p); -} - -void *valloc(size_t size) -{ - if(!vmem_Manager.IsValid()) - return HeapAlloc(GetProcessHeap(), 0, size); - - if(size > vmem_Manager.GetThreshold()) - return vmem_Manager.Allocate(size); - else - { - void *ret = HeapAlloc(GetProcessHeap(), 0, size); - while(ret == NULL) - { - if(!vmem_Manager.DecommitLRU()) - return NULL; - - ret = HeapAlloc(GetProcessHeap(), 0, size); - } - return ret; - } -} - -void vfree(void *ptr) -{ - if(vmem_Manager.IsValid()) - { - if(vmem_Manager.Free(ptr)) - return; - } - - HeapFree(GetProcessHeap(), 0, ptr); -} - -LONG _stdcall CheckPageFault(LPEXCEPTION_POINTERS e) -{ - if(LOG && e->ExceptionRecord->ExceptionCode != EXCEPTION_ACCESS_VIOLATION) - LOG->Trace("Exception: %u", e->ExceptionRecord->ExceptionCode); - - if (e->ExceptionRecord->ExceptionCode != EXCEPTION_ACCESS_VIOLATION) - return EXCEPTION_CONTINUE_SEARCH; - - DWORD addr = (DWORD)e->ExceptionRecord->ExceptionInformation[1]; - - if(vmem_Manager.IsValid()) - { - if(LOG && vmem_Manager.IsLogging()) - LOG->Trace("Page fault"); - - if(vmem_Manager.PageFault((void *)addr)) - return EXCEPTION_CONTINUE_EXECUTION; - } - - return EXCEPTION_CONTINUE_SEARCH; -} - -int NoMemory(size_t size) -{ - if(LOG && vmem_Manager.IsLogging()) - LOG->Trace("Out of memory, freeing up some..."); - - if(vmem_Manager.DecommitLRU()) - { - if(LOG && vmem_Manager.IsLogging()) - LOG->Trace("Freed some memory, trying again"); - return 1; - } - else - { - if(LOG) - LOG->Trace("No memory left to free. Failed"); - return 0; - } -} - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ \ No newline at end of file diff --git a/src/archutils/Xbox/VirtualMemory.h b/src/archutils/Xbox/VirtualMemory.h deleted file mode 100644 index 3d27a84b95..0000000000 --- a/src/archutils/Xbox/VirtualMemory.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef VIRTUAL_MEMORY_H -#define VIRTUAL_MEMORY_H - -#if defined(XBOX) -#include -#else -#include -#endif - -#include "RageThreads.h" - -struct vm_page; - -class VirtualMemoryManager -{ -public: - VirtualMemoryManager(); - ~VirtualMemoryManager(); - - bool Init(); - void Destroy(); - void* Allocate(size_t size); - bool Free(void *ptr); - bool PageFault(void *ptr); - bool DecommitLRU(); - bool EnsureFreeMemory(size_t size); - void Lock(void *ptr); - void Unlock(void *ptr); - void SetLogging(bool l) { logging = l; } - - bool IsValid() { return inited; } - bool IsLogging() { return logging; } - unsigned long GetThreshold() { return threshold; } - -protected: - vm_page *pages; - HANDLE vmemFile; - DWORD baseAddress; - unsigned long totalPages; - unsigned long pageSize; - unsigned long threshold; - unsigned long pageLRU; - - bool inited; - bool logging; - - // mutex to make sure pages aren't allocated/deallocated concurrently - RageMutex vmemMutex; -}; - -void *valloc(size_t size); -void vfree(void *ptr); - -//#define malloc(size) valloc(size) -//#define free(memblock) vfree(memblock) - -extern VirtualMemoryManager vmem_Manager; - -LONG _stdcall CheckPageFault(LPEXCEPTION_POINTERS e); -int NoMemory(size_t size); - -#endif - -/* - * (c) 2004 Ryan Dortmans - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ \ No newline at end of file diff --git a/src/archutils/Xbox/arch_setup.cpp b/src/archutils/Xbox/arch_setup.cpp deleted file mode 100644 index 017e1909b5..0000000000 --- a/src/archutils/Xbox/arch_setup.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "global.h" - -#undef main -void __cdecl main() -{ - int argc = 1; - char def[] = "default.xbe"; - char *argv[] = { def }; - int ret=SM_main( argc, argv ); -} - -#ifndef _DEBUG -//release xbox libs doesnt have these functions -FILE * __cdecl _popen(const char *, const char *) -{ - return NULL; -} - -int __cdecl _pclose(FILE *) -{ - return -1; -} - -char *getenv(const char *) -{ - return NULL; -} - -int __cdecl system(const char *) -{ - return -1; -} -#endif - -/* - * (c) 2006 Chris - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, and/or sell copies of the Software, and to permit persons to - * whom the Software is furnished to do so, provided that the above - * copyright notice(s) and this permission notice appear in all copies of - * the Software and that both the above copyright notice(s) and this - * permission notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ diff --git a/src/archutils/Xbox/arch_setup.h b/src/archutils/Xbox/arch_setup.h deleted file mode 100644 index 4fc285b866..0000000000 --- a/src/archutils/Xbox/arch_setup.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef ARCH_SETUP_XBOX_H -#define ARCH_SETUP_XBOX_H - -#include -#include -#include - -#if defined(_XDBG) -#include -#define IsDebuggerPresent() DmIsDebuggerPresent() -#endif - -// Xbox base path -#define SYS_BASE_PATH "D:\\" - -#define SUPPORT_D3D - -/* Stubs: */ -inline HRESULT CoInitialize( LPVOID pvReserved ) { return S_OK; } -inline void CoUninitialize() { } - -extern "C" int SM_main( int argc, char *argv[] ); -#define main(x,y) SM_main(x,y) - -#endif diff --git a/src/archutils/Xbox/custom_launch_params.cpp b/src/archutils/Xbox/custom_launch_params.cpp deleted file mode 100644 index 47716d2ca0..0000000000 --- a/src/archutils/Xbox/custom_launch_params.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include -#include "custom_launch_params.h" - -CUSTOM_LAUNCH_DATA g_launchData ; -int g_autoLaunchGame ; -int g_launchReturnXBE ; - -//XGetCustomLaunchData -// -//If there is a valid filename to load, then g_autoLaunchGame will be set to 1 -//If there is a valid return XBE, then g_launchReturnXBE will be set to 1 -int XGetCustomLaunchData() -{ - DWORD launchType; - - g_autoLaunchGame = 0 ; - g_launchReturnXBE = 0 ; - - memset( &g_launchData, 0, sizeof( CUSTOM_LAUNCH_DATA ) ) ; - - - if ( ( XGetLaunchInfo( &launchType,(PLAUNCH_DATA)&g_launchData) == ERROR_SUCCESS ) ) - { - if ( ( launchType == LDT_TITLE ) && ( g_launchData.magic == CUSTOM_LAUNCH_MAGIC ) ) - { - if ( g_launchData.szFilename[0] ) - g_autoLaunchGame = 1 ; - - if ( g_launchData.szLaunchXBEOnExit[0] ) - g_launchReturnXBE = 1 ; - - return 1 ; - } - } - - return 0 ; -} - -void XReturnToLaunchingXBE( ) -{ - if ( g_launchReturnXBE ) - { - LD_LAUNCH_DASHBOARD LaunchData = { XLD_LAUNCH_DASHBOARD_MAIN_MENU }; - } - else - { - LD_LAUNCH_DASHBOARD LaunchData = { XLD_LAUNCH_DASHBOARD_MAIN_MENU }; - - XLaunchNewImage( NULL, (LAUNCH_DATA*)&LaunchData ); - } -} - -#ifdef __cplusplus -extern "C" { -#endif - -void doReturn() -{ - XGetCustomLaunchData(); - XReturnToLaunchingXBE( ); -} - -#ifdef __cplusplus -} -#endif diff --git a/src/archutils/Xbox/custom_launch_params.h b/src/archutils/Xbox/custom_launch_params.h deleted file mode 100644 index 196c9ea6df..0000000000 --- a/src/archutils/Xbox/custom_launch_params.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef CUSTOM_LAUNCH_PARAMS_H -#define CUSTOM_LAUNCH_PARAMS_H - -#include - - -#define CUSTOM_LAUNCH_MAGIC 0xEE456777 - -#define COUNTRY_TYPE_AUTODETECT 0 -#define COUNTRY_TYPE_USA 1 -#define COUNTRY_TYPE_JAPAN 2 -#define COUNTRY_TYPE_EUROPE 3 -#define COUNTRY_TYPE_OTHER 4 - -typedef struct _CUSTOM_LAUNCH_DATA -{ - DWORD magic ; //populate this with CUSTOM_LAUNCH_MAGIC so we know we are using this special structure - char szFilename[300] ; //this is the path to the game to load upon startup - char szLaunchXBEOnExit[100] ; //this is the XBE name that should be launched when exiting the emu ( "FILE.XBE" ) - char szRemap_D_As[350] ; //this is what D drive should be mapped to in order to launch the XBE specified in szLaunchXBEOnExit ( "\\Device\\Harddisk0\\Partition1\\GAMES" ) - BYTE country ; //country code to use - BYTE launchInsertedMedia ; //should we auto-run the inserted CD/DVD ? - BYTE executionType ; //generic variable that determines how the emulator is run - for example, if you wish to run FMSXBOX as MSX1 or MSX2 or MSX2+ - char reserved[MAX_LAUNCH_DATA_SIZE-757] ; //MAX_LAUNCH_DATA_SIZE is 3KB - -} CUSTOM_LAUNCH_DATA, *PCUSTOM_LAUNCH_DATA; - -extern CUSTOM_LAUNCH_DATA g_launchData ; -extern int g_autoLaunchGame ; -extern int g_launchReturnXBE ; - - -int XGetCustomLaunchData() ; -void XReturnToLaunchingXBE( ); - -#endif diff --git a/src/archutils/Xbox/saveblue.XBX b/src/archutils/Xbox/saveblue.XBX deleted file mode 100644 index 3756c0c380f6412e889d152fb519008c2067f343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18432 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 diff --git a/src/archutils/Xbox/savered.XBX b/src/archutils/Xbox/savered.XBX deleted file mode 100644 index 77d5f92e09680fbe8e20d30e44870bd8b74d2a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18432 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 vLuQU4OdVm1A6+I+MH`$#flZp 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 B?;-#I diff --git a/src/crypto/CryptNoise.cpp b/src/crypto/CryptNoise.cpp index 4db065d162..f65cbe1810 100644 --- a/src/crypto/CryptNoise.cpp +++ b/src/crypto/CryptNoise.cpp @@ -5,16 +5,7 @@ #include "global.h" -#if defined(_XBOX) -void noise_get_heavy(void (*func) (void *, int)) -{ -} - -void noise_get_light(void (*func) (void *, int)) -{ -} - -#elif defined(_WINDOWS) +#if defined(_WINDOWS) #define _WIN32_WINNT 0x0400 // VC6 header needs this defined. #include #include diff --git a/src/ezsockets.cpp b/src/ezsockets.cpp index 188074b6fd..5b3bc56423 100644 --- a/src/ezsockets.cpp +++ b/src/ezsockets.cpp @@ -10,9 +10,9 @@ #include "ezsockets.h" -#if defined(_MSC_VER) && !defined(_XBOX) // We need the WinSock32 Library on Windows +#if defined(_MSC_VER) // We need the WinSock32 Library on Windows #pragma comment(lib,"wsock32.lib") -#elif !defined(__MINGW32__) && !defined(_XBOX) +#elif !defined(__MINGW32__) #include #include #include @@ -38,7 +38,7 @@ EzSockets::EzSockets() MAXCON = 5; memset (&addr,0,sizeof(addr)); //Clear the sockaddr_in structure -#if defined(_WINDOWS) || defined(_XBOX) // Windows REQUIRES WinSock Startup +#if defined(_WINDOWS) // Windows REQUIRES WinSock Startup WSAStartup( MAKEWORD(1,1), &wsda ); #endif @@ -61,11 +61,7 @@ EzSockets::~EzSockets() //Check to see if the socket has been created bool EzSockets::check() { -#if !defined(XBOX) return sock > SOCKET_NONE; -#else - return sock != INVALID_SOCKET; -#endif } bool EzSockets::create() @@ -82,13 +78,7 @@ bool EzSockets::create(int Protocol) case IPPROTO_UDP: return create(IPPROTO_UDP, SOCK_DGRAM); default: - /* XBOX does not support raw sockets. So, since there's no need, - we aren't going to allow it on the XBOX. */ -#if defined(_XBOX) - return false; -#else return create(Protocol, SOCK_RAW); -#endif } } @@ -97,14 +87,9 @@ bool EzSockets::create(int Protocol, int Type) state = skDISCONNECTED; sock = socket(AF_INET, Type, Protocol); lastCode = sock; -#if !defined(XBOX) - return sock > SOCKET_NONE; //Socket must be Greater than 0 -#else - return sock != INVALID_SOCKET; -#endif + return sock > SOCKET_NONE; // Socket must be Greater than 0 } - bool EzSockets::bind(unsigned short port) { if(!check()) @@ -184,32 +169,12 @@ bool EzSockets::connect(const std::string& host, unsigned short port) if(!check()) return false; -#if defined(_XBOX) - if(!isdigit(host[0])) // don't do a DNS lookup for an IP address - { - XNDNS *pxndns = NULL; - XNetDnsLookup(host.c_str(), NULL, &pxndns); - while (pxndns->iStatus == WSAEINPROGRESS) - { - // Do something else while lookup is in progress - } - - if (pxndns->iStatus == 0) - memcpy(&addr.sin_addr, &pxndns->aina[0], sizeof(struct in_addr)); - else - return false; - - XNetDnsRelease(pxndns); - } - else - addr.sin_addr.s_addr = inet_addr(host.c_str()); -#else struct hostent* phe; phe = gethostbyname(host.c_str()); if (phe == NULL) return false; memcpy(&addr.sin_addr, phe->h_addr, sizeof(struct in_addr)); -#endif + addr.sin_family = AF_INET; addr.sin_port = htons(port); @@ -266,7 +231,7 @@ void EzSockets::update() unsigned long EzSockets::LongFromAddrIn( const sockaddr_in & s ) { -#if defined(_XBOX) || defined(_WINDOWS) +#if defined(_WINDOWS) return ntohl(s.sin_addr.S_un.S_addr); #else return ntohl(s.sin_addr.s_addr); diff --git a/src/ezsockets.h b/src/ezsockets.h index 7c8893b84b..6e90313d67 100644 --- a/src/ezsockets.h +++ b/src/ezsockets.h @@ -19,15 +19,7 @@ #include #include -#if defined(_XBOX) -/* - * Summary : WinsockX is bad, XTL is good. - * Explained : WinsockX may rely on some declares that are present in XTL. - * Also, using XTL includes some files maybe needed for other operations - * on Xbox. - */ -#include -#elif defined(_WINDOWS) +#if defined(_WINDOWS) #include #else #include @@ -132,8 +124,8 @@ public: private: - // Only necessary for Windows and Xbox -#if defined(_WINDOWS) || defined(_XBOX) + // Only necessary for Windows +#if defined(_WINDOWS) WSADATA wsda; #endif diff --git a/src/global.cpp b/src/global.cpp index 946261b850..be38a84929 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -10,7 +10,6 @@ # include "archutils/Darwin/Crash.h" using CrashHandler::IsDebuggerPresent; using CrashHandler::DebugBreak; -#elif defined(XBOX) #else # include #endif diff --git a/src/libjpeg/jmorecfg.h b/src/libjpeg/jmorecfg.h index 93ccd1f84f..68a250c624 100644 --- a/src/libjpeg/jmorecfg.h +++ b/src/libjpeg/jmorecfg.h @@ -187,7 +187,7 @@ typedef unsigned int JDIMENSION; /* a function referenced thru EXTERNs: */ #define GLOBAL(type) type /* a reference to a GLOBAL function: */ -#if defined(WIN32) && !defined(XBOX) +#if defined(WIN32) # ifdef BUILDING_JPEG_DLL # define DLLIMPORT __declspec (dllexport) # else diff --git a/src/lua-5.1/src/luaconf.h b/src/lua-5.1/src/luaconf.h index 0ca4825551..732ac082de 100644 --- a/src/lua-5.1/src/luaconf.h +++ b/src/lua-5.1/src/luaconf.h @@ -700,11 +700,10 @@ union luai_Cast { double l_d; long l_l; }; #define LUA_DL_DLOPEN #endif -#if defined(LUA_WIN) && !defined(XBOX) +#if defined(LUA_WIN) #define LUA_DL_DLL #endif - /* @@ LUAI_EXTRASPACE allows you to add user-specific data in a lua_State @* (the data goes just *before* the lua_State pointer). diff --git a/src/sm-ssc_Xbox-net2003.sln b/src/sm-ssc_Xbox-net2003.sln deleted file mode 100644 index 60286bddd7..0000000000 --- a/src/sm-ssc_Xbox-net2003.sln +++ /dev/null @@ -1,53 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StepMania", "StepManiaXbox-2003.vcproj", "{670745A6-106B-420D-A2A9-D4F89A23986E}" - ProjectSection(ProjectDependencies) = postProject - {15A6313B-3206-4847-87A2-62255F0B3837} = {15A6313B-3206-4847-87A2-62255F0B3837} - {00C33C79-1140-47B0-838B-109A61950513} = {00C33C79-1140-47B0-838B-109A61950513} - {CA22B79A-E8A9-4BFB-A297-42231F2213F2} = {CA22B79A-E8A9-4BFB-A297-42231F2213F2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xboxmad", "mad-0.15.1b\xboxmad\xboxmad-2003.vcproj", "{CA22B79A-E8A9-4BFB-A297-42231F2213F2}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtomcrypt", "libtomcrypt\libtomcryptXbox-net2003.vcproj", "{15A6313B-3206-4847-87A2-62255F0B3837}" - ProjectSection(ProjectDependencies) = postProject - {00C33C79-1140-47B0-838B-109A61950513} = {00C33C79-1140-47B0-838B-109A61950513} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtommath", "libtommath\libtommathXbox-net2003.vcproj", "{00C33C79-1140-47B0-838B-109A61950513}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(SolutionConfiguration) = preSolution - Debug Xbox = Debug Xbox - Release Xbox = Release Xbox - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {670745A6-106B-420D-A2A9-D4F89A23986E}.Debug Xbox.ActiveCfg = Debug|Xbox - {670745A6-106B-420D-A2A9-D4F89A23986E}.Debug Xbox.Build.0 = Debug|Xbox - {670745A6-106B-420D-A2A9-D4F89A23986E}.Release Xbox.ActiveCfg = Release|Xbox - {670745A6-106B-420D-A2A9-D4F89A23986E}.Release Xbox.Build.0 = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug Xbox.ActiveCfg = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Debug Xbox.Build.0 = Debug|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release Xbox.ActiveCfg = Release|Xbox - {CA22B79A-E8A9-4BFB-A297-42231F2213F2}.Release Xbox.Build.0 = Release|Xbox - {15A6313B-3206-4847-87A2-62255F0B3837}.Debug Xbox.ActiveCfg = Debug|Xbox - {15A6313B-3206-4847-87A2-62255F0B3837}.Debug Xbox.Build.0 = Debug|Xbox - {15A6313B-3206-4847-87A2-62255F0B3837}.Release Xbox.ActiveCfg = Release|Xbox - {15A6313B-3206-4847-87A2-62255F0B3837}.Release Xbox.Build.0 = Release|Xbox - {00C33C79-1140-47B0-838B-109A61950513}.Debug Xbox.ActiveCfg = Debug|Xbox - {00C33C79-1140-47B0-838B-109A61950513}.Debug Xbox.Build.0 = Debug|Xbox - {00C33C79-1140-47B0-838B-109A61950513}.Release Xbox.ActiveCfg = Release|Xbox - {00C33C79-1140-47B0-838B-109A61950513}.Release Xbox.Build.0 = Release|Xbox - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - DPBuild = 5 - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal From 12872f0a50929b4defc5389ab3c0aa0c0252c755 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 20:40:35 -0400 Subject: [PATCH 026/241] More effective fixes. Still no issues. Note: you will most likely end up recompiling the whole thing. --- src/AutoActor.h | 2 +- src/BitmapText.h | 2 +- src/CommonMetrics.h | 6 +-- src/Course.cpp | 3 ++ src/Course.h | 2 + src/GameCommand.h | 22 ++++++++- src/HighScore.h | 7 ++- src/InputEventPlus.h | 3 +- src/InputMapper.h | 2 +- src/InputQueue.h | 10 +++- src/MsdFile.h | 2 + src/NoteData.h | 2 + src/OptionRowHandler.h | 39 +++++++++++---- src/Profile.h | 50 +++++++++++++++++-- src/RageTexturePreloader.h | 3 +- src/RageUtil_CachedObject.h | 5 +- src/ScreenMiniMenu.h | 99 +++++++++++++++++++++++++++---------- src/ScreenTextEntry.h | 5 +- src/StyleUtil.h | 2 +- src/ThemeMetric.h | 5 +- src/TrailUtil.h | 3 +- 21 files changed, 214 insertions(+), 60 deletions(-) diff --git a/src/AutoActor.h b/src/AutoActor.h index c2223e6711..3ee95bec09 100644 --- a/src/AutoActor.h +++ b/src/AutoActor.h @@ -12,7 +12,7 @@ class XNode; class AutoActor { public: - AutoActor() { m_pActor = NULL; } + AutoActor(): m_pActor(NULL) {} ~AutoActor() { Unload(); } AutoActor( const AutoActor &cpy ); AutoActor &operator =( const AutoActor &cpy ); diff --git a/src/BitmapText.h b/src/BitmapText.h index 2647dda970..bc06c5c406 100644 --- a/src/BitmapText.h +++ b/src/BitmapText.h @@ -51,7 +51,7 @@ public: struct Attribute { - Attribute() : length(-1) { } + Attribute() : length(-1), glow() { } int length; RageColor diffuse[4]; RageColor glow; diff --git a/src/CommonMetrics.h b/src/CommonMetrics.h index f2e4e629c5..ba0529b361 100644 --- a/src/CommonMetrics.h +++ b/src/CommonMetrics.h @@ -11,7 +11,7 @@ class ThemeMetricDifficultiesToShow : public ThemeMetric { public: - ThemeMetricDifficultiesToShow() { } + ThemeMetricDifficultiesToShow(): m_v() { } ThemeMetricDifficultiesToShow( const RString& sGroup, const RString& sName ); void Read(); const vector &GetValue() const; @@ -21,7 +21,7 @@ private: class ThemeMetricCourseDifficultiesToShow : public ThemeMetric { public: - ThemeMetricCourseDifficultiesToShow() { } + ThemeMetricCourseDifficultiesToShow(): m_v() { } ThemeMetricCourseDifficultiesToShow( const RString& sGroup, const RString& sName ); void Read(); const vector &GetValue() const; @@ -31,7 +31,7 @@ private: class ThemeMetricStepsTypesToShow : public ThemeMetric { public: - ThemeMetricStepsTypesToShow() { } + ThemeMetricStepsTypesToShow(): m_v() { } ThemeMetricStepsTypesToShow( const RString& sGroup, const RString& sName ); void Read(); const vector &GetValue() const; diff --git a/src/Course.cpp b/src/Course.cpp index ce37abc628..dd39fdaa86 100644 --- a/src/Course.cpp +++ b/src/Course.cpp @@ -248,6 +248,9 @@ struct SortTrailEntry { TrailEntry entry; int SortMeter; + + SortTrailEntry(): entry(), SortMeter(0) {} + bool operator< ( const SortTrailEntry &rhs ) const { return SortMeter < rhs.SortMeter; } }; diff --git a/src/Course.h b/src/Course.h index 7ba37eb3f0..23c91e5630 100644 --- a/src/Course.h +++ b/src/Course.h @@ -189,6 +189,8 @@ public: { Trail trail; bool null; + + CacheData(): trail(), null(false) {} }; typedef map TrailCache_t; mutable TrailCache_t m_TrailCache; diff --git a/src/GameCommand.h b/src/GameCommand.h index f04f97da6f..8cd135dde4 100644 --- a/src/GameCommand.h +++ b/src/GameCommand.h @@ -22,7 +22,27 @@ struct lua_State; class GameCommand { public: - GameCommand() { Init(); } + GameCommand(): m_Commands(), m_sName(""), m_sText(""), + m_bInvalid(true), m_sInvalidReason(""), + m_iIndex(-1), m_MultiPlayer(MultiPlayer_Invalid), + m_pStyle(NULL), m_pm(PlayMode_Invalid), + m_dc(Difficulty_Invalid), + m_CourseDifficulty(Difficulty_Invalid), + m_sAnnouncer(""), m_sPreferredModifiers(""), + m_sStageModifiers(""), m_sScreen(""), m_LuaFunction(), + m_pSong(NULL), m_pSteps(NULL), m_pCourse(NULL), + m_pTrail(NULL), m_pCharacter(NULL), m_SetEnv(), + m_sSongGroup(""), m_SortOrder(SortOrder_Invalid), + m_sSoundPath(""), m_vsScreensToPrepare(), m_iWeightPounds(-1), + m_iGoalCalories(-1), m_GoalType(GoalType_Invalid), + m_sProfileID(""), m_sUrl(""), m_bUrlExits(true), + m_bInsertCredit(false), m_bClearCredits(false), + m_bStopMusic(false), m_bApplyDefaultOptions(false), + m_bFadeMusic(false), m_fMusicFadeOutVolume(-1), + m_fMusicFadeOutSeconds(-1), m_bApplyCommitsScreens(true) + { + m_LuaFunction.Unset(); + } void Init(); void Load( int iIndex, const Commands& cmds ); diff --git a/src/HighScore.h b/src/HighScore.h index c3f9b0f94c..3673c98e37 100644 --- a/src/HighScore.h +++ b/src/HighScore.h @@ -104,10 +104,9 @@ public: * @brief Set up the HighScore List with default values. * * This used to call Init(), but it's better to be explicit here. */ - HighScoreList(): HighGrade(Grade_NoData), iNumTimesPlayed(0) - { - vHighScores.clear(); - } + HighScoreList(): vHighScores(), HighGrade(Grade_NoData), + iNumTimesPlayed(0), dtLastPlayed() {} + void Init(); int GetNumTimesPlayed() const diff --git a/src/InputEventPlus.h b/src/InputEventPlus.h index 0907b55ed6..2ba00ae493 100644 --- a/src/InputEventPlus.h +++ b/src/InputEventPlus.h @@ -9,10 +9,11 @@ class InputEventPlus { public: InputEventPlus(): + DeviceI(), GameI(), type(IET_FIRST_PRESS), MenuI(GameButton_Invalid), pn(PLAYER_INVALID), - mp(MultiPlayer_Invalid) { } + mp(MultiPlayer_Invalid), InputList() { } DeviceInput DeviceI; GameInput GameI; InputEventType type; diff --git a/src/InputMapper.h b/src/InputMapper.h index 271d682465..d09f23c53e 100644 --- a/src/InputMapper.h +++ b/src/InputMapper.h @@ -78,7 +78,7 @@ struct AutoMappings AutoMappingEntry im37 = AutoMappingEntry(), AutoMappingEntry im38 = AutoMappingEntry(), AutoMappingEntry im39 = AutoMappingEntry() ) - : m_sGame(s1), m_sDriverRegex(s2), m_sControllerName(s3) + : m_sGame(s1), m_sDriverRegex(s2), m_sControllerName(s3), m_vMaps() { #define PUSH( im ) if(!im.IsEmpty()) m_vMaps.push_back(im); PUSH(im0);PUSH(im1);PUSH(im2);PUSH(im3);PUSH(im4);PUSH(im5);PUSH(im6);PUSH(im7);PUSH(im8);PUSH(im9);PUSH(im10);PUSH(im11);PUSH(im12);PUSH(im13);PUSH(im14);PUSH(im15);PUSH(im16);PUSH(im17);PUSH(im18);PUSH(im19); diff --git a/src/InputQueue.h b/src/InputQueue.h index 8ee93be3d7..cb7498470b 100644 --- a/src/InputQueue.h +++ b/src/InputQueue.h @@ -27,11 +27,19 @@ struct InputQueueCode public: bool Load( RString sButtonsNames ); bool EnteredCode( GameController controller ) const; + + InputQueueCode(): m_aPresses() {} private: struct ButtonPress { - ButtonPress() { m_bAllowIntermediatePresses = false; memset( m_InputTypes, 0, sizeof(m_InputTypes) ); m_InputTypes[IET_FIRST_PRESS] = true; } + ButtonPress(): m_aButtonsToHold(), m_aButtonsToNotHold(), + m_aButtonsToPress(), + m_bAllowIntermediatePresses(false) + { + memset( m_InputTypes, 0, sizeof(m_InputTypes) ); + m_InputTypes[IET_FIRST_PRESS] = true; + } vector m_aButtonsToHold; vector m_aButtonsToNotHold; vector m_aButtonsToPress; diff --git a/src/MsdFile.h b/src/MsdFile.h index aaae912b14..7d43d2aec4 100644 --- a/src/MsdFile.h +++ b/src/MsdFile.h @@ -23,6 +23,8 @@ public: */ RString operator[]( unsigned i ) const { if( i >= params.size() ) return RString(); return params[i]; } }; + + MsdFile(): values(), error("") {} /** @brief Remove the MSDFile. */ virtual ~MsdFile() { } diff --git a/src/NoteData.h b/src/NoteData.h index a8c59f0bd9..5de742eb30 100644 --- a/src/NoteData.h +++ b/src/NoteData.h @@ -32,6 +32,8 @@ public: typedef map::const_iterator const_iterator; typedef map::reverse_iterator reverse_iterator; typedef map::const_reverse_iterator const_reverse_iterator; + + NoteData(): m_TapNotes() {} iterator begin( int iTrack ) { return m_TapNotes[iTrack].begin(); } const_iterator begin( int iTrack ) const { return m_TapNotes[iTrack].begin(); } diff --git a/src/OptionRowHandler.h b/src/OptionRowHandler.h index 2fe5a5b624..3a443849ce 100644 --- a/src/OptionRowHandler.h +++ b/src/OptionRowHandler.h @@ -77,15 +77,14 @@ struct OptionRowDefinition OptionRowDefinition(): m_sName(""), m_sExplanationName(""), m_bOneChoiceForAllPlayers(false), m_selectType(SELECT_ONE), - m_layoutType(LAYOUT_SHOW_ALL_IN_ROW), m_iDefault(-1), + m_layoutType(LAYOUT_SHOW_ALL_IN_ROW), m_vsChoices(), + m_vEnabledForPlayers(), m_iDefault(-1), m_bExportOnChange(false), m_bAllowThemeItems(true), m_bAllowThemeTitle(true), m_bAllowExplanation(true), m_bShowChoicesListOnSelect(false) { - m_vsChoices.clear(); - m_vEnabledForPlayers.clear(); FOREACH_PlayerNumber( pn ) - m_vEnabledForPlayers.insert( pn ); + m_vEnabledForPlayers.insert( pn ); } void Init() { @@ -106,13 +105,33 @@ struct OptionRowDefinition m_bShowChoicesListOnSelect = false; } - OptionRowDefinition( const char *n, bool b, 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 ) + OptionRowDefinition( const char *n, bool b, 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 ): m_sName(n), + m_sExplanationName(""), m_bOneChoiceForAllPlayers(b), + m_selectType(SELECT_ONE), + m_layoutType(LAYOUT_SHOW_ALL_IN_ROW), m_vsChoices(), + m_vEnabledForPlayers(), m_iDefault(-1), + m_bExportOnChange(false), m_bAllowThemeItems(true), + m_bAllowThemeTitle(true), m_bAllowExplanation(true), + m_bShowChoicesListOnSelect(false) { - Init(); - m_sName=n; - m_bOneChoiceForAllPlayers=b; + FOREACH_PlayerNumber( pn ) + m_vEnabledForPlayers.insert( pn ); + #define PUSH( c ) if(c) m_vsChoices.push_back(c); - PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19); + PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5); + PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11); + PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17); + PUSH(c18);PUSH(c19); #undef PUSH } }; @@ -124,7 +143,7 @@ public: OptionRowDefinition m_Def; vector m_vsReloadRowMessages; // refresh this row on on these messages - OptionRowHandler() { Init(); } + OptionRowHandler(): m_Def(), m_vsReloadRowMessages() { } virtual ~OptionRowHandler() { } virtual void Init() { diff --git a/src/Profile.h b/src/Profile.h index 1a4d022319..b95fd8d3a7 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -67,9 +67,49 @@ class Game; class Profile { public: - Profile() + /** + * @brief Set up the Profile with default values. + * + * Note: there are probably a lot of variables. */ + Profile(): m_sDisplayName(""), m_sCharacterID(""), + m_sLastUsedHighScoreName(""), m_iWeightPounds(0), + m_sGuid(MakeGuid()), m_sDefaultModifiers(), + m_SortOrder(SortOrder_Invalid), + m_LastDifficulty(Difficulty_Invalid), + m_LastCourseDifficulty(Difficulty_Invalid), + m_LastStepsType(StepsType_Invalid), m_lastSong(), + m_lastCourse(), m_iTotalSessions(0), + m_iTotalSessionSeconds(0), m_iTotalGameplaySeconds(0), + m_fTotalCaloriesBurned(0), m_GoalType(GoalType_Calories), + m_iGoalCalories(0), m_iGoalSeconds(0), m_iTotalDancePoints(0), + m_iNumExtraStagesPassed(0), m_iNumExtraStagesFailed(0), + m_iNumToasties(0), m_iTotalTapsAndHolds(0), m_iTotalJumps(0), + m_iTotalHolds(0), m_iTotalRolls(0), m_iTotalMines(0), + m_iTotalHands(0), m_iTotalLifts(0), m_UnlockedEntryIDs(), + m_sLastPlayedMachineGuid(""), m_LastPlayedDate(), + m_iNumSongsPlayedByStyle(), m_iNumTotalSongsPlayed(0), + m_UserData(), m_SongHighScores(), m_CourseHighScores(), + m_vScreenshots(), m_mapDayToCaloriesBurned() { - InitAll(); + m_lastSong.Unset(); + m_lastCourse.Unset(); + + m_LastPlayedDate.Init(); + + FOREACH_ENUM( PlayMode, i ) + m_iNumSongsPlayedByPlayMode[i] = 0; + FOREACH_ENUM( Difficulty, i ) + m_iNumSongsPlayedByDifficulty[i] = 0; + for( int i=0; i m_StepsHighScores; int GetNumTimesPlayed() const; + HighScoresForASong(): m_StepsHighScores() {} }; std::map m_SongHighScores; @@ -196,11 +238,13 @@ public: struct HighScoresForATrail { HighScoreList hsl; + HighScoresForATrail(): hsl() {} }; struct HighScoresForACourse { std::map m_TrailHighScores; int GetNumTimesPlayed() const; + HighScoresForACourse(): m_TrailHighScores() {} }; std::map m_CourseHighScores; @@ -240,7 +284,7 @@ public: * insert some garbage entries into the map. */ struct Calories { - Calories() { fCals = 0; } + Calories(): fCals(0) {} float fCals; }; map m_mapDayToCaloriesBurned; diff --git a/src/RageTexturePreloader.h b/src/RageTexturePreloader.h index 1a45ffe28b..4f893ffe9a 100644 --- a/src/RageTexturePreloader.h +++ b/src/RageTexturePreloader.h @@ -8,7 +8,8 @@ class RageTexturePreloader { public: RageTexturePreloader(): m_apTextures() { } - RageTexturePreloader( const RageTexturePreloader &cpy ) { *this = cpy; } + RageTexturePreloader( const RageTexturePreloader &cpy ): + m_apTextures(cpy.m_apTextures) { } RageTexturePreloader &operator=( const RageTexturePreloader &rhs ); ~RageTexturePreloader(); void Load( const RageTextureID &ID ); diff --git a/src/RageUtil_CachedObject.h b/src/RageUtil_CachedObject.h index a74c80e2a7..1fee1a6397 100644 --- a/src/RageUtil_CachedObject.h +++ b/src/RageUtil_CachedObject.h @@ -114,11 +114,10 @@ public: Object::Register( this ); } - CachedObjectPointer( const CachedObjectPointer &cpy ) + CachedObjectPointer( const CachedObjectPointer &cpy ): + m_pCache(cpy.m_pCache), m_bCacheIsSet(cpy.m_bCacheIsSet) { CachedObjectHelpers::Lock(); - m_pCache = cpy.m_pCache; - m_bCacheIsSet = cpy.m_bCacheIsSet; Object::Register( this ); CachedObjectHelpers::Unlock(); } diff --git a/src/ScreenMiniMenu.h b/src/ScreenMiniMenu.h index 313166efd9..5bdd85ee2b 100644 --- a/src/ScreenMiniMenu.h +++ b/src/ScreenMiniMenu.h @@ -20,33 +20,60 @@ struct MenuRowDef 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 ) + MenuRowDef(): iRowCode(0), sName(""), bEnabled(false), + pfnEnabled(), emShowIn(), iDefaultChoice(0), + choices(), bThemeTitle(false), bThemeItems(false) {} + 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 ): iRowCode(r), sName(n), + bEnabled(true), pfnEnabled(pe), emShowIn(s), + iDefaultChoice(d), choices(), + bThemeTitle(bTT), bThemeItems(bTI) { - iRowCode = r; - sName = n; - bEnabled = true; - pfnEnabled = pe; - emShowIn = s; - bThemeTitle = bTT; - bThemeItems = bTI; - iDefaultChoice = d; #define PUSH( c ) if(c) choices.push_back(c); - PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19);PUSH(c20);PUSH(c21);PUSH(c22);PUSH(c22);PUSH(c23);PUSH(c23);PUSH(c24);PUSH(c25); + PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5); + PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11); + PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17); + PUSH(c18);PUSH(c19);PUSH(c20);PUSH(c21);PUSH(c22);PUSH(c22); + PUSH(c23);PUSH(c23);PUSH(c24);PUSH(c25); #undef PUSH } - MenuRowDef( int r, RString n, bool e, 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 ) + MenuRowDef( int r, RString n, bool e, 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 ): + iRowCode(r), sName(n), bEnabled(e), pfnEnabled(NULL), + emShowIn(s), iDefaultChoice(d), choices(), + bThemeTitle(bTT), bThemeItems(bTI) { - iRowCode = r; - sName = n; - bEnabled = e; - pfnEnabled = NULL; - emShowIn = s; - bThemeTitle = bTT; - bThemeItems = bTI; - iDefaultChoice = d; #define PUSH( c ) if(c) choices.push_back(c); - PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5);PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11);PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17);PUSH(c18);PUSH(c19);PUSH(c20);PUSH(c21);PUSH(c22);PUSH(c22);PUSH(c23);PUSH(c23);PUSH(c24);PUSH(c25); + PUSH(c0);PUSH(c1);PUSH(c2);PUSH(c3);PUSH(c4);PUSH(c5); + PUSH(c6);PUSH(c7);PUSH(c8);PUSH(c9);PUSH(c10);PUSH(c11); + PUSH(c12);PUSH(c13);PUSH(c14);PUSH(c15);PUSH(c16);PUSH(c17); + PUSH(c18);PUSH(c19);PUSH(c20);PUSH(c21);PUSH(c22);PUSH(c22); + PUSH(c23);PUSH(c23);PUSH(c24);PUSH(c25); #undef PUSH } @@ -76,11 +103,29 @@ struct MenuDef RString sClassName; vector rows; - MenuDef( RString c, MenuRowDef r0=MenuRowDef(), MenuRowDef r1=MenuRowDef(), MenuRowDef r2=MenuRowDef(), MenuRowDef r3=MenuRowDef(), MenuRowDef r4=MenuRowDef(), MenuRowDef r5=MenuRowDef(), MenuRowDef r6=MenuRowDef(), MenuRowDef r7=MenuRowDef(), MenuRowDef r8=MenuRowDef(), MenuRowDef r9=MenuRowDef(), MenuRowDef r10=MenuRowDef(), MenuRowDef r11=MenuRowDef(), MenuRowDef r12=MenuRowDef(), MenuRowDef r13=MenuRowDef(), MenuRowDef r14=MenuRowDef(), MenuRowDef r15=MenuRowDef(), MenuRowDef r16=MenuRowDef(), MenuRowDef r17=MenuRowDef(), MenuRowDef r18=MenuRowDef(), MenuRowDef r19=MenuRowDef(), MenuRowDef r20=MenuRowDef(), MenuRowDef r21=MenuRowDef(), MenuRowDef r22=MenuRowDef(), MenuRowDef r23=MenuRowDef(), MenuRowDef r24=MenuRowDef(), MenuRowDef r25=MenuRowDef(), MenuRowDef r26=MenuRowDef(), MenuRowDef r27=MenuRowDef(), MenuRowDef r28=MenuRowDef(), MenuRowDef r29=MenuRowDef() ) + MenuDef( RString c, MenuRowDef r0=MenuRowDef(), + MenuRowDef r1=MenuRowDef(), MenuRowDef r2=MenuRowDef(), + MenuRowDef r3=MenuRowDef(), MenuRowDef r4=MenuRowDef(), + MenuRowDef r5=MenuRowDef(), MenuRowDef r6=MenuRowDef(), + MenuRowDef r7=MenuRowDef(), MenuRowDef r8=MenuRowDef(), + MenuRowDef r9=MenuRowDef(), MenuRowDef r10=MenuRowDef(), + MenuRowDef r11=MenuRowDef(), MenuRowDef r12=MenuRowDef(), + MenuRowDef r13=MenuRowDef(), MenuRowDef r14=MenuRowDef(), + MenuRowDef r15=MenuRowDef(), MenuRowDef r16=MenuRowDef(), + MenuRowDef r17=MenuRowDef(), MenuRowDef r18=MenuRowDef(), + MenuRowDef r19=MenuRowDef(), MenuRowDef r20=MenuRowDef(), + MenuRowDef r21=MenuRowDef(), MenuRowDef r22=MenuRowDef(), + MenuRowDef r23=MenuRowDef(), MenuRowDef r24=MenuRowDef(), + MenuRowDef r25=MenuRowDef(), MenuRowDef r26=MenuRowDef(), + MenuRowDef r27=MenuRowDef(), MenuRowDef r28=MenuRowDef(), + MenuRowDef r29=MenuRowDef() ): sClassName(c), rows() { - sClassName = c; #define PUSH( r ) if(!r.sName.empty()) rows.push_back(r); - PUSH(r0);PUSH(r1);PUSH(r2);PUSH(r3);PUSH(r4);PUSH(r5);PUSH(r6);PUSH(r7);PUSH(r8);PUSH(r9);PUSH(r10);PUSH(r11);PUSH(r12);PUSH(r13);PUSH(r14);PUSH(r15);PUSH(r16);PUSH(r17);PUSH(r18);PUSH(r19);PUSH(r20);PUSH(r21);PUSH(r22);PUSH(r23);PUSH(r24);PUSH(r25);PUSH(r26);PUSH(r27);PUSH(r28);PUSH(r29); + PUSH(r0);PUSH(r1);PUSH(r2);PUSH(r3);PUSH(r4);PUSH(r5);PUSH(r6); + PUSH(r7);PUSH(r8);PUSH(r9);PUSH(r10);PUSH(r11);PUSH(r12); + PUSH(r13);PUSH(r14);PUSH(r15);PUSH(r16);PUSH(r17);PUSH(r18); + PUSH(r19);PUSH(r20);PUSH(r21);PUSH(r22);PUSH(r23);PUSH(r24); + PUSH(r25);PUSH(r26);PUSH(r27);PUSH(r28);PUSH(r29); #undef PUSH } }; @@ -89,7 +134,9 @@ struct MenuDef class ScreenMiniMenu : public ScreenOptions { public: - static void MiniMenu( const MenuDef* pDef, ScreenMessage smSendOnOK, ScreenMessage smSendOnCancel = SM_None, float fX = 0, float fY = 0 ); + static void MiniMenu( const MenuDef* pDef, ScreenMessage smSendOnOK, + ScreenMessage smSendOnCancel = SM_None, + float fX = 0, float fY = 0 ); void Init(); void BeginScreen(); @@ -110,6 +157,8 @@ protected: vector m_vMenuRows; public: + ScreenMiniMenu(): m_SMSendOnOK(), m_SMSendOnCancel(), m_vMenuRows() {} + static bool s_bCancelled; static int s_iLastRowCode; static vector s_viLastAnswers; diff --git a/src/ScreenTextEntry.h b/src/ScreenTextEntry.h index 1ed5136c41..c3dad0bbb6 100644 --- a/src/ScreenTextEntry.h +++ b/src/ScreenTextEntry.h @@ -71,7 +71,10 @@ public: } struct TextEntrySettings { - TextEntrySettings() { } + TextEntrySettings(): smSendOnPop(), sQuestion(""), + sInitialAnswer(""), iMaxInputLength(0), + bPassword(false), Validate(), OnOK(), OnCancel(), + ValidateAppend(), FormatAnswerForDisplay() { } ScreenMessage smSendOnPop; RString sQuestion; RString sInitialAnswer; diff --git a/src/StyleUtil.h b/src/StyleUtil.h index f2a93b4cf8..6051d17617 100644 --- a/src/StyleUtil.h +++ b/src/StyleUtil.h @@ -11,7 +11,7 @@ class StyleID RString sStyle; public: - StyleID() { Unset(); } + StyleID(): sGame(""), sStyle("") { } void Unset() { FromStyle(NULL); } void FromStyle( const Style *p ); const Style *ToStyle() const; diff --git a/src/ThemeMetric.h b/src/ThemeMetric.h index 80e445797e..5ef34f9abe 100644 --- a/src/ThemeMetric.h +++ b/src/ThemeMetric.h @@ -53,9 +53,9 @@ public: * (everything except screens). */ ThemeMetric( const RString& sGroup = "", const RString& sName = "" ): m_sGroup( sGroup ), - m_sName( sName ) + m_sName( sName ), + m_Value(), m_currentValue(T()), m_bCallEachTime(false) { - m_currentValue = T(); ThemeManager::Subscribe( this ); } @@ -64,6 +64,7 @@ public: m_sGroup( cpy.m_sGroup ), m_sName( cpy.m_sName ), m_Value( cpy.m_Value ) + // do we transfer the current value or bCallEachTime? { ThemeManager::Subscribe( this ); } diff --git a/src/TrailUtil.h b/src/TrailUtil.h index adaa71b6b3..12c4a7dd76 100644 --- a/src/TrailUtil.h +++ b/src/TrailUtil.h @@ -33,7 +33,8 @@ class TrailID mutable CachedObjectPointer m_Cache; public: - TrailID() { Unset(); } + TrailID(): st(StepsType_Invalid), cd(Difficulty_Invalid), + m_Cache() { m_Cache.Unset(); } void Unset() { FromTrail(NULL); } void FromTrail( const Trail *p ); Trail *ToTrail( const Course *p, bool bAllowNull ) const; From fb56c8762d6e12cc4ab6944a1be6c759f8d2c544 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sun, 20 Mar 2011 09:24:47 +0700 Subject: [PATCH 027/241] some PMS files have #PLAYER set to 3 --- src/NotesLoaderPMS.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NotesLoaderPMS.cpp b/src/NotesLoaderPMS.cpp index 692f4cf0ce..08f8efbb79 100644 --- a/src/NotesLoaderPMS.cpp +++ b/src/NotesLoaderPMS.cpp @@ -123,6 +123,7 @@ static StepsType DetermineStepsType( int iPlayer, const NoteData &nd, const RStr switch( iPlayer ) { case 1: + case 3: switch( iNumNonEmptyTracks ) { case 5: return StepsType_popn_five; From 255b3444aac41a587b2b6ee607e3fdd340204060 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sun, 20 Mar 2011 09:25:45 +0700 Subject: [PATCH 028/241] Add the Pop'n #PLAYER 3 cases to BmsLoader too. --- src/NotesLoaderBMS.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp index 5b566cdba7..9dfaf410bb 100644 --- a/src/NotesLoaderBMS.cpp +++ b/src/NotesLoaderBMS.cpp @@ -179,6 +179,8 @@ static StepsType DetermineStepsType( int iPlayer, const NoteData &nd, const RStr case 8: return StepsType_beat_single7; case 12: return StepsType_beat_double5; case 16: return StepsType_beat_double7; + case 5: return StepsType_popn_five; + case 9: return StepsType_popn_nine; default: return StepsType_Invalid; } default: From 6962196795704c7d530d1d752d6eb64c50c168e6 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 19 Mar 2011 22:38:05 -0400 Subject: [PATCH 029/241] From Dr. Checkoway's school of Copy(). --- src/RageFileDriverDirect.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/RageFileDriverDirect.cpp b/src/RageFileDriverDirect.cpp index d6de2ebdc3..2dfbee3f7d 100644 --- a/src/RageFileDriverDirect.cpp +++ b/src/RageFileDriverDirect.cpp @@ -64,6 +64,10 @@ private: */ bool m_bWriteFailed; bool WriteFailed() const { return !(m_iMode & RageFile::STREAMED) && m_bWriteFailed; } + + // unused + RageFileObjDirect& operator=(const RageFileObjDirect& rhs); + RageFileObjDirect(const RageFileObjDirect& rhs); }; From c7873d91997ccd014777c3c36ea65dafa1716a75 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 20 Mar 2011 13:03:16 -0500 Subject: [PATCH 030/241] [PlayerOptions] Added SetNoteSkin(string) Lua binding. --- Docs/Changelog_sm-ssc.txt | 4 ++++ src/PlayerOptions.cpp | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index c6b1ac7b83..9a695ec50c 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -13,6 +13,10 @@ _____________________________________________________________________________ sm-ssc v1.2.4 | 20110??? -------------------------------------------------------------------------------- +20110320 +-------- +* [PlayerOptions] Added SetNoteSkin(string) Lua binding. [AJ] + 20110317 -------- * [ScreenEdit] Fix bug number 222, where Steps disappeared if they weren't diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index 812127f8d5..f67bb13339 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -841,10 +841,17 @@ class LunaPlayerOptions: public Luna { public: DEFINE_METHOD( GetNoteSkin, m_sNoteSkin ) + static int SetNoteSkin( T *p, lua_State *L ) + { + if( NOTESKIN->DoesNoteSkinExist(SArg(1)) ) + p->m_sNoteSkin = SArg(1); + return 0; + } LunaPlayerOptions() { ADD_METHOD( GetNoteSkin ); + ADD_METHOD( SetNoteSkin ); } }; From 73550fadfbd3fddb8f2c30cdfe557e829ebe0636 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 20 Mar 2011 13:09:46 -0500 Subject: [PATCH 031/241] update credits; add theDtTvB to the sm-ssc team --- Docs/credits.txt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Docs/credits.txt b/Docs/credits.txt index 28c0f41096..c4ec43dbbb 100644 --- a/Docs/credits.txt +++ b/Docs/credits.txt @@ -4,7 +4,7 @@ sm-ssc credits (in no particular order) * If you have any corrections to this list, let us know (via forums or IRC). ==the spinal shark collective== -AJ Kelly +AJ Kelly (freem) * Main programming * UserPreferences and some other Lua scripts * Some small theme edits here and there @@ -43,7 +43,10 @@ FSX Nicole Reid (okeeblow) * Tested building sm-ssc on FreeBSD, provided fixes. -Wolfman +Thai Pangsakulyanont (theDtTvB) + * Various changes to BMS support to make things work better. + +Jason Felds (Wolfman) * [Player] PercentUntilColorCombo metric * Mac OS X maintainer * Various fixes/changes. (see Changelog_sm-ssc.txt for more details) @@ -76,10 +79,6 @@ v1toko Macgravel * Orbular noteskin (the default kb7 noteskin) -theDtTvB - * Keysound patch (http://share11.appspot.com/20421) - [This patch is currently causing crashes for us, sadly.] - sy567 * Small beginner helper fix (http://www.stepmania.com/forums/showpost.php?p=158721&postcount=12) From 8e892f4af245cad1f625027cf49057b31a307d98 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 20 Mar 2011 14:11:25 -0400 Subject: [PATCH 032/241] Too many Wolfmen. I'm specifically "2000". --- Docs/credits.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Docs/credits.txt b/Docs/credits.txt index c4ec43dbbb..55c8ad396b 100644 --- a/Docs/credits.txt +++ b/Docs/credits.txt @@ -46,7 +46,7 @@ Nicole Reid (okeeblow) Thai Pangsakulyanont (theDtTvB) * Various changes to BMS support to make things work better. -Jason Felds (Wolfman) +Jason Felds (Wolfman2000) * [Player] PercentUntilColorCombo metric * Mac OS X maintainer * Various fixes/changes. (see Changelog_sm-ssc.txt for more details) @@ -144,4 +144,4 @@ NitroX72 Wanny Tio Cerbo -Daisuke Master \ No newline at end of file +Daisuke Master From 7f66664d26b84cf6b593eee53144bbfe83c5588f Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 20 Mar 2011 20:50:35 -0500 Subject: [PATCH 033/241] remove a tiny bit of whitespace --- src/ScreenPlayerOptions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScreenPlayerOptions.cpp b/src/ScreenPlayerOptions.cpp index f6d9e0ca1b..ffa39f85a3 100644 --- a/src/ScreenPlayerOptions.cpp +++ b/src/ScreenPlayerOptions.cpp @@ -77,7 +77,7 @@ void ScreenPlayerOptions::Input( const InputEventPlus &input ) { // apply the game default mods, but not the Profile saved mods GAMESTATE->m_pPlayerState[pn]->ResetToDefaultPlayerOptions( ModsLevel_Preferred ); - + MESSAGEMAN->Broadcast( ssprintf("CancelAllP%i", pn+1) ); for( unsigned r=0; r Date: Sun, 20 Mar 2011 20:50:58 -0500 Subject: [PATCH 034/241] small cleanup/comment --- src/PlayerOptions.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/PlayerOptions.h b/src/PlayerOptions.h index a95523a7a5..8a66d1d758 100644 --- a/src/PlayerOptions.h +++ b/src/PlayerOptions.h @@ -162,9 +162,9 @@ public: /* All floats have a corresponding speed setting, which determines how fast * PlayerOptions::Approach approaches. */ bool m_bSetScrollSpeed; // true if the scroll speed was set by FromString - float m_fTimeSpacing, m_SpeedfTimeSpacing; // instead of Beat spacing - float m_fScrollSpeed, m_SpeedfScrollSpeed; // used if !m_bTimeSpacing - float m_fScrollBPM, m_SpeedfScrollBPM; // used if m_bTimeSpacing + float m_fTimeSpacing, m_SpeedfTimeSpacing; // instead of Beat spacing (CMods, mMods) + float m_fScrollSpeed, m_SpeedfScrollSpeed; // used if !m_bTimeSpacing (xMods) + float m_fScrollBPM, m_SpeedfScrollBPM; // used if m_bTimeSpacing (CMod) float m_fAccels[NUM_ACCELS], m_SpeedfAccels[NUM_ACCELS]; float m_fEffects[NUM_EFFECTS], m_SpeedfEffects[NUM_EFFECTS]; float m_fAppearances[NUM_APPEARANCES],m_SpeedfAppearances[NUM_APPEARANCES]; @@ -189,7 +189,7 @@ public: bool m_bTransforms[NUM_TRANSFORMS]; bool m_bMuteOnError; /** @brief How can the Player fail a song? */ - enum FailType { + enum FailType { FAIL_IMMEDIATE=0, /**< fail immediately when life touches 0 */ FAIL_IMMEDIATE_CONTINUE, /**< Same as above, but allow playing the rest of the song */ FAIL_AT_END, /**< fail if life is at 0 when the song ends */ From d854a993178d4ab466a837a9aea13a2dc5c8e855 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 20 Mar 2011 20:52:56 -0500 Subject: [PATCH 035/241] change how GetNoteSkin binding works --- src/PlayerOptions.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index f67bb13339..da4c144767 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -840,7 +840,15 @@ void PlayerOptions::ResetPrefs( ResetPrefsType type ) class LunaPlayerOptions: public Luna { public: - DEFINE_METHOD( GetNoteSkin, m_sNoteSkin ) + // NoteSkins + static int GetNoteSkin( T *p, lua_State *L ) + { + if( p->m_sNoteSkin.empty() ) + lua_pushstring( L, CommonMetrics::DEFAULT_NOTESKIN_NAME.GetValue() ); + else + lua_pushstring( L, p->m_sNoteSkin ); + return 1; + } static int SetNoteSkin( T *p, lua_State *L ) { if( NOTESKIN->DoesNoteSkinExist(SArg(1)) ) From 7d8e2c33bcbe70207b7215b27eb2cf74d315a918 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 20 Mar 2011 21:25:49 -0500 Subject: [PATCH 036/241] [PlayerOptions] Tons of new Lua bindings. See the Lua documentation for all of them, there's too many to print here. --- Docs/Changelog_sm-ssc.txt | 2 + src/PlayerOptions.cpp | 199 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 9a695ec50c..20b7ecc9cf 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -16,6 +16,8 @@ sm-ssc v1.2.4 | 20110??? 20110320 -------- * [PlayerOptions] Added SetNoteSkin(string) Lua binding. [AJ] +* [PlayerOptions] Tons of new Lua bindings. See the Lua documentation for all + of them, there's too many to print here. [AJ] 20110317 -------- diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index da4c144767..e91dbb8742 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -856,10 +856,209 @@ public: return 0; } + // Speed Mods + static int GetCMod( T *p, lua_State *L ) + { + if( p->m_fTimeSpacing ) + lua_pushnumber( L, p->m_fTimeSpacing ); + else + lua_pushnil(L); + return 1; + } + static int GetXMod( T *p, lua_State *L ) + { + if( !p->m_fTimeSpacing ) + lua_pushnumber( L, p->m_fScrollSpeed ); + else + lua_pushnil(L); + return 1; + } + + // Accel + DEFINE_METHOD( GetBoost, m_fAccels[PlayerOptions::ACCEL_BOOST] ) + DEFINE_METHOD( GetBrake, m_fAccels[PlayerOptions::ACCEL_BRAKE] ) + DEFINE_METHOD( GetWave, m_fAccels[PlayerOptions::ACCEL_WAVE] ) + DEFINE_METHOD( GetExpand, m_fAccels[PlayerOptions::ACCEL_EXPAND] ) + DEFINE_METHOD( GetBoomerang, m_fAccels[PlayerOptions::ACCEL_BOOMERANG] ) + + // Effect + DEFINE_METHOD( GetDrunk, m_fEffects[PlayerOptions::EFFECT_DRUNK] ) // MoonGyuHyuk + DEFINE_METHOD( GetDizzy, m_fEffects[PlayerOptions::EFFECT_DIZZY] ) + DEFINE_METHOD( GetConfusion, m_fEffects[PlayerOptions::EFFECT_CONFUSION] ) + DEFINE_METHOD( GetMini, m_fEffects[PlayerOptions::EFFECT_MINI] ) + DEFINE_METHOD( GetTiny, m_fEffects[PlayerOptions::EFFECT_TINY] ) + DEFINE_METHOD( GetFlip, m_fEffects[PlayerOptions::EFFECT_FLIP] ) + DEFINE_METHOD( GetInvert, m_fEffects[PlayerOptions::EFFECT_INVERT] ) + DEFINE_METHOD( GetTornado, m_fEffects[PlayerOptions::EFFECT_TORNADO] ) + DEFINE_METHOD( GetTipsy, m_fEffects[PlayerOptions::EFFECT_TIPSY] ) + DEFINE_METHOD( GetBumpy, m_fEffects[PlayerOptions::EFFECT_BUMPY] ) + DEFINE_METHOD( GetBeat, m_fEffects[PlayerOptions::EFFECT_BEAT] ) + DEFINE_METHOD( GetXMode, m_fEffects[PlayerOptions::EFFECT_XMODE] ) + DEFINE_METHOD( GetTwirl, m_fEffects[PlayerOptions::EFFECT_TWIRL] ) + DEFINE_METHOD( GetRoll, m_fEffects[PlayerOptions::EFFECT_ROLL] ) + + // Appearance + DEFINE_METHOD( GetHidden, m_fAppearances[PlayerOptions::APPEARANCE_HIDDEN] ) + DEFINE_METHOD( GetHiddenOffset, m_fAppearances[PlayerOptions::APPEARANCE_HIDDEN_OFFSET] ) + DEFINE_METHOD( GetSudden, m_fAppearances[PlayerOptions::APPEARANCE_SUDDEN] ) + DEFINE_METHOD( GetSuddenOffset, m_fAppearances[PlayerOptions::APPEARANCE_SUDDEN_OFFSET] ) + DEFINE_METHOD( GetStealth, m_fAppearances[PlayerOptions::APPEARANCE_STEALTH] ) + DEFINE_METHOD( GetBlink, m_fAppearances[PlayerOptions::APPEARANCE_BLINK] ) + DEFINE_METHOD( GetRandomVanish, m_fAppearances[PlayerOptions::APPEARANCE_RANDOMVANISH] ) + + // Scroll + DEFINE_METHOD( GetReverse, m_fScrolls[PlayerOptions::SCROLL_REVERSE] ) + static int GetReversePercentForColumn( T *p, lua_State *L ) + { + // todo: make sure IArg is within boundaries -aj + lua_pushnumber( L, p->GetReversePercentForColumn(IArg(1)) ); + return 1; + } + DEFINE_METHOD( GetSplit, m_fScrolls[PlayerOptions::SCROLL_SPLIT] ) + DEFINE_METHOD( GetAlternate, m_fScrolls[PlayerOptions::SCROLL_ALTERNATE] ) + DEFINE_METHOD( GetCross, m_fScrolls[PlayerOptions::SCROLL_CROSS] ) + DEFINE_METHOD( GetCentered, m_fScrolls[PlayerOptions::SCROLL_CENTERED] ) + + // Turns + DEFINE_METHOD( GetMirror, m_bTurns[PlayerOptions::TURN_MIRROR] ) + DEFINE_METHOD( GetLeft, m_bTurns[PlayerOptions::TURN_LEFT] ) + DEFINE_METHOD( GetRight, m_bTurns[PlayerOptions::TURN_RIGHT] ) + DEFINE_METHOD( GetShuffle, m_bTurns[PlayerOptions::TURN_SHUFFLE] ) + DEFINE_METHOD( GetSoftShuffle, m_bTurns[PlayerOptions::TURN_SOFT_SHUFFLE] ) + DEFINE_METHOD( GetSuperShuffle, m_bTurns[PlayerOptions::TURN_SUPER_SHUFFLE] ) + + // Transform + DEFINE_METHOD( GetNoHolds, m_bTransforms[PlayerOptions::TRANSFORM_NOHOLDS] ) + DEFINE_METHOD( GetNoRolls, m_bTransforms[PlayerOptions::TRANSFORM_NOROLLS] ) + DEFINE_METHOD( GetNoMines, m_bTransforms[PlayerOptions::TRANSFORM_NOMINES] ) + DEFINE_METHOD( GetLittle, m_bTransforms[PlayerOptions::TRANSFORM_LITTLE] ) + DEFINE_METHOD( GetWide, m_bTransforms[PlayerOptions::TRANSFORM_WIDE] ) + DEFINE_METHOD( GetBig, m_bTransforms[PlayerOptions::TRANSFORM_BIG] ) + DEFINE_METHOD( GetQuick, m_bTransforms[PlayerOptions::TRANSFORM_QUICK] ) + DEFINE_METHOD( GetBMRize, m_bTransforms[PlayerOptions::TRANSFORM_BMRIZE] ) + DEFINE_METHOD( GetSkippy, m_bTransforms[PlayerOptions::TRANSFORM_SKIPPY] ) + DEFINE_METHOD( GetMines, m_bTransforms[PlayerOptions::TRANSFORM_MINES] ) + DEFINE_METHOD( GetAttackMines, m_bTransforms[PlayerOptions::TRANSFORM_ATTACKMINES] ) + DEFINE_METHOD( GetEcho, m_bTransforms[PlayerOptions::TRANSFORM_ECHO] ) + DEFINE_METHOD( GetStomp, m_bTransforms[PlayerOptions::TRANSFORM_STOMP] ) + DEFINE_METHOD( GetPlanted, m_bTransforms[PlayerOptions::TRANSFORM_PLANTED] ) + DEFINE_METHOD( GetFloored, m_bTransforms[PlayerOptions::TRANSFORM_FLOORED] ) + DEFINE_METHOD( GetTwister, m_bTransforms[PlayerOptions::TRANSFORM_TWISTER] ) + DEFINE_METHOD( GetHoldRolls, m_bTransforms[PlayerOptions::TRANSFORM_HOLDROLLS] ) + DEFINE_METHOD( GetNoJumps, m_bTransforms[PlayerOptions::TRANSFORM_NOJUMPS] ) + DEFINE_METHOD( GetNoHands, m_bTransforms[PlayerOptions::TRANSFORM_NOHANDS] ) + DEFINE_METHOD( GetNoLifts, m_bTransforms[PlayerOptions::TRANSFORM_NOLIFTS] ) + DEFINE_METHOD( GetNoFakes, m_bTransforms[PlayerOptions::TRANSFORM_NOFAKES] ) + DEFINE_METHOD( GetNoQuads, m_bTransforms[PlayerOptions::TRANSFORM_NOQUADS] ) + DEFINE_METHOD( GetNoStretch, m_bTransforms[PlayerOptions::TRANSFORM_NOSTRETCH] ) + + // Others + DEFINE_METHOD( GetDark, m_fDark ) + DEFINE_METHOD( GetBlind, m_fBlind ) + DEFINE_METHOD( GetCover, m_fCover ) + DEFINE_METHOD( GetRandomAttacks, m_fRandAttack ) + DEFINE_METHOD( GetSongAttacks, m_fSongAttack ) + DEFINE_METHOD( GetSkew, m_fSkew ) + DEFINE_METHOD( GetPassmark, m_fPassmark ) + DEFINE_METHOD( GetRandomSpeed, m_fRandomSpeed ) + LunaPlayerOptions() { + ADD_METHOD( GetDark ); + // SetDark + ADD_METHOD( GetBlind ); + // SetBlind + ADD_METHOD( GetCover ); + // SetCover + // GetMuteOnError, SetMuteOnError ADD_METHOD( GetNoteSkin ); ADD_METHOD( SetNoteSkin ); + // GetPerspectiveTilt, SetPerspectiveTilt + ADD_METHOD( GetPassmark ); + // SetPassmark + ADD_METHOD( GetRandomAttacks ); + // SetRandomAttacks + ADD_METHOD( GetRandomSpeed ); + // SetRandomSpeed + ADD_METHOD( GetSkew ); + // SetSkew + ADD_METHOD( GetSongAttacks ); + // SetSongAttacks + ADD_METHOD( GetCMod ); + ADD_METHOD( GetXMod ); + + // Accel + ADD_METHOD( GetBoost ); + ADD_METHOD( GetBrake ); + ADD_METHOD( GetWave ); + ADD_METHOD( GetExpand ); + ADD_METHOD( GetBoomerang ); + + // Effect + ADD_METHOD( GetDrunk ); + ADD_METHOD( GetDizzy ); + ADD_METHOD( GetConfusion ); + ADD_METHOD( GetMini ); + ADD_METHOD( GetTiny ); + ADD_METHOD( GetFlip ); + ADD_METHOD( GetInvert ); + ADD_METHOD( GetTornado ); + ADD_METHOD( GetTipsy ); + ADD_METHOD( GetBumpy ); + ADD_METHOD( GetBeat ); + ADD_METHOD( GetXMode ); + ADD_METHOD( GetTwirl ); + ADD_METHOD( GetRoll ); + + // Appearance + ADD_METHOD( GetHidden ); + ADD_METHOD( GetHiddenOffset ); + ADD_METHOD( GetSudden ); + ADD_METHOD( GetSuddenOffset ); + ADD_METHOD( GetStealth ); + ADD_METHOD( GetBlink ); + ADD_METHOD( GetRandomVanish ); + + // Scroll + ADD_METHOD( GetReverse ); + ADD_METHOD( GetReversePercentForColumn ); + ADD_METHOD( GetSplit ); + ADD_METHOD( GetAlternate ); + ADD_METHOD( GetCross ); + ADD_METHOD( GetCentered ); + + // Turns + ADD_METHOD( GetMirror ); + ADD_METHOD( GetLeft ); + ADD_METHOD( GetRight ); + ADD_METHOD( GetShuffle ); + ADD_METHOD( GetSoftShuffle ); + ADD_METHOD( GetSuperShuffle ); + + // Transform + ADD_METHOD( GetNoHolds ); + ADD_METHOD( GetNoRolls ); + ADD_METHOD( GetNoMines ); + ADD_METHOD( GetLittle ); + ADD_METHOD( GetWide ); + ADD_METHOD( GetBig ); + ADD_METHOD( GetQuick ); + ADD_METHOD( GetBMRize ); + ADD_METHOD( GetSkippy ); + ADD_METHOD( GetMines ); + ADD_METHOD( GetAttackMines ); + ADD_METHOD( GetEcho ); + ADD_METHOD( GetStomp ); + ADD_METHOD( GetPlanted ); + ADD_METHOD( GetFloored ); + ADD_METHOD( GetTwister ); + ADD_METHOD( GetHoldRolls ); + ADD_METHOD( GetNoJumps ); + ADD_METHOD( GetNoHands ); + ADD_METHOD( GetNoLifts ); + ADD_METHOD( GetNoFakes ); + ADD_METHOD( GetNoQuads ); + ADD_METHOD( GetNoStretch ); } }; From 226cb92aac292b971ca4a5b60c133e11b9ab5221 Mon Sep 17 00:00:00 2001 From: Flameshadowxeroshin Date: Sun, 20 Mar 2011 21:42:57 -0500 Subject: [PATCH 037/241] prevent possible WAV read hang (thanks to Steve Checkoway) --- src/RageSoundReader_WAV.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RageSoundReader_WAV.cpp b/src/RageSoundReader_WAV.cpp index 19263ce22e..0af1f10e30 100644 --- a/src/RageSoundReader_WAV.cpp +++ b/src/RageSoundReader_WAV.cpp @@ -374,7 +374,7 @@ public: int iFramesToCopy = (m_iBufferAvail-m_iBufferUsed) / iBytesPerFrame; iFramesToCopy = min( iFramesToCopy, (int) (iFrames-iGotFrames) ); int iSamplesToCopy = iFramesToCopy * iSamplesPerFrame; - int iBytesToCopy = iSamplesToCopy * sizeof(int16_t); + int iBytesToCopy = iSamplesToCopy * sizeof(float); memcpy( buf, m_pBuffer+m_iBufferUsed, iBytesToCopy ); m_iBufferUsed += iBytesToCopy; iGotFrames += iFramesToCopy; From 22c302713347b848a72ab01c5831115bfe4fc9e5 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 21 Mar 2011 00:42:30 -0400 Subject: [PATCH 038/241] Reverting recent initialization list attempt. The old code was behaving better...by that I mean not crashing on me. Steve is right: time to use different tools to improve our code. --- src/ScreenGameplay.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 641bae8beb..8280993a27 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -95,14 +95,26 @@ static Preference g_fNetStartOffset( "NetworkStartOffset", -3.0 ); static Preference g_bEasterEggs( "EasterEggs", true ); -PlayerInfo::PlayerInfo(): m_pn(PLAYER_INVALID), m_mp(MultiPlayer_Invalid), - m_bIsDummy(false), m_iDummyIndex(0), m_iAddToDifficulty(0), - m_bPlayerEnabled(false), m_pLifeMeter(NULL), - m_ptextCourseSongNumber(NULL), m_ptextStepsDescription(NULL), - m_pPrimaryScoreDisplay(NULL), m_pSecondaryScoreDisplay(NULL), - m_pPrimaryScoreKeeper(NULL), m_pSecondaryScoreKeeper(NULL), - m_pActiveAttackList(NULL), m_pPlayer(NULL), m_pInventory(NULL), - m_pStepsDisplay(NULL) {} +PlayerInfo::PlayerInfo() +{ + m_pn = PLAYER_INVALID; + m_mp = MultiPlayer_Invalid; + m_bIsDummy = false; + m_iDummyIndex = 0; + m_iAddToDifficulty = 0; + m_pLifeMeter = NULL; + m_ptextCourseSongNumber = NULL; + m_ptextStepsDescription = NULL; + m_pPrimaryScoreDisplay = NULL; + m_pSecondaryScoreDisplay = NULL; + m_pPrimaryScoreKeeper = NULL; + m_pSecondaryScoreKeeper = NULL; + m_ptextPlayerOptions = NULL; + m_pActiveAttackList = NULL; + m_pPlayer = NULL; + m_pInventory = NULL; + m_pStepsDisplay = NULL; +} void PlayerInfo::Load( PlayerNumber pn, MultiPlayer mp, bool bShowNoteField, int iAddToDifficulty ) { From 220e4e168dab8c4c9a1d06432907f360a0dcd23d Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 21 Mar 2011 00:58:56 -0400 Subject: [PATCH 039/241] Re-revert, implement right. Pay attention to your compiler warnings everyone. (And also don't test exclusively in the editor.) --- src/ScreenGameplay.cpp | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 8280993a27..fc34084c53 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -95,26 +95,17 @@ static Preference g_fNetStartOffset( "NetworkStartOffset", -3.0 ); static Preference g_bEasterEggs( "EasterEggs", true ); -PlayerInfo::PlayerInfo() -{ - m_pn = PLAYER_INVALID; - m_mp = MultiPlayer_Invalid; - m_bIsDummy = false; - m_iDummyIndex = 0; - m_iAddToDifficulty = 0; - m_pLifeMeter = NULL; - m_ptextCourseSongNumber = NULL; - m_ptextStepsDescription = NULL; - m_pPrimaryScoreDisplay = NULL; - m_pSecondaryScoreDisplay = NULL; - m_pPrimaryScoreKeeper = NULL; - m_pSecondaryScoreKeeper = NULL; - m_ptextPlayerOptions = NULL; - m_pActiveAttackList = NULL; - m_pPlayer = NULL; - m_pInventory = NULL; - m_pStepsDisplay = NULL; -} +PlayerInfo::PlayerInfo(): m_pn(PLAYER_INVALID), m_mp(MultiPlayer_Invalid), + m_bIsDummy(false), m_iDummyIndex(0), m_iAddToDifficulty(0), + m_bPlayerEnabled(false), m_PlayerStateDummy(), + m_PlayerStageStatsDummy(), m_SoundEffectControl(), + m_vpStepsQueue(), m_asModifiersQueue(), m_pLifeMeter(NULL), + m_ptextCourseSongNumber(NULL), m_ptextStepsDescription(NULL), + m_pPrimaryScoreDisplay(NULL), m_pSecondaryScoreDisplay(NULL), + m_pPrimaryScoreKeeper(NULL), m_pSecondaryScoreKeeper(NULL), + m_ptextPlayerOptions(NULL), m_pActiveAttackList(NULL), + m_NoteData(), m_pPlayer(NULL), m_pInventory(NULL), + m_pStepsDisplay(NULL), m_sprOniGameOver() {} void PlayerInfo::Load( PlayerNumber pn, MultiPlayer mp, bool bShowNoteField, int iAddToDifficulty ) { From 25ed1ef8ea4eaae6b8fd1a0f5c36dc3d6e47ab4f Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 21 Mar 2011 01:40:39 -0400 Subject: [PATCH 040/241] Finish the job here before leak testing. Now...how to remove the leak...? --- src/Font.cpp | 9 +++++---- src/Font.h | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Font.cpp b/src/Font.cpp index fed6ed7835..209158c7cf 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -13,7 +13,8 @@ FontPage::FontPage(): m_iHeight(0), m_iLineSpacing(0), m_fVshift(0), m_iDrawExtraPixelsLeft(0), m_iDrawExtraPixelsRight(0), - m_sTexturePath("") {} + m_FontPageTextures(), m_sTexturePath(""), m_aGlyphs(), + m_iCharToGlyphNo() {} void FontPage::Load( const FontPageSettings &cfg ) { @@ -221,9 +222,9 @@ int Font::GetLineHeightInSourcePixels( const wstring &szLine ) const Font::Font(): m_iRefCount(1), path(""), m_apPages(), m_pDefault(NULL), - m_bRightToLeft(false), m_DefaultStrokeColor(RageColor(0,0,0,0)), - m_sChars("") {} // strokes aren't shown by default, hence the Color. - + m_iCharToGlyph(), m_bRightToLeft(false), + // strokes aren't shown by default, hence the Color. + m_DefaultStrokeColor(RageColor(0,0,0,0)), m_sChars("") {} Font::~Font() { Unload(); diff --git a/src/Font.h b/src/Font.h index 4242693a34..d57a6b5eae 100644 --- a/src/Font.h +++ b/src/Font.h @@ -84,7 +84,9 @@ struct FontPageSettings m_iDefaultWidth(-1), m_iAdvanceExtraPixels(1), m_fScaleAllWidthsBy(1), - m_sTextureHints("default") + m_sTextureHints("default"), + CharToGlyphNo(), + m_mapGlyphWidths() { } /** From 04300bb48c715f949eff4eb7b2dbc289d9eafcb9 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 21 Mar 2011 02:10:10 -0400 Subject: [PATCH 041/241] Try to respect hungarian notation better. --- src/Font.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Font.cpp b/src/Font.cpp index 209158c7cf..4534f76d09 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -713,8 +713,8 @@ void Font::Load( const RString &sIniPath, RString sChars ) for(unsigned i = 0; i < ImportList.size(); ++i) { - RString fPath = THEME->GetPathF( "", ImportList[i], true ); - if( fPath == "" ) + RString sPath = THEME->GetPathF( "", ImportList[i], true ); + if( sPath == "" ) { RString s = ssprintf( "Font \"%s\" imports a font \"%s\" that doesn't exist", sIniPath.c_str(), ImportList[i].c_str() ); Dialog::OK( s ); @@ -722,7 +722,7 @@ void Font::Load( const RString &sIniPath, RString sChars ) } Font subfont; - subfont.Load(fPath,""); + subfont.Load(sPath,""); MergeFont(subfont); } } From 1e63b898f287c09b67620533eae0c2da7f0cc2f6 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Tue, 22 Mar 2011 22:18:25 -0400 Subject: [PATCH 042/241] Fix a memory leak. --- src/MusicWheelItem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index 659de68a4d..df198ef22a 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -126,6 +126,7 @@ MusicWheelItem::MusicWheelItem( const MusicWheelItem &cpy ): WheelItemBase( cpy ), GRADES_SHOW_MACHINE( cpy.GRADES_SHOW_MACHINE ), m_TextBanner( cpy.m_TextBanner ), + m_pTextSectionCount( cpy.m_pTextSectionCount ), m_WheelNotifyIcon( cpy.m_WheelNotifyIcon ) { FOREACH_ENUM( MusicWheelItemType, i ) @@ -158,7 +159,7 @@ MusicWheelItem::MusicWheelItem( const MusicWheelItem &cpy ): } } - m_pTextSectionCount = new BitmapText( *cpy.m_pTextSectionCount ); + //m_pTextSectionCount = new BitmapText( *cpy.m_pTextSectionCount ); this->AddChild( m_pTextSectionCount ); this->AddChild( &m_WheelNotifyIcon ); From bdf1b8687086f42b854735a3e402f86b2e051169 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Tue, 22 Mar 2011 22:38:12 -0400 Subject: [PATCH 043/241] Add another to .hgignore. We may want to keep theme UsefPrefs to one directory, not two. --- .hgignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgignore b/.hgignore index d44806c51b..ea6889df61 100644 --- a/.hgignore +++ b/.hgignore @@ -60,6 +60,7 @@ GtkModule.so ver.cpp lib*_link.a Data/UserPrefs +Data/uPrefs Data/GamePrefs/*.cfg PBProject/Hardware.plist Themes/pump From 35fb11c7643f9ad41949b7a6d58ec633d620d634 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Tue, 22 Mar 2011 22:39:40 -0400 Subject: [PATCH 044/241] More effective-to-some fixes. --- src/MusicWheelItem.cpp | 14 ++++++-------- src/MusicWheelItem.h | 7 +++++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index df198ef22a..3ecf7d81d3 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -33,14 +33,12 @@ static const char *MusicWheelItemTypeNames[] = { }; XToString( MusicWheelItemType ); -MusicWheelItemData::MusicWheelItemData( WheelItemDataType type, Song* pSong, RString sSectionName, Course* pCourse, RageColor color, int iSectionCount ): - WheelItemBaseData(type, sSectionName, color) -{ - m_pSong = pSong; - m_pCourse = pCourse; - m_Flags = WheelNotifyIcon::Flags(); - m_iSectionCount = iSectionCount; -} +MusicWheelItemData::MusicWheelItemData( WheelItemDataType type, Song* pSong, + RString sSectionName, Course* pCourse, + RageColor color, int iSectionCount ): + WheelItemBaseData(type, sSectionName, color), + m_pCourse(pCourse), m_pSong(pSong), m_Flags(WheelNotifyIcon::Flags()), + m_iSectionCount(iSectionCount), m_sLabel(""), m_pAction() {} MusicWheelItem::MusicWheelItem( RString sType ): WheelItemBase( sType ) diff --git a/src/MusicWheelItem.h b/src/MusicWheelItem.h index 1d83357b5e..6155e24d70 100644 --- a/src/MusicWheelItem.h +++ b/src/MusicWheelItem.h @@ -62,8 +62,11 @@ private: struct MusicWheelItemData : public WheelItemBaseData { - MusicWheelItemData() : m_iSectionCount(0) { } - MusicWheelItemData( WheelItemDataType type, Song* pSong, RString sSectionName, Course* pCourse, RageColor color, int iSectionCount ); + MusicWheelItemData() : m_pCourse(NULL), m_pSong(NULL), m_Flags(), + m_iSectionCount(0), m_sLabel(""), m_pAction() { } + MusicWheelItemData( WheelItemDataType type, Song* pSong, + RString sSectionName, Course* pCourse, + RageColor color, int iSectionCount ); Course* m_pCourse; Song* m_pSong; From aab30fbfa1e1e8099a49137d24636dc70d3909ea Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Wed, 23 Mar 2011 09:59:39 +0700 Subject: [PATCH 045/241] Remove trailing " [" from common substring when loading BMS files. --- src/NotesLoaderBMS.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp index 9dfaf410bb..d90a368591 100644 --- a/src/NotesLoaderBMS.cpp +++ b/src/NotesLoaderBMS.cpp @@ -1104,6 +1104,18 @@ bool BMSLoader::LoadFromDir( const RString &sDir, Song &out ) map idToKeysoundIndex; ReadGlobalTags( aBMSData[iMainDataIndex], out, sigAdjustments, idToKeysoundIndex ); + // The brackets before the difficulty are in common substring, so remove them if it's found. + if( commonSubstring.size() > 2 && commonSubstring[commonSubstring.size() - 2] == ' ' ) + { + switch( commonSubstring[commonSubstring.size() - 1] ) + { + case '[': + case '(': + case '<': + commonSubstring = commonSubstring.substr(0, commonSubstring.size() - 2); + } + } + // Override what that global tag said about the title if we have a good substring. // Prevents clobbering and catches "MySong (7keys)" / "MySong (Another) (7keys)" // Also catches "MySong (7keys)" / "MySong (14keys)" From 36f728d88e6378c798df4a76a2a8637d2f3c3108 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 19:22:11 -0400 Subject: [PATCH 046/241] Start of a new branch "warps". Ensure that all warps are forward facing for now. --- src/TimingData.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TimingData.h b/src/TimingData.h index 655a9087fb..6e9dec85b1 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -328,8 +328,8 @@ struct WarpSegment * @param s the starting row of this segment. * @param r the row to warp to. */ - WarpSegment( int s, int r ): m_iStartRow(max(0, s)), - m_fWarpBeats(max(0, NoteRowToBeat(r))) {} + WarpSegment( int s, int r ): m_iStartRow(max(0, (s < r ? s : r)), + m_fWarpBeats(max(0, NoteRowToBeat((r > s ? r : s)))) {} /** * @brief Creates a Warp Segment with the specified starting row and beat to warp to. * @param s the starting row of this segment. From 5287e730814445b2505b08a9fac5987933719332 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 19:36:43 -0400 Subject: [PATCH 047/241] [warps] ...yeah, whoops. --- src/TimingData.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TimingData.h b/src/TimingData.h index 6e9dec85b1..c03d67965b 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -328,7 +328,7 @@ struct WarpSegment * @param s the starting row of this segment. * @param r the row to warp to. */ - WarpSegment( int s, int r ): m_iStartRow(max(0, (s < r ? s : r)), + WarpSegment( int s, int r ): m_iStartRow(max(0, (s < r ? s : r))), m_fWarpBeats(max(0, NoteRowToBeat((r > s ? r : s)))) {} /** * @brief Creates a Warp Segment with the specified starting row and beat to warp to. From f6acec176e0ec141373f6ec6695f1b9c1481c126 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 19:44:47 -0400 Subject: [PATCH 048/241] [warps] Warnings are getting in my way... --- src/LuaManager.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/LuaManager.cpp b/src/LuaManager.cpp index 65796fcbac..e61352d9c0 100644 --- a/src/LuaManager.cpp +++ b/src/LuaManager.cpp @@ -864,8 +864,8 @@ void LuaHelpers::ParseCommandList( Lua *L, const RString &sCommands, const RStri FOREACH_CONST( Command, cmds.v, c ) { const Command& cmd = (*c); - RString sName = cmd.GetName(); - s << "\tself:" << sName << "("; + RString local_sName = cmd.GetName(); + s << "\tself:" << local_sName << "("; for( unsigned i=1; i Date: Thu, 24 Mar 2011 19:47:04 -0400 Subject: [PATCH 049/241] [warps] More setting up. --- src/NotesLoaderSSC.h | 3 +++ src/Song.cpp | 2 +- src/Song.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/NotesLoaderSSC.h b/src/NotesLoaderSSC.h index ae8f00bc9c..ff44a23cb5 100644 --- a/src/NotesLoaderSSC.h +++ b/src/NotesLoaderSSC.h @@ -21,7 +21,10 @@ enum SSCLoadingStates NUM_SSCLoadingStates /**< The number of states used. */ }; +/** @brief The version where fakes started to be used as a radar category. */ const float VERSION_RADAR_FAKE = 0.53f; +/** @brief The version where WarpSegments started to be utilized. */ +const float VERSION_WARP_SEGMENT = 0.56f; /** * @brief The SSCLoader handles all of the parsing needed for .ssc files. diff --git a/src/Song.cpp b/src/Song.cpp index ff686d6e25..b9d15c3ea8 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -41,7 +41,7 @@ * @brief The internal version of the cache for StepMania. * * Increment this value to invalidate the current cache. */ -const int FILE_CACHE_VERSION = 166; +const int FILE_CACHE_VERSION = 167; /** @brief How long does a song sample last by default? */ const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f; diff --git a/src/Song.h b/src/Song.h index 74d1159b73..4e90fe3c18 100644 --- a/src/Song.h +++ b/src/Song.h @@ -17,7 +17,7 @@ struct lua_State; struct BackgroundChange; /** @brief The version of the .ssc file format. */ -const static float STEPFILE_VERSION_NUMBER = 0.55f; +const static float STEPFILE_VERSION_NUMBER = 0.56f; /** @brief How many edits for this song can each profile have? */ const int MAX_EDITS_PER_SONG_PER_PROFILE = 5; From 42d73895abff35ecc6db916895930240f7ae6644 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 19:51:46 -0400 Subject: [PATCH 050/241] [warps] Prepare the writer. --- src/NotesWriterSSC.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/NotesWriterSSC.cpp b/src/NotesWriterSSC.cpp index c736104ae8..3f6acabab2 100644 --- a/src/NotesWriterSSC.cpp +++ b/src/NotesWriterSSC.cpp @@ -144,7 +144,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) } f.PutLine( ";" ); - /* + f.Write( "#WARPS:" ); for( unsigned i=0; i asWarpValues; + for( unsigned i=0; i asTimeSigValues; FOREACH_CONST( TimeSignatureSegment, in.m_Timing.m_vTimeSignatureSegments, iter ) From 9d456125a1b27026b5e95fe5485df3a25572e38e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 19:58:36 -0400 Subject: [PATCH 051/241] [warps] Load the warps. Now, the fun part...implementation. --- src/NotesLoaderSSC.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/NotesLoaderSSC.cpp b/src/NotesLoaderSSC.cpp index 3901ecde6e..6a98aa0acd 100644 --- a/src/NotesLoaderSSC.cpp +++ b/src/NotesLoaderSSC.cpp @@ -485,6 +485,35 @@ bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCach } } } + + else if( sValueName=="WARPS" ) + { + vector arrayWarpExpressions; + split( sParams[1], ",", arrayWarpExpressions ); + + for( unsigned b=0; b arrayWarpValues; + split( arrayWarpExpressions[b], "=", arrayWarpValues ); + // XXX: Hard to tell which file caused this. + if( arrayWarpValues.size() != 2 ) + { + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", + sValueName.c_str(), arrayWarpExpressions[b].c_str() ); + continue; + } + + const float fBeat = StringToFloat( arrayWarpValues[0] ); + const float fNewBeat = StringToFloat( arrayWarpValues[1] ); + + if(fNewBeat > fBeat) + out.m_Timing.AddWarpSegment( WarpSegment(BeatToNoteRow(fBeat), fNewBeat) ); + else + { + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid Warp at beat %f, BPM %f.", fBeat, fNewBeat ); + } + } + } else if( sValueName=="TIMESIGNATURES" ) { From 35a880f2ee43ba4b5e67875e3d2699b77b99fd59 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 20:09:20 -0400 Subject: [PATCH 052/241] [warps] Restore this function for consistency. --- src/Song.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Song.h b/src/Song.h index 4e90fe3c18..d9b1d18c1f 100644 --- a/src/Song.h +++ b/src/Song.h @@ -307,7 +307,7 @@ public: void AddBPMSegment( const BPMSegment &seg ) { m_Timing.AddBPMSegment( seg ); } void AddStopSegment( const StopSegment &seg ) { m_Timing.AddStopSegment( seg ); } - //void AddWarpSegment( const WarpSegment &seg ) { m_Timing.AddWarpSegment( seg ); } + void AddWarpSegment( const WarpSegment &seg ) { m_Timing.AddWarpSegment( seg ); } void AddBackgroundChange( BackgroundLayer blLayer, BackgroundChange seg ); void AddForegroundChange( BackgroundChange seg ); void AddLyricSegment( LyricSegment seg ); From e592be406b39d8dc5459f30784b673db15b06bba Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 20:21:43 -0400 Subject: [PATCH 053/241] [warps] More prep work, add lua binding. --- src/TimingData.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 9704ac00c3..7eb82e36eb 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -683,6 +683,14 @@ void TimingData::InsertRows( int iStartRow, int iRowsToAdd ) stop.m_iStartRow += iRowsToAdd; } + for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) + { + WarpSegment &warp = m_WarpSegments[i]; + if (warp.m_iStartRow < iStartRow ) + continue; + warp.m_iStartRow += iRowsToAdd; + } + for( unsigned i = 0; i < m_vTimeSignatureSegments.size(); i++ ) { TimeSignatureSegment &time = m_vTimeSignatureSegments[i]; @@ -764,6 +772,23 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete ) stop.m_iStartRow -= iRowsToDelete; } + for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) + { + WarpSegment &warp = m_WarpSegments[i]; + + if( warp.m_iStartRow < iStartRow ) + continue; + + if( warp.m_iStartRow < iStartRow+iRowsToDelete ) + { + m_WarpSegments.erase( m_WarpSegments.begin()+i, m_WarpSegments.begin()+i+1 ); + --i; + continue; + } + + warp.m_iStartRow -= iRowsToDelete; + } + for( unsigned i = 0; i < m_vTimeSignatureSegments.size(); i++ ) { TimeSignatureSegment &time = m_vTimeSignatureSegments[i]; @@ -891,6 +916,7 @@ class LunaTimingData: public Luna public: static int HasStops( T* p, lua_State *L ) { lua_pushboolean(L, p->HasStops()); return 1; } static int HasBPMChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasBpmChanges()); return 1; } + static int HasWarps( T* p, lua_State *L ) { lua_pushboolean(L, p->HasWarps()); return 1; } static int GetStops( T* p, lua_State *L ) { vector vStops; @@ -965,6 +991,7 @@ public: { ADD_METHOD( HasStops ); ADD_METHOD( HasBPMChanges ); + ADD_METHOD( HasWarps ); ADD_METHOD( GetStops ); ADD_METHOD( GetDelays ); ADD_METHOD( GetBPMs ); From 621dfa050ee97700edbeb3f5e77a8e7768ce4478 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Thu, 24 Mar 2011 20:41:35 -0400 Subject: [PATCH 054/241] [warps] Prepare text code. --- Themes/_fallback/metrics.ini | 3 +++ src/NoteField.cpp | 33 +++++++++++++++++++++++++++++++++ src/NoteField.h | 1 + 3 files changed, 37 insertions(+) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index b37ce668a6..5fdc7704e8 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -963,6 +963,7 @@ RoutineNoteSkinP2=RoutineSkinP2() BPMColor=color("1,0,0,1") StopColor=color("0.8,0.8,0,1") DelayColor=color("0,0.8,0.8,1") +WarpColor=color("1,0,0.5,1") TimeSignatureColor=color("1,0.55,0,1") TickcountColor=color("0,1,0,1") ComboColor=color("0.55,1,0,1") @@ -970,6 +971,7 @@ ComboColor=color("0.55,1,0,1") BPMIsLeftSide=true StopIsLeftSide=true DelayIsLeftSide=true +WarpIsLeftSide=false TimeSignatureIsLeftSide=true TickcountIsLeftSide=false ComboIsLeftSide=false @@ -977,6 +979,7 @@ ComboIsLeftSide=false BPMOffsetX=60 StopOffsetX=10 DelayOffsetX=10 +WarpOffsetX=60 TimeSignatureOffsetX=30 TickcountOffsetX=10 ComboOffsetX=30 diff --git a/src/NoteField.cpp b/src/NoteField.cpp index d809cf7242..08d86b9441 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -422,18 +422,21 @@ void NoteField::DrawAreaHighlight( int iStartBeat, int iEndBeat ) static ThemeMetric BPM_COLOR ( "NoteField", "BPMColor" ); static ThemeMetric STOP_COLOR ( "NoteField", "StopColor" ); static ThemeMetric DELAY_COLOR ( "NoteField", "DelayColor" ); +static ThemeMetric WARP_COLOR ( "NoteField", "WarpColor" ); static ThemeMetric TIME_SIGNATURE_COLOR ( "NoteField", "TimeSignatureColor" ); static ThemeMetric TICKCOUNT_COLOR ( "NoteField", "TickcountColor" ); static ThemeMetric COMBO_COLOR ( "NoteField", "ComboColor" ); static ThemeMetric BPM_IS_LEFT_SIDE ( "NoteField", "BPMIsLeftSide" ); static ThemeMetric STOP_IS_LEFT_SIDE ( "NoteField", "StopIsLeftSide" ); static ThemeMetric DELAY_IS_LEFT_SIDE ( "NoteField", "DelayIsLeftSide" ); +static ThemeMetric WARP_IS_LEFT_SIDE ( "NoteField", "WarpIsLeftSide" ); static ThemeMetric TIME_SIGNATURE_IS_LEFT_SIDE ( "NoteField", "TimeSignatureIsLeftSide" ); static ThemeMetric TICKCOUNT_IS_LEFT_SIDE ( "NoteField", "TickcountIsLeftSide" ); static ThemeMetric COMBO_IS_LEFT_SIDE ( "NoteField", "ComboIsLeftSide" ); static ThemeMetric BPM_OFFSETX ( "NoteField", "BPMOffsetX" ); static ThemeMetric STOP_OFFSETX ( "NoteField", "StopOffsetX" ); static ThemeMetric DELAY_OFFSETX ( "NoteField", "DelayOffsetX" ); +static ThemeMetric WARP_OFFSETX ( "NoteField", "WarpOffsetX" ); static ThemeMetric TIME_SIGNATURE_OFFSETX ( "NoteField", "TimeSignatureOffsetX" ); static ThemeMetric TICKCOUNT_OFFSETX ( "NoteField", "TickcountOffsetX" ); static ThemeMetric COMBO_OFFSETX ( "NoteField", "ComboOffsetX" ); @@ -481,6 +484,23 @@ void NoteField::DrawFreezeText( const float fBeat, const float fSecs, const floa m_textMeasureNumber.Draw(); } +void NoteField::DrawWarpText( const float fBeat, const float fNewBeat ) +{ + const float fYOffset = ArrowEffects::GetYOffset( m_pPlayerState, 0, fBeat ); + const float fYPos = ArrowEffects::GetYPos( m_pPlayerState, 0, fYOffset, m_fYReverseOffsetPixels ); + const float fZoom = ArrowEffects::GetZoom( m_pPlayerState ); + const float xBase = GetWidth()/2.f; + const float xOffset = WARP_OFFSETX * fZoom; + + m_textMeasureNumber.SetZoom( fZoom ); + m_textMeasureNumber.SetHorizAlign( WARP_IS_LEFT_SIDE ? align_right : align_left ); + m_textMeasureNumber.SetDiffuse( WARP_COLOR ); + m_textMeasureNumber.SetGlow( RageColor(1,1,1,RageFastCos(RageTimer::GetTimeSinceStartFast()*2)/2+0.5f) ); + m_textMeasureNumber.SetText( ssprintf("%.3f", fNewBeat) ); + m_textMeasureNumber.SetXY( (WARP_IS_LEFT_SIDE ? -xBase - xOffset : xBase + xOffset), fYPos ); + m_textMeasureNumber.Draw(); +} + void NoteField::DrawTimeSignatureText( const float fBeat, int iNumerator, int iDenominator ) { const float fYOffset = ArrowEffects::GetYOffset( m_pPlayerState, 0, fBeat ); @@ -770,6 +790,19 @@ void NoteField::DrawPrimitives() DrawFreezeText( fBeat, aStopSegments[i].m_fStopSeconds, aStopSegments[i].m_bDelay ); } } + + // Warp text + const vector &aWarpSegments = GAMESTATE->m_pCurSong->m_Timing.m_WarpSegments; + for( unsigned i=0; i= iFirstRowToDraw && + aWarpSegments[i].m_iStartRow <= iLastRowToDraw) + { + float fBeat = NoteRowToBeat(aWarpSegments[i].m_iStartRow); + if( IS_ON_SCREEN(fBeat) ) + DrawWarpText( fBeat, aWarpSegments[i].m_fWarpBeats ); + } + } // Time Signature text const vector &vTimeSignatureSegments = GAMESTATE->m_pCurSong->m_Timing.m_vTimeSignatureSegments; diff --git a/src/NoteField.h b/src/NoteField.h index 0c4f03c990..08a83e11aa 100644 --- a/src/NoteField.h +++ b/src/NoteField.h @@ -57,6 +57,7 @@ protected: void DrawAreaHighlight( int iStartBeat, int iEndBeat ); void DrawBPMText( const float fBeat, const float fBPM ); void DrawFreezeText( const float fBeat, const float fBPM, const float bDelay ); + void DrawWarpText( const float fBeat, const float fNewBeat ); void DrawTimeSignatureText( const float fBeat, int iNumerator, int iDenominator ); void DrawTickcountText( const float fBeat, int iTicks ); void DrawComboText( const float fBeat, int iCombo ); From db429e11cc44ff17c58cc8ed7872b961e323a8d2 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 00:54:33 -0400 Subject: [PATCH 055/241] [warps] View the list. 1) Add functions similar to the other Segments. 2) Use a better named member variable. 3) TimingData cleanup. --- src/NoteField.cpp | 2 +- src/NotesWriterSSC.cpp | 2 +- src/TimingData.cpp | 112 ++++++++++++++++++++++++++++------------- src/TimingData.h | 64 ++++++++++++++++++----- 4 files changed, 130 insertions(+), 50 deletions(-) diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 08d86b9441..241c782310 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -800,7 +800,7 @@ void NoteField::DrawPrimitives() { float fBeat = NoteRowToBeat(aWarpSegments[i].m_iStartRow); if( IS_ON_SCREEN(fBeat) ) - DrawWarpText( fBeat, aWarpSegments[i].m_fWarpBeats ); + DrawWarpText( fBeat, aWarpSegments[i].m_fEndBeat ); } } diff --git a/src/NotesWriterSSC.cpp b/src/NotesWriterSSC.cpp index 3f6acabab2..36c170b475 100644 --- a/src/NotesWriterSSC.cpp +++ b/src/NotesWriterSSC.cpp @@ -150,7 +150,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) { const WarpSegment &ws = out.m_Timing.m_WarpSegments[i]; - f.PutLine( ssprintf( "%.6f=%.6f", NoteRowToBeat(ws.m_iStartRow), ws.m_fWarpBeats ) ); + f.PutLine( ssprintf( "%.6f=%.6f", NoteRowToBeat(ws.m_iStartRow), ws.m_fEndBeat ) ); if( i != out.m_Timing.m_WarpSegments.size()-1 ) f.Write( "," ); } diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 7eb82e36eb..a8eaaf2704 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -150,12 +150,30 @@ void TimingData::SetTimeSignatureDenominatorAtRow( int iRow, int iDenominator ) SetTimeSignatureAtRow( iRow, GetTimeSignatureSegmentAtBeat( NoteRowToBeat( iRow ) ).m_iNumerator, iDenominator ); } -/* -void TimingData::SetWarpAtRow( int iRowAt, float fLengthBeats ) +void TimingData::SetWarpAtRow( int iRow, float fNew ) { - // todo: code this -aj + unsigned i; + for( i=0; i 0 && NoteRowToBeat(iRow) < fNew; + if( i == m_WarpSegments.size() ) + { + if( valid ) + { + AddWarpSegment( WarpSegment(iRow, fNew) ); + } + } + else + { + if( valid ) + { + m_WarpSegments[i].m_fEndBeat = fNew; + } + else + m_WarpSegments.erase( m_WarpSegments.begin()+i, m_WarpSegments.begin()+i+1 ); + } } -*/ /* Change an existing Tickcount segment, merge identical segments together or insert a new one. */ void TimingData::SetTickcountAtRow( int iRow, int iTicks ) @@ -229,13 +247,13 @@ int TimingData::GetComboAtRow( int iNoteRow ) const return m_ComboSegments[GetComboSegmentIndexAtRow( iNoteRow )].m_iCombo; } -int TimingData::GetWarpToRow( int iWarpBeginRow ) const +float TimingData::GetWarpAtRow( int iWarpRow ) const { for( unsigned i=0; i iNoteRow ) break; - return (int)i; + return static_cast(i); } int TimingData::GetStopSegmentIndexAtRow( int iNoteRow, bool bDelay ) const @@ -308,16 +326,50 @@ int TimingData::GetStopSegmentIndexAtRow( int iNoteRow, bool bDelay ) const if( s.m_iStartRow > iNoteRow && s.m_bDelay == bDelay ) break; } - return (int)i; + return static_cast(i); +} + +int TimingData::GetWarpSegmentIndexAtRow( int iNoteRow ) const +{ + unsigned i; + for( i=0; i iNoteRow ) + break; + } + return static_cast(i); } int TimingData::GetTimeSignatureSegmentIndexAtRow( int iRow ) const { - int i; - for (i=0; i < (int)(m_vTimeSignatureSegments.size()) - 1; i++ ) + unsigned i; + for (i=0; i < m_vTimeSignatureSegments.size() - 1; i++ ) if( m_vTimeSignatureSegments[i+1].m_iStartRow > iRow ) break; - return i; + return static_cast(i); +} + +int TimingData::GetComboSegmentIndexAtRow( int iRow ) const +{ + unsigned i; + for( i=0; i iRow ) + break; + } + return static_cast(i); +} + +BPMSegment& TimingData::GetBPMSegmentAtRow( int iNoteRow ) +{ + static BPMSegment empty; + if( m_BPMSegments.empty() ) + return empty; + + int i = GetBPMSegmentIndexAtRow( iNoteRow ); + return m_BPMSegments[i]; } TimeSignatureSegment& TimingData::GetTimeSignatureSegmentAtRow( int iRow ) @@ -339,28 +391,6 @@ int TimingData::GetTimeSignatureDenominatorAtRow( int iRow ) return GetTimeSignatureSegmentAtRow( iRow ).m_iDenominator; } -int TimingData::GetComboSegmentIndexAtRow( int iRow ) const -{ - unsigned i; - for( i=0; i iRow ) - break; - } - return (int)i; -} - -BPMSegment& TimingData::GetBPMSegmentAtRow( int iNoteRow ) -{ - static BPMSegment empty; - if( m_BPMSegments.empty() ) - return empty; - - int i = GetBPMSegmentIndexAtRow( iNoteRow ); - return m_BPMSegments[i]; -} - ComboSegment& TimingData::GetComboSegmentAtRow( int iRow ) { unsigned i; @@ -380,6 +410,16 @@ StopSegment& TimingData::GetStopSegmentAtRow( int iNoteRow, bool bDelay ) return m_StopSegments[i]; } +WarpSegment& TimingData::GetWarpSegmentAtRow( int iRow ) +{ + static WarpSegment empty; + if( m_WarpSegments.empty() ) + return empty; + + int i = GetWarpSegmentIndexAtRow( iRow ); + return m_WarpSegments[i]; +} + int TimingData::GetTickcountSegmentIndexAtRow( int iRow ) const { int i; @@ -478,7 +518,7 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float */ // the freeze segment is <= current time - //fElapsedTime -= m_WarpSegments[j].m_fWarpBeats; + //fElapsedTime -= m_WarpSegments[j].m_fEndBeat; // this warp lies within this BPMSegment. /* @@ -492,7 +532,7 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float bFreezeOut = false; bDelayOut = false; iWarpBeginOut = m_WarpSegments[j].m_iStartRow; - fWarpLengthOut = m_WarpSegments[j].m_fWarpBeats; + fWarpLengthOut = m_WarpSegments[j].m_fEndBeat; return; } */ diff --git a/src/TimingData.h b/src/TimingData.h index c03d67965b..b2300d61a1 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -322,21 +322,21 @@ struct WarpSegment * * It is best to override the values as soon as possible. */ - WarpSegment() : m_iStartRow(-1), m_fWarpBeats(-1) { } + WarpSegment() : m_iStartRow(-1), m_fEndBeat(-1) { } /** * @brief Creates a Warp Segment with the specified starting row and row to warp to. * @param s the starting row of this segment. * @param r the row to warp to. */ WarpSegment( int s, int r ): m_iStartRow(max(0, (s < r ? s : r))), - m_fWarpBeats(max(0, NoteRowToBeat((r > s ? r : s)))) {} + m_fEndBeat(max(0, NoteRowToBeat((r > s ? r : s)))) {} /** * @brief Creates a Warp Segment with the specified starting row and beat to warp to. * @param s the starting row of this segment. * @param b the beat to warp to. */ WarpSegment( int s, float b ): m_iStartRow(max(0, s)), - m_fWarpBeats(max(0, b)) {} + m_fEndBeat(max(0, b)) {} /** * @brief The row in which the WarpSegment activates. */ @@ -344,7 +344,7 @@ struct WarpSegment /** * @brief The beat to warp to. */ - float m_fWarpBeats; + float m_fEndBeat; /** * @brief Compares two WarpSegments to see if they are equal to each other. * @param other the other WarpSegment to compare to. @@ -353,7 +353,7 @@ struct WarpSegment bool operator==( const WarpSegment &other ) const { COMPARE( m_iStartRow ); - COMPARE( m_fWarpBeats ); + COMPARE( m_fEndBeat ); return true; } /** @@ -370,7 +370,7 @@ struct WarpSegment bool operator<( const WarpSegment &other ) const { return m_iStartRow < other.m_iStartRow || - ( m_iStartRow == other.m_iStartRow && m_fWarpBeats < other.m_fWarpBeats ); + ( m_iStartRow == other.m_iStartRow && m_fEndBeat < other.m_fEndBeat ); } /** * @brief Compares two WarpSegments to see if one is less than or equal to the other. @@ -875,19 +875,59 @@ public: * @param seg the new TimeSignatureSegment. */ void AddTimeSignatureSegment( const TimeSignatureSegment &seg ); - /** - * @brief Determine the row to warp to. - * @param iWarpBeginRow The row you start on. - * @return the row you warp to. + * @brief Determine the beat to warp to. + * @param iRow The row you start on. + * @return the beat you warp to. */ - int GetWarpToRow( int iWarpBeginRow ) const; + float GetWarpAtRow( int iRow ) const; + /** + * @brief Determine the beat to warp to. + * @param fBeat The beat you start on. + * @return the beat you warp to. + */ + float GetWarpAtBeat( float fBeat ) const { return GetWarpAtRow( BeatToNoteRow( fBeat ) ); } + /** + * @brief Set the beat to warp to given a starting row. + * @param iRow The row to start on. + * @param fNew The destination beat. + */ + void SetWarpAtRow( int iRow, float fNew ); + /** + * @brief Set the beat to warp to given a starting beat. + * @param fBeat The beat to start on. + * @param fNew The destination beat. + */ + void SetWarpAtBeat( float fBeat, float fNew ) { SetWarpAtRow( BeatToNoteRow( fBeat ), fNew ); } + /** + * @brief Retrieve the WarpSegment at the specified row. + * @param iRow the row to focus on. + * @return the WarpSegment in question. + */ + WarpSegment& GetWarpSegmentAtRow( int iRow ); + /** + * @brief Retrieve the WarpSegment at the specified beat. + * @param fBeat the beat to focus on. + * @return the WarpSegment in question. + */ + WarpSegment& GetWarpSegmentAtBeat( float fBeat ) { return GetWarpSegmentAtRow( BeatToNoteRow( fBeat ) ); } + /** + * @brief Retrieve the index of the WarpSegment at the specified row. + * @param iRow the row to focus on. + * @return the index in question. + */ + int GetWarpSegmentIndexAtRow( int iRow ) const; + /** + * @brief Retrieve the index of the WarpSegment at the specified beat. + * @param fBeat the beat to focus on. + * @return the index in question. + */ + int GetWarpSegmentIndexAtBeat( float fBeat ) const { return GetWarpSegmentIndexAtRow( BeatToNoteRow( fBeat ) ); } /** * @brief Add the WarpSegment to the TimingData. * @param seg the new WarpSegment. */ void AddWarpSegment( const WarpSegment &seg ); - /** * @brief Retrieve the Tickcount at the given row. * @param iNoteRow the row in question. From 92e3ab338d7f64fa13a66d90bbe39c8b5bc677e7 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 01:52:14 -0400 Subject: [PATCH 056/241] [warps] More consistent naming. Now to make changes... --- src/GameState.cpp | 17 +++++++++++------ src/GameState.h | 5 +++-- src/Player.cpp | 12 ++++++------ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/GameState.cpp b/src/GameState.cpp index c1f5b0b0f4..7bceea64db 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -897,7 +897,7 @@ void GameState::ResetMusicStatistics() m_bFreeze = false; m_bDelay = false; m_iWarpBeginRow = -1; // Set to -1 because some song may want to warp to row 0. -aj - m_fWarpLength = -1; // Set when a warp is encountered. also see above. -aj + m_fWarpDestination = -1; // Set when a warp is encountered. also see above. -aj m_fMusicSecondsVisible = 0; m_fSongBeatVisible = 0; Actor::SetBGMTime( 0, 0, 0, 0 ); @@ -943,7 +943,7 @@ void GameState::ResetStageStatistics() } static Preference g_fVisualDelaySeconds( "VisualDelaySeconds", 0.0f ); -// todo: modify for warps -aj + void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &timing, const RageTimer ×tamp ) { if( !timestamp.IsZero() ) @@ -957,16 +957,21 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti LOG->Trace( ssprintf("[GameState::UpdateSongPosition] cur BPS = %f, fPositionSeconds = %f",m_fCurBPS,fPositionSeconds) ); */ - timing.GetBeatAndBPSFromElapsedTime( fPositionSeconds, m_fSongBeat, m_fCurBPS, m_bFreeze, m_bDelay, m_iWarpBeginRow, m_fWarpLength ); + timing.GetBeatAndBPSFromElapsedTime( fPositionSeconds, m_fSongBeat, m_fCurBPS, m_bFreeze, m_bDelay, m_iWarpBeginRow, m_fWarpDestination ); // "Crash reason : -243478.890625 -48695.773438" ASSERT_M( m_fSongBeat > -2000, ssprintf("Song beat %f at %f seconds", m_fSongBeat, fPositionSeconds) ); //if( m_iWarpBeginRow != -1 || m_iWarpEndRow == -1 ) - if( m_iWarpBeginRow != -1 && m_fWarpLength > 0.0f ) + + if( m_iWarpBeginRow != -1 && m_fWarpDestination > 0.0f ) { + float fWarpLength = m_fWarpDestination-NoteRowToBeat(m_iWarpBeginRow); // There is a warp in this section. - LOG->Trace("warp at %i lasts for %f, jumps to %i",m_iWarpBeginRow,m_fWarpLength,m_iWarpBeginRow+BeatToNoteRow(m_fWarpLength)); - //fPositionSeconds += (m_fWarpLength * m_fCurBPS); + LOG->Trace("warp at row %i lasts for %f beats, jumps to row %i", + m_iWarpBeginRow, + fWarpLength, + BeatToNoteRow(m_fWarpDestination)); + fPositionSeconds += (fWarpLength * m_fCurBPS); } m_fMusicSeconds = fPositionSeconds; diff --git a/src/GameState.h b/src/GameState.h index d26fe5b308..406e4784b1 100644 --- a/src/GameState.h +++ b/src/GameState.h @@ -208,9 +208,10 @@ public: bool m_bFreeze; /** @brief A flag to determine if we're in the middle of a delay (Pump style stop). */ bool m_bDelay; - // used for warping: + /** @brief The row used to start a warp. */ int m_iWarpBeginRow; - float m_fWarpLength; + /** @brief The beat to warp to afterwards. */ + float m_fWarpDestination; RageTimer m_LastBeatUpdate; // time of last m_fSongBeat, etc. update BroadcastOnChange m_bGameplayLeadIn; diff --git a/src/Player.cpp b/src/Player.cpp index 2f505d391a..92ef0dc81d 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2551,8 +2551,8 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) if( !NeedsTapJudging(tn) ) continue; - // warp hackery - if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() <= (GAMESTATE->m_iWarpBeginRow + BeatToNoteRow(GAMESTATE->m_fWarpLength)) ) + // Ignore all notes that are skipped via WARPS. + if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) continue; if( tn.type == TapNote::mine ) @@ -2570,7 +2570,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) { // warp hackery: don't score notes within the warp region. // (Only useful when QuirksMode is enabled.) -aj - if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() <= (GAMESTATE->m_iWarpBeginRow + BeatToNoteRow(GAMESTATE->m_fWarpLength)) ) + if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) continue; tn.result.tns = TNS_Miss; @@ -2593,7 +2593,7 @@ void Player::UpdateJudgedRows() // if row is within a warp section, ignore it. -aj if( iRow >= GAMESTATE->m_iWarpBeginRow && - iRow <= (GAMESTATE->m_iWarpBeginRow + BeatToNoteRow(GAMESTATE->m_fWarpLength)) ) + iRow < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) continue; if( iLastSeenRow != iRow ) @@ -2929,7 +2929,7 @@ void Player::HandleTapRowScore( unsigned row ) // more warp hackery. -aj if( row >= (unsigned)GAMESTATE->m_iWarpBeginRow && - row <= (unsigned)(GAMESTATE->m_iWarpBeginRow + BeatToNoteRow(GAMESTATE->m_fWarpLength)) ) + row < (unsigned)(BeatToNoteRow(GAMESTATE->m_fWarpDestination)) ) return; if( GAMESTATE->m_bDemonstrationOrJukebox ) @@ -3034,7 +3034,7 @@ void Player::HandleHoldCheckpoint( int iRow, int iNumHoldsHeldThisRow, int iNumH // more warp hackery. -aj if( iRow >= GAMESTATE->m_iWarpBeginRow && - iRow <= (GAMESTATE->m_iWarpBeginRow + BeatToNoteRow(GAMESTATE->m_fWarpLength)) ) + iRow < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) return; // don't accumulate combo if AutoPlay is on. From da20a878143eefc42043e4bb93940e0b84f14d2b Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Fri, 25 Mar 2011 13:22:49 +0700 Subject: [PATCH 057/241] delete m_pTextSectionCount in destructor. --- src/MusicWheelItem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index 3ecf7d81d3..c7ad0fb3c3 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -124,7 +124,6 @@ MusicWheelItem::MusicWheelItem( const MusicWheelItem &cpy ): WheelItemBase( cpy ), GRADES_SHOW_MACHINE( cpy.GRADES_SHOW_MACHINE ), m_TextBanner( cpy.m_TextBanner ), - m_pTextSectionCount( cpy.m_pTextSectionCount ), m_WheelNotifyIcon( cpy.m_WheelNotifyIcon ) { FOREACH_ENUM( MusicWheelItemType, i ) @@ -157,7 +156,7 @@ MusicWheelItem::MusicWheelItem( const MusicWheelItem &cpy ): } } - //m_pTextSectionCount = new BitmapText( *cpy.m_pTextSectionCount ); + m_pTextSectionCount = new BitmapText( *cpy.m_pTextSectionCount ); this->AddChild( m_pTextSectionCount ); this->AddChild( &m_WheelNotifyIcon ); @@ -171,6 +170,7 @@ MusicWheelItem::MusicWheelItem( const MusicWheelItem &cpy ): MusicWheelItem::~MusicWheelItem() { + delete m_pTextSectionCount; } void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int iIndex, bool bHasFocus, int iDrawIndex ) From 6afe4a496c680400cf2328570b1911fef728db3e Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 01:45:19 -0500 Subject: [PATCH 058/241] update lua.xml --- Docs/Luadoc/Lua.xml | 75 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index d489f9638b..334204ea30 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -803,6 +803,7 @@ + @@ -887,7 +888,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1993,5 +2066,5 @@ sm-ssc v1.2.3 - 2011-03-15 + 2011-03-20 From cec3ebb5ba7d3e11b5a368a1c31d8461ad5f56c5 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 02:56:40 -0500 Subject: [PATCH 059/241] remove unused ScreenQuickSetup and related items --- Themes/_fallback/Languages/en.ini | 12 ---- Themes/_fallback/Scripts/02 Branches.lua | 6 -- Themes/_fallback/metrics.ini | 85 +----------------------- 3 files changed, 1 insertion(+), 102 deletions(-) diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 44ee600478..4e465f8675 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -2225,18 +2225,6 @@ HeaderText=Edit Course HelpText=&MENUUP;&MENUDOWN; Move &MENULEFT;&MENURIGHT; Change Value [ScreenOptionsCourseOverview] HeaderText=Course Overview -[ScreenQuickSetupOverview] -HeaderText=Quick Setup - Welcome! -[ScreenQuickSetupPhaseOne] -HeaderText=Quick Setup - Page 1: Profile -[ScreenQuickSetupPhaseTwo] -HeaderText=Quick Setup - Page 2: Gameplay -[ScreenQuickSetupPhaseThree] -HeaderText=Quick Setup - Page 3: Appearance -[ScreenQuickSetupPhaseFour] -HeaderText=Quick Setup - Page 4: Extra -[ScreenQuickSetupFinished] -HeaderText=Quick Setup - Finished! [ScreenSelectProfile] HeaderText=Select Profile [ScreenSelectPlayStyle] diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index 471e9bd30e..f10f448946 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -193,10 +193,4 @@ Branch = { Network = function() return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu" end, - QuickSetupStart = "ScreenQuickSetupOverview", - QuickSetupA = "ScreenQuickSetupPhaseOne", - QuickSetupB = "ScreenQuickSetupPhaseTwo", - QuickSetupC = "ScreenQuickSetupPhaseThree", - QuickSetupD = "ScreenQuickSetupPhaseFour", - QuickSetupFinished = "ScreenQuickSetupFinished" } diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index b37ce668a6..c92fd40354 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1661,9 +1661,7 @@ Choice5="text,Edit/Share;screen,"..Branch.OptionsEdit() Choice6="screen,ScreenJukeboxMenu;text,Jukebox" Choice7="screen,ScreenExit;text,Exit" Choice8="screen,ScreenTest;text,Sandbox" -Choice9="screen,ScreenQuickSetupOverview;text,Setup" # Aliases for the future. -ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" ChoiceGameStart="applydefaultoptions;text,Game Start;screen,"..Branch.StartGame() ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online" ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game" @@ -1671,7 +1669,6 @@ ChoiceOptions="screen,ScreenOptionsSystemDirection;text,Options" ChoiceEdit="text,Edit/Share;screen,"..Branch.OptionsEdit() ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox" ChoiceSandbox="screen,ScreenTest;text,Sandbox" -ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" ChoiceExit="screen,ScreenExit;text,Exit" # AllowRepeatingInput=true @@ -1720,87 +1717,7 @@ LogoX=SCREEN_CENTER_X LogoY=SCREEN_CENTER_Y-80 LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,8,0;zoom,0;bounceend,0.35;zoom,1 LogoOffCommand= -[ScreenQuickSetupOverview] -Class="ScreenSelectMaster" -Fallback="ScreenSelectMaster" -# -NextScreen=Branch.QuickSetupA -PrevScreen=Branch.TitleMenu() -# -TimerSeconds=-1 -# -DefaultChoice="Start" -ChoiceNames="Start,Back" -# -ChoiceStart="name,Start;screen,".. Branch.QuickSetupA -ChoiceBack="name,Back;screen,".. Branch.TitleMenu -# -PerChoiceScrollElement=false -PerChoiceIconElement=false -# -ShowScroller=true -WrapScroller=false -ShowIcon=true -[ScreenQuickSetupPhaseOne] -Class="ScreenSelectMaster" -Fallback="ScreenQuickSetupOverview" -# -NextScreen=Branch.QuickSetupBl -PrevScreen=Branch.QuickSetupStart -# -DefaultChoice="Set" -ChoiceNames="Set,Back" -# -ChoiceSet="name,Set;screen,".. Branch.QuickSetupB -ChoiceBack="name,Back;screen,".. Branch.QuickSetupStart -[ScreenQuickSetupPhaseTwo] -Class="ScreenSelectMaster" -Fallback="ScreenQuickSetupOverview" -# -NextScreen=Branch.QuickSetupC -PrevScreen=Branch.QuickSetupA -# -DefaultChoice="Set" -ChoiceNames="Set,Back" -# -ChoiceSet="name,Set;screen,".. Branch.QuickSetupC -ChoiceBack="name,Back;screen,".. Branch.QuickSetupA -[ScreenQuickSetupPhaseThree] -Class="ScreenSelectMaster" -Fallback="ScreenQuickSetupOverview" -# -NextScreen=Branch.QuickSetupD -PrevScreen=Branch.QuickSetupB -# -DefaultChoice="Set" -ChoiceNames="Set,Back" -# -ChoiceSet="name,Set;screen,".. Branch.QuickSetupD -ChoiceBack="name,Back;screen,".. Branch.QuickSetupB -[ScreenQuickSetupPhaseFour] -Class="ScreenSelectMaster" -Fallback="ScreenQuickSetupOverview" -# -NextScreen=Branch.QuickSetupFinished -PrevScreen=Branch.QuickSetupC -# -DefaultChoice="Set" -ChoiceNames="Set,Back" -# -ChoiceSet="name,Set;screen,".. Branch.QuickSetupFinished -ChoiceBack="name,Back;screen,".. Branch.QuickSetupC -[ScreenQuickSetupFinished] -Class="ScreenSelectMaster" -Fallback="ScreenQuickSetupOverview" -# -NextScreen=Branch.TitleMenu() -PrevScreen=Branch.QuickSetupD -# -DefaultChoice="Set" -ChoiceNames="Set,Back" -# -ChoiceSet="name,Set;screen,".. Branch.TitleMenu -ChoiceBack="name,Back;screen,".. Branch.QuickSetupD + [ScreenProfileLoad] Class="ScreenProfileLoad" Fallback="ScreenWithMenuElementsBlank" From 4316579e897b6730abfc178dcbcd77d0d4e67b2f Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Fri, 25 Mar 2011 23:19:31 +0700 Subject: [PATCH 060/241] [warps] my attempt at making warps work. see commit message. + TimingData: rewrote GetBeatAndBPSFromElapsedTimeNoOffset and GetBeatFromElapsedTimeNoOffset to make it simpler and compute times correctly, by going through 3 arrays at the same time. + TimingData: added TimingData::IsWarpAtRow(int) just in case. + The skipping part is now handled by TimingData. Current issues: + the rewritten function does not check if the vectors are sorted. + if you press the notes after the skip before the skip is reached, the notes in the warp range got hit instead because m_iWarpBeginRow was not set before the warp is reached. + the notes after the skipped part are not judged if hit before the warp is reached and the warp is big enough. --- src/GameState.cpp | 4 +- src/Player.cpp | 9 +- src/TimingData.cpp | 357 +++++++++++++++++++++++---------------------- src/TimingData.h | 8 +- 4 files changed, 196 insertions(+), 182 deletions(-) diff --git a/src/GameState.cpp b/src/GameState.cpp index 7bceea64db..581c882b08 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -962,7 +962,8 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti ASSERT_M( m_fSongBeat > -2000, ssprintf("Song beat %f at %f seconds", m_fSongBeat, fPositionSeconds) ); //if( m_iWarpBeginRow != -1 || m_iWarpEndRow == -1 ) - + + /* if( m_iWarpBeginRow != -1 && m_fWarpDestination > 0.0f ) { float fWarpLength = m_fWarpDestination-NoteRowToBeat(m_iWarpBeginRow); @@ -973,6 +974,7 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti BeatToNoteRow(m_fWarpDestination)); fPositionSeconds += (fWarpLength * m_fCurBPS); } + */ m_fMusicSeconds = fPositionSeconds; diff --git a/src/Player.cpp b/src/Player.cpp index 92ef0dc81d..da11ff8cdf 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2522,8 +2522,8 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) { //LOG->Trace( "Steps::UpdateTapNotesMissedOlderThan(%f)", fMissIfOlderThanThisBeat ); int iMissIfOlderThanThisRow; + const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds; { - const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds; bool bFreeze, bDelay; float fMissIfOlderThanThisBeat; float fThrowAway; @@ -2550,7 +2550,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) if( !NeedsTapJudging(tn) ) continue; - + // Ignore all notes that are skipped via WARPS. if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) continue; @@ -2568,11 +2568,6 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) } else { - // warp hackery: don't score notes within the warp region. - // (Only useful when QuirksMode is enabled.) -aj - if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) - continue; - tn.result.tns = TNS_Miss; } } diff --git a/src/TimingData.cpp b/src/TimingData.cpp index a8eaaf2704..ea0c30b937 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -341,6 +341,18 @@ int TimingData::GetWarpSegmentIndexAtRow( int iNoteRow ) const return static_cast(i); } +bool TimingData::IsWarpAtRow( int iNoteRow ) const +{ + unsigned i; + for( i=0; i= iNoteRow ) + return iNoteRow < BeatToNoteRow(m_WarpSegments[i].m_fEndBeat); + } + return false; +} + int TimingData::GetTimeSignatureSegmentIndexAtRow( int iRow ) const { unsigned i; @@ -451,150 +463,116 @@ void TimingData::GetBeatAndBPSFromElapsedTime( float fElapsedTime, float &fBeatO GetBeatAndBPSFromElapsedTimeNoOffset( fElapsedTime, fBeatOut, fBPSOut, bFreezeOut, bDelayOut, iWarpBeginOut, fWarpLengthOut ); } -void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float &fBeatOut, float &fBPSOut, bool &bFreezeOut, bool &bDelayOut, int &iWarpBeginOut, float &fWarpLengthOut ) const +enum { -// LOG->Trace( "GetBeatAndBPSFromElapsedTime( fElapsedTime = %f )", fElapsedTime ); - const float fTime = fElapsedTime; - fElapsedTime += m_fBeat0OffsetInSeconds; + FOUND_WARP, + FOUND_WARP_DESTINATION, + FOUND_BPM_CHANGE, + FOUND_STOP, + FOUND_MARKER, + NOT_FOUND +}; - for( unsigned i=0; i::const_iterator itBPMS = m_BPMSegments.begin(); + vector::const_iterator itWS = m_WarpSegments.begin(); + vector::const_iterator itSS = m_StopSegments.begin(); + + bFreezeOut = false; + bDelayOut = false; + + iWarpBeginOut = -1; + + int iLastRow = 0; + float fLastTime = -m_fBeat0OffsetInSeconds; + float fBPS = GetBPMAtRow(0) / 60.0; + + float bIsWarping = false; + float fWarpDestination = 0.0; + + for( ;; ) { - const int iStartRowThisSegment = m_BPMSegments[i].m_iStartRow; - const float fStartBeatThisSegment = NoteRowToBeat( iStartRowThisSegment ); - const bool bIsFirstBPMSegment = i==0; - const bool bIsLastBPMSegment = i==m_BPMSegments.size()-1; - const int iStartRowNextSegment = bIsLastBPMSegment ? MAX_NOTE_ROW : m_BPMSegments[i+1].m_iStartRow; - const float fStartBeatNextSegment = NoteRowToBeat( iStartRowNextSegment ); - const float fBPS = m_BPMSegments[i].m_fBPS; - - for( unsigned j=0; j= m_StopSegments[j].m_iStartRow ) - continue; - if( !bIsLastBPMSegment && m_StopSegments[j].m_iStartRow > iStartRowNextSegment ) - continue; - - // this freeze lies within this BPMSegment - const int iRowsBeatsSinceStartOfSegment = m_StopSegments[j].m_iStartRow - iStartRowThisSegment; - const float fBeatsSinceStartOfSegment = NoteRowToBeat(iRowsBeatsSinceStartOfSegment); - const float fFreezeStartSecond = fBeatsSinceStartOfSegment / fBPS; - - // modified for delays - if( !bIsDelay && fFreezeStartSecond >= fElapsedTime ) - break; - if( bIsDelay && fFreezeStartSecond > fElapsedTime ) - break; - - // the freeze segment is <= current time - fElapsedTime -= m_StopSegments[j].m_fStopSeconds; - - if( (fFreezeStartSecond >= fElapsedTime && !bIsDelay) || - (fFreezeStartSecond > fElapsedTime && bIsDelay) ) + iEventRow = BeatToNoteRow(fWarpDestination); + iEventType = FOUND_WARP_DESTINATION; + } + if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) + { + iEventRow = itWS->m_iStartRow; + iEventType = FOUND_WARP; + } + if( itBPMS != m_BPMSegments.end() && itBPMS->m_iStartRow < iEventRow ) + { + iEventRow = itBPMS->m_iStartRow; + iEventType = FOUND_BPM_CHANGE; + } + if( itSS != m_StopSegments.end() && itSS->m_iStartRow < iEventRow ) + { + iEventRow = itSS->m_iStartRow; + iEventType = FOUND_STOP; + } + if( iEventType == NOT_FOUND ) + { + break; + } + float fTimeToNextEvent = bIsWarping ? 0 : NoteRowToBeat( iEventRow - iLastRow ) / fBPS; + float fNextEventTime = fLastTime + fTimeToNextEvent; + if ( fElapsedTime < fNextEventTime ) + { + break; + } + fLastTime = fNextEventTime; + switch( iEventType ) + { + case FOUND_WARP_DESTINATION: + bIsWarping = false; + break; + case FOUND_WARP: + bIsWarping = true; + if( itWS->m_fEndBeat > fWarpDestination ) + { + fWarpDestination = itWS->m_fEndBeat; + } + iWarpBeginOut = iEventRow; + fWarpDestinationOut = fWarpDestination; + itWS ++; + break; + case FOUND_BPM_CHANGE: + fBPS = itBPMS->m_fBPS; + itBPMS ++; + break; + case FOUND_STOP: + fTimeToNextEvent = bIsWarping ? 0 : itSS->m_fStopSeconds; + fNextEventTime = fLastTime + fTimeToNextEvent; + const bool bIsDelay = itSS->m_bDelay; + if ( fElapsedTime < fNextEventTime ) { - // The time lies within the stop. - fBeatOut = NoteRowToBeat(m_StopSegments[j].m_iStartRow); - fBPSOut = fBPS; bFreezeOut = !bIsDelay; - bDelayOut = bIsDelay; - //iWarpBeginOut = -1; - //fWarpLengthOut = -1; + bDelayOut = bIsDelay; + fBeatOut = NoteRowToBeat( itSS->m_iStartRow ); + fBPSOut = fBPS; return; } + fLastTime = fNextEventTime; + itSS ++; + break; } - - // by this point we should have the warps in their own place. - for( unsigned j=0; j= m_WarpSegments[j].m_iStartRow ) - continue; - if( !bIsLastBPMSegment && m_WarpSegments[j].m_iStartRow > iStartRowNextSegment ) - continue; - - /* - const int iRowsBeatsSinceStartOfSegment = m_WarpSegments[j].m_iStartRow - iStartRowThisSegment; - const float fBeatsSinceStartOfSegment = NoteRowToBeat(iRowsBeatsSinceStartOfSegment); - const float fWarpStartSecond = fBeatsSinceStartOfSegment / fBPS; - */ - - // the freeze segment is <= current time - //fElapsedTime -= m_WarpSegments[j].m_fEndBeat; - - // this warp lies within this BPMSegment. - /* - if( fWarpStartSecond >= fElapsedTime ) - { - // this WarpSegment IS the current segment. - // don't know how to properly handle beatout -aj - //fBeatOut = NoteRowToBeat(m_WarpSegments[j].m_iStartRow); - fBeatOut = fStartBeatThisSegment + fElapsedTime*fBPS; - fBPSOut = m_BPMSegments[i+1].m_fBPS; - bFreezeOut = false; - bDelayOut = false; - iWarpBeginOut = m_WarpSegments[j].m_iStartRow; - fWarpLengthOut = m_WarpSegments[j].m_fEndBeat; - return; - } - */ - } - - const float fBeatsInThisSegment = fStartBeatNextSegment - fStartBeatThisSegment; - const float fSecondsInThisSegment = fBeatsInThisSegment / fBPS; - //if(fBPS < 0.0f) - /* - if(fStartBeatThisSegment == 445.500f || fStartBeatThisSegment == 449.500) - { - LOG->Trace( ssprintf("segment (beat %f) beats: %f / seconds: %f / BPS: %f",fStartBeatThisSegment,fBeatsInThisSegment,fSecondsInThisSegment,fBPS) ); - } - */ - if( bIsLastBPMSegment || fElapsedTime <= fSecondsInThisSegment ) - { - // this BPMSegment IS the current segment. - fBeatOut = fStartBeatThisSegment + fElapsedTime*fBPS; - fBPSOut = fBPS; - bFreezeOut = false; - bDelayOut = false; - //iWarpBeginOut; - //fWarpLengthOut; - return; - } - - // this BPMSegment is NOT the current segment. - fElapsedTime -= fSecondsInThisSegment; - // xxx: negative testing [aj] - /* - //if(fBPS < 0.0f) - if( (fStartBeatNextSegment >= 445.490f && fStartBeatNextSegment <= 453.72f) || fBPS < 0.0f ) - { - //LOG->Trace( ssprintf("beat %f is %f BPS (%f BPM)",fBeatOut,fBPSOut,fBPSOut*60.0f) ); - //LOG->Trace( ssprintf("start beat %f + elapsed time %f",fStartBeatThisSegment,fElapsedTime) ); - //LOG->Trace( ssprintf("elapsed time is now %f",fElapsedTime) ); - } - */ + iLastRow = iEventRow; } - // If we get here, something has gone wrong. Is everything sorted? - vector vBPMS = m_BPMSegments; - vector vSS = m_StopSegments; - vector vWS = m_WarpSegments; - vector vTSS = m_vTimeSignatureSegments; - vector vTS = m_TickcountSegments; - vector vCS = m_ComboSegments; - sort( vBPMS.begin(), vBPMS.end() ); - sort( vSS.begin(), vSS.end() ); - sort( vWS.begin(), vWS.end() ); - sort( vTSS.begin(), vTSS.end() ); - sort( vTS.begin(), vTS.end() ); - sort( vCS.begin(), vCS.end() ); - ASSERT_M( vBPMS == m_BPMSegments, "The BPM segments were not sorted!" ); - ASSERT_M( vSS == m_StopSegments, "The Stop segments were not sorted!" ); - ASSERT_M( vWS == m_WarpSegments, "The Warp segments were not sorted!" ); - ASSERT_M( vTSS == m_vTimeSignatureSegments, "The Time Signature segments were not sorted!" ); - ASSERT_M( vTS == m_TickcountSegments, "The Tickcount segments were not sorted!" ); - ASSERT_M( vCS == m_ComboSegments, "The Combo segments were not sorted!" ); - FAIL_M( ssprintf("Failed to find the appropriate segment for elapsed time %f.", fTime) ); + + fBeatOut = NoteRowToBeat( iLastRow ) + (fElapsedTime - fLastTime) * fBPS; + fBPSOut = fBPS; + } + + float TimingData::GetElapsedTimeFromBeat( float fBeat ) const { return TimingData::GetElapsedTimeFromBeatNoOffset( fBeat ) - PREFSMAN->m_fGlobalOffsetSeconds; @@ -602,53 +580,86 @@ float TimingData::GetElapsedTimeFromBeat( float fBeat ) const float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const { - float fElapsedTime = 0; - fElapsedTime -= m_fBeat0OffsetInSeconds; - int iRow = BeatToNoteRow(fBeat); - for( unsigned j=0; j::const_iterator itBPMS = m_BPMSegments.begin(); + vector::const_iterator itWS = m_WarpSegments.begin(); + vector::const_iterator itSS = m_StopSegments.begin(); + + int iLastRow = 0; + float fLastTime = -m_fBeat0OffsetInSeconds; + float fBPS = GetBPMAtRow(0) / 60.0; + + float bIsWarping = false; + float fWarpDestination = 0.0; + + for( ;; ) { - /* A traditional stop has the beat happening before the stop. (>=) - * A Pump delay acts differently: the pause is before the beat. (>) - */ - if( ( m_StopSegments[j].m_iStartRow >= iRow && !m_StopSegments[j].m_bDelay ) || - ( m_StopSegments[j].m_iStartRow > iRow && m_StopSegments[j].m_bDelay ) ) + int iEventRow = INT_MAX; + int iEventType = NOT_FOUND; + if( bIsWarping && BeatToNoteRow(fWarpDestination) < iEventRow ) + { + iEventRow = BeatToNoteRow(fWarpDestination); + iEventType = FOUND_WARP_DESTINATION; + } + if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) + { + iEventRow = itWS->m_iStartRow; + iEventType = FOUND_WARP; + } + if( itBPMS != m_BPMSegments.end() && itBPMS->m_iStartRow < iEventRow ) + { + iEventRow = itBPMS->m_iStartRow; + iEventType = FOUND_BPM_CHANGE; + } + if( itSS != m_StopSegments.end() && itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) + { + iEventRow = itSS->m_iStartRow; + iEventType = FOUND_STOP; + } + if( BeatToNoteRow(fBeat) < iEventRow ) + { + iEventRow = BeatToNoteRow(fBeat); + iEventType = FOUND_MARKER; + } + if( itSS != m_StopSegments.end() && !itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) + { + iEventRow = itSS->m_iStartRow; + iEventType = FOUND_STOP; + } + float fTimeToNextEvent = bIsWarping ? 0 : NoteRowToBeat( iEventRow - iLastRow ) / fBPS; + float fNextEventTime = fLastTime + fTimeToNextEvent; + fLastTime = fNextEventTime; + switch( iEventType ) + { + case FOUND_WARP_DESTINATION: + bIsWarping = false; break; - fElapsedTime += m_StopSegments[j].m_fStopSeconds; - } - - for( unsigned i=0; im_fEndBeat > fWarpDestination ) + { + fWarpDestination = itWS->m_fEndBeat; + } + itWS ++; + break; + case FOUND_BPM_CHANGE: + fBPS = itBPMS->m_fBPS; + itBPMS ++; + break; + case FOUND_STOP: + fTimeToNextEvent = bIsWarping ? 0 : itSS->m_fStopSeconds; + fNextEventTime = fLastTime + fTimeToNextEvent; + fLastTime = fNextEventTime; + itSS ++; + break; + case FOUND_MARKER: + return fLastTime; } - else - { - const int iStartIndexThisSegment = m_BPMSegments[i].m_iStartRow; - const int iStartIndexNextSegment = m_BPMSegments[i+1].m_iStartRow; - const int iRowsInThisSegment = min( iStartIndexNextSegment - iStartIndexThisSegment, iRow ); - fElapsedTime += NoteRowToBeat( iRowsInThisSegment ) / fBPS; - iRow -= iRowsInThisSegment; - } - - if( iRow <= 0 ) - return fElapsedTime; + iLastRow = iEventRow; } - - /* - for( unsigned i=0; i Date: Fri, 25 Mar 2011 23:40:03 +0700 Subject: [PATCH 061/241] [warps] Fix IsWarpAtRow. --- src/Player.cpp | 3 +-- src/TimingData.cpp | 14 ++++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/Player.cpp b/src/Player.cpp index da11ff8cdf..194676330c 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2587,8 +2587,7 @@ void Player::UpdateJudgedRows() int iRow = iter.Row(); // if row is within a warp section, ignore it. -aj - if( iRow >= GAMESTATE->m_iWarpBeginRow && - iRow < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow(iRow) ) continue; if( iLastSeenRow != iRow ) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index ea0c30b937..9af8b6d11b 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -343,14 +343,12 @@ int TimingData::GetWarpSegmentIndexAtRow( int iNoteRow ) const bool TimingData::IsWarpAtRow( int iNoteRow ) const { - unsigned i; - for( i=0; i= iNoteRow ) - return iNoteRow < BeatToNoteRow(m_WarpSegments[i].m_fEndBeat); - } - return false; + if( m_WarpSegments.empty() ) + return false; + + int i = GetWarpSegmentIndexAtRow( iNoteRow ); + const WarpSegment& s = m_WarpSegments[i]; + return s.m_iStartRow <= iNoteRow && iNoteRow < BeatToNoteRow(s.m_fEndBeat); } int TimingData::GetTimeSignatureSegmentIndexAtRow( int iRow ) const From b94ff7785fd8716ea2792a02509407d332974f51 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 16:33:57 -0400 Subject: [PATCH 062/241] [warps] Add comment for thing to fix. --- src/TimingData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 9af8b6d11b..baf3e0c3a6 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -544,7 +544,7 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float fBPS = itBPMS->m_fBPS; itBPMS ++; break; - case FOUND_STOP: + case FOUND_STOP: // TODO: update for Delays. fTimeToNextEvent = bIsWarping ? 0 : itSS->m_fStopSeconds; fNextEventTime = fLastTime + fTimeToNextEvent; const bool bIsDelay = itSS->m_bDelay; From 0f6d954066f0579aad202e850855222edb07b81f Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 15:42:39 -0500 Subject: [PATCH 063/241] changelog up --- Docs/Changelog_sm-ssc.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 20b7ecc9cf..af644b111f 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -10,7 +10,7 @@ supported but exist anyways.) _____________________________________________________________________________ ================================================================================ -sm-ssc v1.2.4 | 20110??? +sm-ssc v1.2.4 | 2011032? -------------------------------------------------------------------------------- 20110320 From c8a6f4c41d13842d6e3ecc6882c4ad7280775e3e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 17:40:56 -0400 Subject: [PATCH 064/241] [warps] Allow for editing warps. TODO: Ensure warps get erased if they go backwards. --- Themes/_fallback/Languages/en.ini | 2 ++ src/ScreenEdit.cpp | 22 +++++++++++++++++++++- src/ScreenEdit.h | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 4e465f8675..2b44eee848 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -843,6 +843,7 @@ Edit time signature (top)=Edit time signature (beats per measure) Edit time signature (bottom)=Edit time signature (single beat note value) Edit tickcount=Edit tickcount Edit combo=Edit combo +Edit warp=Edit warp Editor options=Options EditorShowBGChangesPlay=Show Backgrounds Effect=Effect @@ -1209,6 +1210,7 @@ Enter a new Time Signature numerator value.=Enter the number of beats per measur Enter a new Time Signature denominator value.=Enter the note value that represents one beat. Enter a new Tickcount value.=Enter a new Tickcount value. Enter a new Combo value.=Enter a new Combo value. +Enter a new Warp value.=Enter the beat you will warp to when you reach this point. Enter a new artist transliteration.=Enter a new artist transliteration. Enter a new artist.=Enter a new artist. Enter a new genre.=Enter a new genre. diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 213cc01028..6c09391967 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -80,6 +80,7 @@ AutoScreenMessage( SM_BackFromTimeSignatureNumeratorChange ); AutoScreenMessage( SM_BackFromTimeSignatureDenominatorChange ); AutoScreenMessage( SM_BackFromTickcountChange ); AutoScreenMessage( SM_BackFromComboChange ); +AutoScreenMessage( SM_BackFromWarpChange ); AutoScreenMessage( SM_DoSaveAndExit ); AutoScreenMessage( SM_DoExit ); AutoScreenMessage( SM_SaveSuccessful ); @@ -549,7 +550,8 @@ static MenuDef g_TimingDataInformation( MenuRowDef( ScreenEdit::time_signature_numerator, "Edit time signature (top)", true, EditMode_Full, true, true, 0, NULL ), MenuRowDef( ScreenEdit::time_signature_denominator, "Edit time signature (bottom)", true, EditMode_Full, true, true, 0, NULL ), MenuRowDef( ScreenEdit::tickcount, "Edit tickcount", true, EditMode_Full, true, true, 0, NULL ), - MenuRowDef( ScreenEdit::combo, "Edit combo", true, EditMode_Full, true, true, 0, NULL ) + MenuRowDef( ScreenEdit::combo, "Edit combo", true, EditMode_Full, true, true, 0, NULL ), + MenuRowDef( ScreenEdit::warp, "Edit warp", true, EditMode_Full, true, true, 0, NULL ) ); enum { song_bganimation, song_movie, song_bitmap, global_bganimation, global_movie, global_movie_song_group, global_movie_song_group_and_genre, dynamic_random, baked_random, none }; @@ -2639,6 +2641,13 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) } SetDirty( true ); } + else if ( SM == SM_BackFromWarpChange ) + { + float fWarp = StringToFloat( ScreenTextEntry::s_sLastAnswer ); + if( fWarp > GAMESTATE->m_fSongBeat ) + m_pSong->m_Timing.SetWarpAtBeat( GAMESTATE->m_fSongBeat, fWarp ); + SetDirty( true ); + } else if( SM == SM_BackFromBGChange ) { HandleBGChangeChoice( (BGChangeChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers ); @@ -3176,6 +3185,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns g_TimingDataInformation.rows[time_signature_denominator].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTimeSignatureDenominatorAtBeat( fBeat ) ) ); g_TimingDataInformation.rows[tickcount].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTickcountAtBeat( fBeat ) ) ); g_TimingDataInformation.rows[combo].SetOneUnthemedChoice( ssprintf("%d", pTime.GetComboAtBeat( fBeat ) ) ); + g_TimingDataInformation.rows[warp].SetOneUnthemedChoice( ssprintf("%.5f", pTime.GetWarpAtBeat( fBeat ) ) ); EditMiniMenu( &g_TimingDataInformation, SM_BackFromTimingDataInformation ); } @@ -3609,6 +3619,7 @@ static LocalizedString ENTER_TIME_SIGNATURE_NUMERATOR_VALUE ( "ScreenEdit", "Ent static LocalizedString ENTER_TIME_SIGNATURE_DENOMINATOR_VALUE ( "ScreenEdit", "Enter a new Time Signature denominator value." ); static LocalizedString ENTER_TICKCOUNT_VALUE ( "ScreenEdit", "Enter a new Tickcount value." ); static LocalizedString ENTER_COMBO_VALUE ( "ScreenEdit", "Enter a new Combo value." ); +static LocalizedString ENTER_WARP_VALUE ( "ScreenEdit", "Enter a new Warp value." ); void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice c, const vector &iAnswers ) { switch( c ) @@ -3673,6 +3684,15 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice 4 ); break; + case warp: + // todo: Call a screen with class ScreenTextEntry instead. -aj + ScreenTextEntry::TextEntry( + SM_BackFromWarpChange, + ENTER_WARP_VALUE, + ssprintf( "%.4f", m_pSong->m_Timing.GetWarpAtRow( BeatToNoteRow(GAMESTATE->m_fSongBeat) ) ), + 10 + ); + break; } } diff --git a/src/ScreenEdit.h b/src/ScreenEdit.h index 200a3979f0..1f79b78528 100644 --- a/src/ScreenEdit.h +++ b/src/ScreenEdit.h @@ -456,6 +456,7 @@ public: time_signature_denominator, tickcount, combo, + warp, NUM_TIMING_DATA_INFORMATION_CHOICES }; From 5126e21377566a4ff6207a0add361e08e8aeb5eb Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 17:48:05 -0400 Subject: [PATCH 065/241] [warps] do validation in SetWarpAtRow, not here. --- src/ScreenEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 6c09391967..d11c08f2bc 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2644,7 +2644,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) else if ( SM == SM_BackFromWarpChange ) { float fWarp = StringToFloat( ScreenTextEntry::s_sLastAnswer ); - if( fWarp > GAMESTATE->m_fSongBeat ) + if( fWarp > 0 ) m_pSong->m_Timing.SetWarpAtBeat( GAMESTATE->m_fSongBeat, fWarp ); SetDirty( true ); } From c6ec8dbb743b52017feef5a5811b7a36a00859ef Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 18:02:56 -0400 Subject: [PATCH 066/241] [warps] Make Delays and Stops easier to find. --- Themes/_fallback/metrics.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index ae4abb4569..3cacf67bed 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -977,8 +977,8 @@ TickcountIsLeftSide=false ComboIsLeftSide=false # BPMOffsetX=60 -StopOffsetX=10 -DelayOffsetX=10 +StopOffsetX=50 +DelayOffsetX=120 WarpOffsetX=60 TimeSignatureOffsetX=30 TickcountOffsetX=10 From dd868637d2674525c938462c2076bd63b1fb5b8c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 19:11:34 -0500 Subject: [PATCH 067/241] [br:Warps] swap condition/code on Negative Stops; gonna hopefully work on this some more --- src/NotesLoaderSM.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 8a280ec723..e95c725a32 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -141,12 +141,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); new_seg.m_fStopSeconds = fFreezeSeconds; - if(fFreezeSeconds > 0.0f) - { - // LOG->Trace( "Adding a freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - out.AddStopSegment( new_seg ); - } - else + if(fFreezeSeconds < 0.0f) { // negative stops (hi JS!) -aj if( PREFSMAN->m_bQuirksMode ) @@ -157,6 +152,11 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) else LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid stop at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); } + else + { + // LOG->Trace( "Adding a freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); + out.AddStopSegment( new_seg ); + } } } else if( sValueName=="DELAYS" ) @@ -216,7 +216,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) BPMSegment new_seg; new_seg.m_iStartRow = BeatToNoteRow(fBeat); new_seg.SetBPM( fNewBPM ); - + // convert negative BPMs into Warp segments if( fNewBPM < 0.0f ) { @@ -231,7 +231,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // tJumpPos = (tPosBPS-abs(negBPS)) + (gPosBPMPosition - fNegPosition) float fDeltaBeat = ((fNextPositiveBPM/60.0f)-abs(fNewBPM/60.0f)) + (fNextPositiveBeat-fBeat); //float fWarpLengthBeats = fNextPositiveBeat + fDeltaBeat; - WarpSegment wsTemp(BeatToNoteRow(fBeat),fDeltaBeat); + WarpSegment wsTemp( BeatToNoteRow(fBeat), BeatToNoteRow(fNextPositiveBeat+fDeltaBeat) ); arrayWarpsFromNegativeBPMs.push_back(wsTemp); /* From a1a1c11920e0900f78dac4e196fdb08958e661e8 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 19:54:23 -0500 Subject: [PATCH 068/241] add WinDEU's Negative BPM/Stops tutorial for developers to use in determining the effects of Negative BPM/Stops --- Docs/Devdocs/NegBPMsTutorial.html | 130 +++++++++++++++++++++++++ Docs/Devdocs/negbpmtut/screen00214.jpg | Bin 0 -> 52740 bytes Docs/Devdocs/negbpmtut/screen00215.jpg | Bin 0 -> 53006 bytes Docs/Devdocs/negbpmtut/screen00216.jpg | Bin 0 -> 52655 bytes Docs/Devdocs/negbpmtut/screen00217.jpg | Bin 0 -> 51053 bytes Docs/Devdocs/negbpmtut/screen00218.jpg | Bin 0 -> 48373 bytes Docs/Devdocs/negbpmtut/screen00221.jpg | Bin 0 -> 55593 bytes 7 files changed, 130 insertions(+) create mode 100644 Docs/Devdocs/NegBPMsTutorial.html create mode 100644 Docs/Devdocs/negbpmtut/screen00214.jpg create mode 100644 Docs/Devdocs/negbpmtut/screen00215.jpg create mode 100644 Docs/Devdocs/negbpmtut/screen00216.jpg create mode 100644 Docs/Devdocs/negbpmtut/screen00217.jpg create mode 100644 Docs/Devdocs/negbpmtut/screen00218.jpg create mode 100644 Docs/Devdocs/negbpmtut/screen00221.jpg diff --git a/Docs/Devdocs/NegBPMsTutorial.html b/Docs/Devdocs/NegBPMsTutorial.html new file mode 100644 index 0000000000..ee9d34f0c7 --- /dev/null +++ b/Docs/Devdocs/NegBPMsTutorial.html @@ -0,0 +1,130 @@ + + +Negative BPM/Stop Tutorial by WinDEU + + + +Hello everyone, and welcome to WinDEU's Negative BPM tutorial! Making negative +BPMs is pretty complex, so hopefully this guide will help you guys out.
+
+NOTE: I am using +SM 3.95 for this tutorial. 3.9 works as well, and is probably better to use +for playback purposes. When a negative BPM hits in edit mode, 3.95 jumps very +quickly (but not instantly) to the next point in the chart, whereas 3.9 does +do it instantly.
+
+What are negative BPMs? +Negative BPMs are the act of "warping" to a +later place in the chart, skipping multiple lines of the chart and +ignoring anything within those areas.
+
+Once you understand how negative BPMs work, it shouldn't be too hard to +figure out.
+
+So, let's start out with a screenshot.
+
+ +
+We start off on measure 1, with a current second of 0.055, and a BPM of 150. +Take note of the current second (upper right), this is very important in +dealing with negative BPMs.
+
+ +
+We are now on measure 2, with a BPM of -150, the exact opposite of the normal +BPM. Look at the current second again. It took 1.600 seconds to scroll 1 +whole measure at 150 BPM. Right now the current second is 1.655. Also of +note, the BPM goes back to 150 starting on measure 3. Now, here's where the +magic happens.
+
+
+We are on measure 3, back into positive BPM territory, but take a look at the +current second again. It is 0.055 on measure 3, the same value as the current +second from measure 1. This makes sense, because it took -1.600 seconds to +scroll from measure 2 to measure 3, because the BPM was negative during that +measure.
+
+
+As you can see from the current second on measure 4, it is the same value as measure 2.
+
+This is how the warping happens. When the chart first reaches the negative BPM, +it will search for the next positive BPM value. +NOTE: if there is no +positive BPM after the last negative BPM, I believe that the song ends +instantly, because it has reached the highest time possible within the chart. +Once the negative BPM hits, the current second will start counting backwards +forever.
+
+So, once the negative BPM hits, the game attempts to find the next place in +the chart that matches the current second of +the exact moment the negative BPM hit. At measure 2, the current second +was 1.655, and from the picture above, we can see that the next place that the +current second is 1.655 would be measure 4. So, you've effectively created a +warp going from measure 2 to measure 4, skipping everything in between.
+
+ +
+So basically, it comes down to this: When making negative BPMs, make sure that +the space between the negative BPM and the next positive BPM is +doubled (assuming that you're using +the same BPM, which would be the easiest method anyway).
+
+Negative Stops +

+Negative stops work about the same way as negative BPMs, without the mess +of having to change around the BPMs. There is a little math involved, though.
+
+Let's say that you want to do a 2-measure warp, like the negative BPM example +above. You need to simulate going backwards by two measures. Normal stops keep +the current second going, even though the chart is at a standstill. Negative +stops keep the current second going as well, only backwards.
+
+First, find the time it would take to progress two measures. You can do this +by either checking the current second, going down two measures, check the +current second again, and take the difference. Or, you can calculate it like this:
+
+60/[BPM] = [quarter note value, in seconds]
+[quarter note] x 8 = [2 measures, in seconds]
+
+So that translates to:
+
+60/150 = 0.400
+0.400 x 8 = 3.200 seconds = two measures
+
+Now that we've got that out of the way, it's time to make the negative stop. +You might have noticed something though. StepMania doesn't let you input +negative stops. F9 to decrease the stop values in edit mode doesn't let you +go below 0.00, and adding a negative stop through Add Stop from the menu +doesn't work either.
+
+Unfortunately, you'll have to manually insert the negative stop into the .sm +file. NOTE: Before you +manually insert any negative stops, make sure to save your chart, otherwise +any unsaved data will be lost!
+
+This time, take note of the current beat +(again, upper right). Now, open up the .sm file and look for the #STOPS tag. +If you want to add a -3.200 long stop in at measure 2, it will look like this:
+
+#STOPS:4.000=-3.200;
+
+After you're done, save the .sm, and go back to StepMania (which should still +be open). Press ESC, and go to the menu option "Revert From Disk." It will +warn you that any unsaved changes will be lost (which is why I gave the warning +before explaining all of this). Choose yes, and you should see the negative +stop value appear on measure 2.
+
+
+
+If you scroll to measure 2, and then to measure 4, you will see that the +current second values are the same, meaning that you've successfully created +a warp with negative stops!
+
+NOTE: Using a lot of +negative stops in a short period of time tends to lag ITG machines a lot, +so be wary of this.
+
+That covers the basics of negative BPMs and negative stops. Hopefully this guide helps! + + \ No newline at end of file diff --git a/Docs/Devdocs/negbpmtut/screen00214.jpg b/Docs/Devdocs/negbpmtut/screen00214.jpg new file mode 100644 index 0000000000000000000000000000000000000000..221205962348262af43f9791270aa2c1b8f5abf5 GIT binary patch literal 52740 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 literal 0 HcmV?d00001 diff --git a/Docs/Devdocs/negbpmtut/screen00215.jpg b/Docs/Devdocs/negbpmtut/screen00215.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48d703b8253ba95e539474d5d1c92324c3799297 GIT binary patch literal 53006 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 literal 0 HcmV?d00001 diff --git a/Docs/Devdocs/negbpmtut/screen00216.jpg b/Docs/Devdocs/negbpmtut/screen00216.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b28c3ff9330f619e904297fd85202a9bdae2bc7c GIT binary patch literal 52655 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�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 literal 0 HcmV?d00001 diff --git a/Docs/Devdocs/negbpmtut/screen00218.jpg b/Docs/Devdocs/negbpmtut/screen00218.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d1e11d398a5ef4ed155ec6366f0dfc4e3881a60 GIT binary patch literal 48373 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

W}LSZCFcj0(%) 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 eq@<+OfBFmIUEe2-n+u15}pKoG9_~ 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/_down Tap Note materials.txt b/NoteSkins/dance/midi-note-3d/_down Tap Note materials.txt new file mode 100644 index 0000000000..144d5b0b4e --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/_down Tap Note materials.txt @@ -0,0 +1,28 @@ +Materials: 3 +"cells" +0.588235 0.588235 0.588235 1.000000 +0.588235 0.588235 0.588235 1.000000 +0.898039 0.898039 0.898039 1.000000 +0.000000 0.000000 0.000000 1.000000 +0.000000 +1.000000 +"tex\black.png" +"" +"1 - Default" +0.588235 0.588235 0.588235 1.000000 +0.588235 0.588235 0.588235 1.000000 +0.898039 0.898039 0.898039 1.000000 +0.000000 0.000000 0.000000 1.000000 +0.000000 +1.000000 +"tex\color.ini" +"" +"2 - Inside" +0.588235 0.588235 0.588235 1.000000 +0.588235 0.588235 0.588235 1.000000 +0.898039 0.898039 0.898039 1.000000 +0.000000 0.000000 0.000000 1.000000 +0.000000 +1.000000 +"tex\color in.jpg" +"" diff --git a/NoteSkins/dance/midi-note-3d/_down tap bones.txt b/NoteSkins/dance/midi-note-3d/_down tap bones.txt new file mode 100644 index 0000000000..fb2c53c800 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/_down tap bones.txt @@ -0,0 +1 @@ +Bones: 0 diff --git a/NoteSkins/dance/midi-note-3d/_down tap note meshes.txt b/NoteSkins/dance/midi-note-3d/_down tap note meshes.txt new file mode 100644 index 0000000000..039e1255ba --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/_down tap note meshes.txt @@ -0,0 +1,949 @@ +// MilkShape 3D ASCII + +Frames: 30 +Frame: 1 + +Meshes: 3 +"cell" 0 0 +64 +0 2.549132 27.005108 -5.999992 0.000000 0.000000 -1 +0 -2.470720 27.005108 -5.999992 0.000000 0.000000 -1 +0 -3.501126 29.003641 -3.999992 0.000000 0.000000 -1 +0 3.515003 29.000792 -3.999992 0.000000 0.000000 -1 +0 7.480893 22.005108 -5.999992 0.000000 0.000000 -1 +0 9.515003 22.992289 -3.999992 0.000000 0.000000 -1 +0 7.487095 -0.006020 -5.999992 0.000000 0.000000 -1 +0 9.498875 3.988278 -3.999992 0.000000 0.000000 -1 +0 -7.464517 22.005112 -5.999992 0.000000 0.000000 -1 +0 -9.501126 22.993713 -3.999992 0.000000 0.000000 -1 +0 -7.470722 0.000184 -5.999992 0.000000 0.000000 -1 +0 -9.496346 5.006423 -3.999992 0.000000 0.000000 -1 +0 -16.489040 12.002391 -3.999992 0.000000 0.000000 -1 +0 -17.519123 9.995950 -5.999992 0.000000 0.000000 -1 +0 -23.502296 9.990573 -5.999992 0.000000 0.000000 -1 +0 -24.496029 11.991723 -3.999992 0.000000 0.000000 -1 +0 -27.479452 5.977798 -5.999992 0.000000 0.000000 -1 +0 -29.504972 7.003297 -3.999992 0.000000 0.000000 -1 +0 -27.479452 0.022464 -5.999992 0.000000 0.000000 -1 +0 -29.490093 -1.017060 -3.999992 0.000000 0.000000 -1 +0 -0.491594 -27.002575 -5.999992 0.000000 0.000000 -1 +0 -0.502999 -29.987505 -3.999992 0.000000 0.000000 -1 +0 0.540664 -26.992649 -5.999992 0.000000 0.000000 -1 +0 0.530027 -29.987507 -3.999992 0.000000 0.000000 -1 +0 29.517078 -0.995554 -3.999992 0.000000 0.000000 -1 +0 27.495455 -0.000695 -5.999992 0.000000 0.000000 -1 +0 27.501657 5.992133 -5.999992 0.000000 0.000000 -1 +0 29.517847 6.998812 -3.999992 0.000000 0.000000 -1 +0 24.519735 12.004406 -3.999992 0.000000 0.000000 -1 +0 23.485622 10.001644 -5.999992 0.000000 0.000000 -1 +0 17.513138 10.005877 -5.999992 0.000000 0.000000 -1 +0 16.503641 11.993057 -3.999992 0.000000 0.000000 -1 +0 -3.501126 29.003641 3.999992 0.000000 0.000000 -1 +0 -2.470720 27.005108 5.999992 0.000000 0.000000 -1 +0 2.549132 27.005108 5.999992 0.000000 0.000000 -1 +0 3.515003 29.000792 3.999992 0.000000 0.000000 -1 +0 7.480893 22.005108 5.999992 0.000000 0.000000 -1 +0 9.515003 22.992289 3.999992 0.000000 0.000000 -1 +0 7.487095 -0.006020 5.999992 0.000000 0.000000 -1 +0 9.498875 3.988278 3.999992 0.000000 0.000000 -1 +0 -7.464517 22.005112 5.999992 0.000000 0.000000 -1 +0 -9.501126 22.993713 3.999992 0.000000 0.000000 -1 +0 -7.470722 0.000184 5.999992 0.000000 0.000000 -1 +0 -9.496346 5.006423 3.999992 0.000000 0.000000 -1 +0 -16.489040 12.002391 3.999992 0.000000 0.000000 -1 +0 -17.519123 9.995950 5.999992 0.000000 0.000000 -1 +0 -23.502296 9.990573 5.999992 0.000000 0.000000 -1 +0 -24.496029 11.991723 3.999992 0.000000 0.000000 -1 +0 -27.479452 5.977798 5.999992 0.000000 0.000000 -1 +0 -29.504972 7.003297 3.999992 0.000000 0.000000 -1 +0 -27.479452 0.022464 5.999992 0.000000 0.000000 -1 +0 -29.490093 -1.017060 3.999992 0.000000 0.000000 -1 +0 -0.491594 -27.002575 5.999992 0.000000 0.000000 -1 +0 -0.502999 -29.981012 3.999992 0.000000 0.000000 -1 +0 0.540664 -26.992649 5.999992 0.000000 0.000000 -1 +0 0.530027 -29.981014 3.999992 0.000000 0.000000 -1 +0 29.517078 -0.995554 3.999992 0.000000 0.000000 -1 +0 27.495455 -0.000695 5.999992 0.000000 0.000000 -1 +0 27.501657 5.992133 5.999992 0.000000 0.000000 -1 +0 29.517847 6.998812 3.999992 0.000000 0.000000 -1 +0 24.519735 12.004406 3.999992 0.000000 0.000000 -1 +0 23.485622 10.001644 5.999992 0.000000 0.000000 -1 +0 17.513138 10.005877 5.999992 0.000000 0.000000 -1 +0 16.503641 11.993057 3.999992 0.000000 0.000000 -1 +64 +0.169806 0.655192 -0.736131 +-0.250549 0.617210 -0.745840 +-0.275250 0.836959 -0.473009 +0.459405 0.785493 -0.414666 +0.577221 0.333428 -0.745414 +0.881916 0.227749 -0.412741 +0.092722 0.371508 -0.923788 +0.169860 0.707114 -0.686394 +-0.573749 0.332170 -0.748649 +-0.879427 0.314309 -0.357516 +-0.141921 0.315683 -0.938191 +-0.262755 0.616506 -0.742213 +0.344982 0.840986 -0.416810 +0.248845 0.616689 -0.746840 +-0.168686 0.653382 -0.737995 +-0.385134 0.776941 -0.498031 +-0.575127 0.332429 -0.747475 +-0.879422 0.314342 -0.357500 +-0.650095 -0.165820 -0.741539 +-0.785052 -0.458118 -0.416920 +-0.329746 -0.522471 -0.786315 +-0.234369 -0.850153 -0.471498 +0.251898 -0.537389 -0.804835 +0.353500 -0.814060 -0.460808 +0.840352 -0.346008 -0.417236 +0.615558 -0.250982 -0.747059 +0.615191 0.250029 -0.747680 +0.834314 0.438972 -0.333503 +0.274670 0.837106 -0.473085 +0.249963 0.616515 -0.746611 +-0.167195 0.654806 -0.737072 +-0.506100 0.780635 -0.366705 +-0.391918 0.788978 0.473195 +-0.250549 0.617210 0.745840 +0.169806 0.655192 0.736131 +0.325964 0.848082 0.417737 +0.577221 0.333428 0.745414 +0.832330 0.366307 0.415988 +0.092722 0.371508 0.923788 +0.236113 0.821103 0.519655 +-0.573749 0.332170 0.748649 +-0.825071 0.272863 0.494776 +-0.141921 0.315683 0.938191 +-0.318851 0.756020 0.571636 +0.317238 0.776006 0.545137 +0.248845 0.616689 0.746840 +-0.168686 0.653382 0.737995 +-0.395630 0.844991 0.359815 +-0.575127 0.332429 0.747475 +-0.825185 0.272671 0.494692 +-0.650095 -0.165820 0.741539 +-0.847433 -0.324937 0.419849 +-0.329917 -0.522977 0.785907 +-0.375728 -0.796362 0.473959 +0.252032 -0.537990 0.804392 +0.373498 -0.875660 0.306134 +0.775167 -0.318440 0.545629 +0.615558 -0.250982 0.747059 +0.615191 0.250029 0.747680 +0.901716 0.275241 0.333393 +0.391503 0.789137 0.473273 +0.249963 0.616515 0.746611 +-0.167195 0.654806 0.737072 +-0.366036 0.853817 0.370155 +96 +0 0 1 2 0 1 2 1 +0 0 2 3 0 2 3 1 +0 0 3 4 0 3 4 1 +0 4 3 5 4 3 5 1 +0 5 6 4 5 6 4 1 +0 5 7 6 5 7 6 1 +0 2 1 8 2 1 8 1 +0 8 9 2 8 9 2 1 +0 9 8 10 9 8 10 1 +0 10 11 9 10 11 9 1 +0 11 10 12 11 10 12 1 +0 12 10 13 12 10 13 1 +0 12 13 14 12 13 14 1 +0 14 15 12 14 15 12 1 +0 15 14 16 15 14 16 1 +0 16 17 15 16 17 15 1 +0 17 16 18 17 16 18 1 +0 18 19 17 18 19 17 1 +0 18 20 19 18 20 19 1 +0 19 20 21 19 20 21 1 +0 21 20 22 21 20 22 1 +0 23 21 22 23 21 22 1 +0 23 22 24 23 22 24 1 +0 22 25 24 22 25 24 1 +0 24 25 26 24 25 26 1 +0 26 27 24 26 27 24 1 +0 27 26 28 27 26 28 1 +0 28 26 29 28 26 29 1 +0 28 29 30 28 29 30 1 +0 30 31 28 30 31 28 1 +0 31 30 6 31 30 6 1 +0 31 6 7 31 6 7 1 +0 32 33 34 32 33 34 1 +0 35 32 34 35 32 34 1 +0 36 35 34 36 35 34 1 +0 37 35 36 37 35 36 1 +0 36 38 37 36 38 37 1 +0 38 39 37 38 39 37 1 +0 40 33 32 40 33 32 1 +0 32 41 40 32 41 40 1 +0 42 40 41 42 40 41 1 +0 41 43 42 41 43 42 1 +0 44 42 43 44 42 43 1 +0 45 42 44 45 42 44 1 +0 46 45 44 46 45 44 1 +0 44 47 46 44 47 46 1 +0 48 46 47 48 46 47 1 +0 47 49 48 47 49 48 1 +0 50 48 49 50 48 49 1 +0 49 51 50 49 51 50 1 +0 51 52 50 51 52 50 1 +0 53 52 51 53 52 51 1 +0 54 52 53 54 52 53 1 +0 54 53 55 54 53 55 1 +0 56 54 55 56 54 55 1 +0 56 57 54 56 57 54 1 +0 58 57 56 58 57 56 1 +0 56 59 58 56 59 58 1 +0 60 58 59 60 58 59 1 +0 61 58 60 61 58 60 1 +0 62 61 60 62 61 60 1 +0 60 63 62 60 63 62 1 +0 38 62 63 38 62 63 1 +0 39 38 63 39 38 63 1 +0 7 5 39 7 5 39 1 +0 39 5 37 39 5 37 1 +0 37 5 3 37 5 3 1 +0 3 35 37 3 35 37 1 +0 35 3 2 35 3 2 1 +0 2 32 35 2 32 35 1 +0 32 2 9 32 2 9 1 +0 9 41 32 9 41 32 1 +0 43 41 9 43 41 9 1 +0 9 11 43 9 11 43 1 +0 43 11 12 43 11 12 1 +0 44 43 12 44 43 12 1 +0 47 44 12 47 44 12 1 +0 12 15 47 12 15 47 1 +0 15 17 47 15 17 47 1 +0 49 47 17 49 47 17 1 +0 51 49 17 51 49 17 1 +0 17 19 51 17 19 51 1 +0 53 51 19 53 51 19 1 +0 19 21 53 19 21 53 1 +0 21 23 55 21 23 55 1 +0 55 23 24 55 23 24 1 +0 24 56 55 24 56 55 1 +0 24 27 59 24 27 59 1 +0 59 56 24 59 56 24 1 +0 27 28 60 27 28 60 1 +0 60 59 27 60 59 27 1 +0 28 31 63 28 31 63 1 +0 63 60 28 63 60 28 1 +0 31 7 39 31 7 39 1 +0 39 63 31 39 63 31 1 +0 55 53 21 55 53 21 1 +"inside" 0 2 +136 +0 0.545871 6.574782 4.000001 0.082192 0.409653 -1 +0 0.527650 6.000967 6.000000 0.082126 0.416299 -1 +0 3.517759 8.995436 6.000000 0.088233 0.377420 -1 +0 3.013403 9.081276 4.000001 0.087090 0.376297 -1 +0 3.514073 18.989233 6.000000 0.088225 0.246740 -1 +0 3.013403 19.081276 4.000001 0.087090 0.245537 -1 +0 1.491741 20.995436 6.000000 0.083642 0.220507 -1 +0 -1.478017 20.995436 6.000000 0.076913 0.220507 -1 +0 -1.506077 20.652702 4.000001 0.076850 0.224988 -1 +0 -3.484221 19.005362 6.000000 0.072367 0.246529 -1 +0 -2.986597 19.081276 4.000001 0.073495 0.245537 -1 +0 -3.478692 9.015251 6.000000 0.072380 0.377160 -1 +0 -0.476883 6.005363 6.000000 0.078414 0.416249 -1 +0 -0.467116 6.613743 4.000001 0.078449 0.409203 -1 +0 -0.498861 -7.986947 6.000000 0.079132 0.611176 -1 +0 0.515562 -7.994639 6.000000 0.081431 0.611277 -1 +0 0.526949 -7.493545 4.000000 0.081456 0.604724 -1 +0 3.492485 -4.994639 6.000000 0.088176 0.565923 -1 +0 3.000633 -4.993546 4.000000 0.087061 0.565909 -1 +0 3.507869 6.000966 6.000000 0.088211 0.416576 -1 +0 2.995759 4.994668 4.000000 0.087050 0.429734 -1 +0 0.522155 2.996570 6.000000 0.082559 0.450850 -1 +0 -0.472487 3.005361 6.000000 0.077660 0.450736 -1 +0 -0.486608 2.542022 4.000000 0.077629 0.456794 -1 +0 -3.474295 5.996571 6.000000 0.072390 0.416633 -1 +0 -3.004789 4.996567 4.000000 0.073454 0.429710 -1 +0 -3.498861 -4.986946 6.000000 0.072334 0.565822 -1 +0 -0.516910 -7.467229 4.000000 0.079091 0.604379 -1 +0 -0.571486 -22.010983 6.000000 0.078967 0.782863 -1 +0 0.539625 -21.973946 6.000000 0.081485 0.782379 -1 +0 0.506847 -21.462547 4.000000 0.081411 0.775691 -1 +0 22.490080 0.991055 6.000000 0.129343 0.482086 -1 +0 22.011435 0.996168 4.000000 0.128259 0.482019 -1 +0 22.477116 4.003556 6.000000 0.129174 0.447705 -1 +0 22.002260 4.005342 4.000000 0.128099 0.447682 -1 +0 21.502117 4.991519 6.000000 0.126965 0.434786 -1 +0 21.506847 4.546627 4.000000 0.126976 0.440604 -1 +0 18.494793 4.993823 6.000000 0.122100 0.434200 -1 +0 7.507869 -6.010023 6.000000 0.097274 0.573633 -1 +0 7.534371 -6.462548 4.000000 0.097334 0.579549 -1 +0 4.530946 -6.002331 6.000000 0.090529 0.573532 -1 +0 4.497674 -6.517594 4.000000 0.090453 0.580270 -1 +0 0.515562 -10.010023 6.000000 0.081431 0.625937 -1 +0 -0.506554 -10.002331 6.000000 0.079114 0.625836 -1 +0 -0.513281 -10.449017 4.000000 0.079099 0.631677 -1 +0 -4.498861 -6.002331 6.000000 0.070068 0.573532 -1 +0 -7.476655 -6.006133 6.000000 0.063321 0.573581 -1 +0 -7.474803 -6.453374 4.000000 0.063325 0.579429 -1 +0 -18.496527 5.005362 6.000000 0.038421 0.433492 -1 +0 -21.486635 5.000965 6.000000 0.033316 0.434663 -1 +0 -21.474804 4.555800 4.000000 0.033342 0.440484 -1 +0 -22.497412 4.003303 6.000000 0.031025 0.447708 -1 +0 -21.988565 3.996168 4.000000 0.032178 0.447802 -1 +0 -22.497414 1.011768 6.000000 0.030886 0.481258 -1 +0 -21.997740 0.996168 4.000000 0.032018 0.481462 -1 +0 -21.997740 0.996168 -4.000000 0.032018 0.481462 -1 +0 -21.988565 3.996168 -4.000000 0.032178 0.447802 -1 +0 -18.493153 4.537452 -4.000000 0.038428 0.439610 -1 +0 -21.474804 4.555800 -4.000000 0.033342 0.440484 -1 +0 -0.502327 -21.471722 -4.000000 0.079124 0.775811 -1 +0 -0.513281 -10.449017 -4.000000 0.079099 0.631677 -1 +0 0.511512 -10.473810 -4.000000 0.081421 0.632002 -1 +0 0.506847 -21.462547 -4.000000 0.081411 0.775691 -1 +0 -7.474803 -6.453374 -4.000000 0.063325 0.579429 -1 +0 -4.502326 -6.471723 -4.000000 0.070060 0.579670 -1 +0 4.497674 -6.517594 -4.000000 0.090453 0.580270 -1 +0 7.534371 -6.462548 -4.000000 0.097334 0.579549 -1 +0 22.011435 0.996168 -4.000000 0.128259 0.482019 -1 +0 18.506847 4.528278 -4.000000 0.122127 0.440287 -1 +0 21.506847 4.546627 -4.000000 0.126976 0.440604 -1 +0 22.002260 4.005342 -4.000000 0.128099 0.447682 -1 +0 -0.467116 6.575283 -4.000001 0.078449 0.409648 -1 +0 -2.999583 9.042815 -4.000001 0.073465 0.376800 -1 +0 3.013403 9.042815 -4.000001 0.087090 0.376800 -1 +0 0.545871 6.536322 -4.000001 0.082192 0.410099 -1 +0 -2.986597 19.042814 -4.000001 0.073495 0.246039 -1 +0 -1.506077 20.614243 -4.000001 0.076850 0.225491 -1 +0 1.493923 20.614243 -4.000001 0.083647 0.225491 -1 +0 3.013403 19.042814 -4.000001 0.087090 0.246039 -1 +0 -2.999583 9.081276 4.000001 0.073465 0.376297 -1 +0 1.493923 20.652702 4.000001 0.083647 0.224988 -1 +0 -3.484221 19.005363 -5.999992 0.072367 0.246529 -1 +0 -1.478017 20.995438 -5.999992 0.076913 0.220507 -1 +0 1.491741 20.995438 -5.999992 0.083642 0.220507 -1 +0 3.514073 18.989235 -5.999992 0.088225 0.246740 -1 +0 3.517759 8.995436 -5.999992 0.088233 0.377420 -1 +0 0.527650 6.000967 -5.999992 0.082126 0.416299 -1 +0 -0.476883 6.005363 -5.999992 0.078414 0.416249 -1 +0 -3.478692 9.015251 -5.999992 0.072380 0.377160 -1 +0 0.526949 -7.493545 -4.000000 0.081456 0.604724 -1 +0 -0.516910 -7.467229 -4.000000 0.079091 0.604379 -1 +0 -2.999367 -5.011089 -4.000000 0.073466 0.566138 -1 +0 3.000633 -4.993546 -4.000000 0.087061 0.565909 -1 +0 -3.004789 4.996567 -4.000000 0.073454 0.429710 -1 +0 -0.486608 2.542022 -4.000000 0.077629 0.456794 -1 +0 0.522483 2.523840 -4.000000 0.082560 0.457032 -1 +0 2.995759 4.994668 -4.000000 0.087050 0.429734 -1 +0 0.515562 -7.994638 -5.999992 0.081431 0.611277 -1 +0 -0.498861 -7.986946 -5.999992 0.079132 0.611176 -1 +0 -3.498861 -4.986946 -5.999992 0.072334 0.565822 -1 +0 -3.474295 5.996571 -5.999992 0.072390 0.416633 -1 +0 -0.472487 3.005361 -5.999992 0.077660 0.450736 -1 +0 0.522155 2.996570 -5.999992 0.082559 0.450850 -1 +0 3.507869 6.000966 -5.999992 0.088211 0.416576 -1 +0 3.492485 -4.994639 -5.999992 0.088176 0.565923 -1 +0 -2.999367 -5.011089 4.000000 0.073466 0.566138 -1 +0 0.522483 2.523840 4.000000 0.082560 0.457032 -1 +0 -18.493153 4.537452 4.000000 0.038428 0.439610 -1 +0 -0.502327 -21.471722 4.000000 0.079124 0.775811 -1 +0 0.511512 -10.473810 4.000000 0.081421 0.632002 -1 +0 -4.502326 -6.471723 4.000000 0.070060 0.579670 -1 +0 18.506847 4.528278 4.000000 0.122127 0.440287 -1 +0 0.539625 -21.973946 -5.999992 0.081485 0.782379 -1 +0 -0.571486 -22.010983 -5.999992 0.078967 0.782863 -1 +0 -22.497414 1.011768 -5.999992 0.030886 0.481258 -1 +0 -22.497412 4.003303 -5.999992 0.031025 0.447708 -1 +0 -21.486635 5.000965 -5.999992 0.033316 0.434663 -1 +0 -18.496527 5.005362 -5.999992 0.038421 0.433492 -1 +0 -7.476655 -6.006133 -5.999992 0.063321 0.573581 -1 +0 -4.498861 -6.002331 -5.999992 0.070068 0.573532 -1 +0 -0.506554 -10.002331 -5.999992 0.079114 0.625836 -1 +0 0.515562 -10.010023 -5.999992 0.081431 0.625937 -1 +0 4.530946 -6.002331 -5.999992 0.090529 0.573532 -1 +0 7.507869 -6.010023 -5.999992 0.097274 0.573633 -1 +0 18.494793 4.993823 -5.999992 0.122100 0.434200 -1 +0 21.502117 4.991519 -5.999992 0.126965 0.434786 -1 +0 22.477116 4.003556 -5.999992 0.129174 0.447705 -1 +0 22.490080 0.991055 -5.999992 0.129343 0.482086 -1 +0 27.495455 -0.000695 6.000000 0.139989 0.500622 -1 +0 27.501657 5.992133 6.000000 0.140002 0.422259 -1 +0 -27.479452 5.977798 6.000000 0.020154 0.421890 -1 +0 -27.479452 0.022464 6.000000 0.020154 0.499762 -1 +0 -27.479452 0.022464 -5.999992 0.020154 0.499762 -1 +0 -27.479452 5.977798 -5.999992 0.020154 0.421890 -1 +0 27.495455 -0.000695 -5.999992 0.139989 0.500622 -1 +0 27.501657 5.992133 -5.999992 0.140002 0.422259 -1 +132 +-0.426003 0.735887 0.526300 +-0.233622 0.933613 0.271639 +-0.840566 0.491072 0.228685 +-0.417847 0.108732 0.901987 +-0.941515 -0.251044 0.224779 +-0.757997 -0.443457 0.478316 +-0.381686 -0.910051 0.161625 +0.508190 -0.847889 0.151087 +0.164191 -0.601932 0.781486 +0.901153 -0.379340 0.209819 +0.835235 -0.343913 0.429077 +0.896069 0.375877 0.236171 +0.374691 0.886508 0.271497 +0.303934 0.709402 0.635904 +0.258768 0.936216 0.237776 +-0.497396 0.841970 0.209006 +-0.175843 0.691709 0.700441 +-0.900271 0.374705 0.221605 +-0.553527 0.230042 0.800430 +-0.792205 -0.442883 0.419841 +0.198560 -0.647221 0.735988 +0.370703 -0.903729 0.214134 +-0.379445 -0.900750 0.211355 +-0.267234 -0.635861 0.724063 +-0.258962 -0.891115 0.372629 +0.571732 -0.320158 0.755394 +0.900007 0.376839 0.219045 +0.444512 0.743294 0.499923 +0.375212 0.894913 0.241549 +-0.399682 0.886488 0.233225 +-0.241609 0.544018 0.803535 +-0.850800 0.481857 0.209650 +-0.493354 0.125175 0.860775 +-0.942194 -0.249067 0.224134 +-0.696036 -0.345465 0.629434 +-0.513100 -0.837067 0.189863 +-0.193002 -0.697426 0.690179 +0.377837 -0.901832 0.209617 +0.375427 -0.902918 0.209271 +0.268558 -0.635314 0.724053 +0.253267 -0.940355 0.227132 +0.373504 -0.627253 0.683409 +0.368185 -0.905916 0.209181 +-0.380733 -0.902178 0.202776 +-0.312068 -0.732110 0.605498 +-0.377631 -0.902363 0.207692 +-0.376334 -0.904227 0.201855 +-0.306911 -0.733768 0.606126 +-0.377530 -0.902841 0.205790 +0.374445 -0.904627 0.203569 +0.350872 -0.823859 0.445136 +0.848189 -0.485865 0.210973 +0.632921 -0.140551 0.761352 +0.941860 0.240138 0.235017 +0.629501 0.356219 0.690533 +0.694496 0.177608 -0.697230 +0.586021 -0.294361 -0.754938 +-0.263615 -0.446117 -0.855270 +0.229548 -0.830755 -0.507103 +0.177857 0.424208 -0.887927 +-0.240617 -0.559147 -0.793384 +0.260430 -0.640802 -0.722183 +-0.150200 0.344553 -0.926673 +-0.185852 -0.700887 -0.688634 +-0.373313 -0.631262 -0.679813 +0.235541 -0.551850 -0.799988 +0.268558 -0.635314 -0.724053 +-0.558017 0.224228 -0.798961 +0.234425 -0.556459 -0.797119 +-0.313581 -0.728305 -0.609293 +-0.642324 -0.210083 -0.737079 +0.306530 0.716441 -0.626699 +0.577698 0.154752 -0.801447 +-0.378603 0.221494 -0.898666 +-0.289905 0.722738 -0.627379 +0.757912 -0.438868 -0.482663 +0.191605 -0.440985 -0.876823 +-0.191682 -0.713712 -0.673701 +-0.829575 -0.344609 -0.439374 +0.428936 0.181684 0.884876 +-0.244206 -0.573288 0.782115 +0.941337 -0.250330 -0.226316 +0.383959 -0.906209 -0.177091 +-0.503088 -0.847547 -0.169017 +-0.899997 -0.379100 -0.215146 +-0.938372 0.246915 -0.241850 +-0.367118 0.897412 -0.244697 +0.375924 0.890688 -0.255648 +0.839355 0.498481 -0.216794 +-0.175843 0.691709 -0.700442 +0.444512 0.743293 -0.499924 +0.490340 0.130046 -0.861774 +-0.553526 0.230042 -0.800431 +-0.189592 -0.651097 -0.734933 +-0.183159 -0.436075 -0.881074 +0.177328 -0.699077 -0.692709 +0.198560 -0.647221 -0.735989 +-0.497396 0.841970 -0.209006 +0.258768 0.936216 -0.237777 +0.842085 0.497804 -0.207568 +0.793869 -0.443083 -0.416472 +-0.378237 -0.899805 -0.217459 +0.495488 -0.844803 -0.201987 +-0.792204 -0.442883 -0.419843 +-0.900271 0.374705 -0.221605 +0.349363 0.147326 0.925332 +0.226644 -0.557256 0.798810 +-0.147967 -0.352058 0.924208 +0.104073 0.244752 0.963984 +0.175034 -0.436327 0.882600 +-0.233891 -0.556756 0.797068 +0.234425 -0.556460 0.797118 +-0.394645 0.888735 -0.233248 +0.368762 0.894189 -0.253853 +0.848431 0.481177 -0.220528 +0.938303 -0.250853 -0.238035 +0.508114 -0.838633 -0.196251 +-0.250212 -0.943696 -0.216407 +-0.497086 -0.846376 -0.191191 +-0.250545 -0.943250 -0.217960 +-0.383686 -0.900106 -0.206384 +0.372887 -0.904057 -0.208891 +0.378857 -0.900080 -0.215227 +0.375427 -0.902917 -0.209272 +0.377837 -0.901831 -0.209618 +-0.380618 -0.902859 -0.199938 +-0.905945 -0.366727 -0.211603 +-0.905726 0.363690 -0.217691 +-0.341889 0.000354 0.939740 +0.342244 0.000000 0.939611 +0.342243 0.000000 -0.939612 +-0.341888 0.000354 -0.939741 +184 +0 0 1 2 0 1 2 1 +0 3 2 4 3 2 4 1 +0 5 4 6 5 4 6 1 +0 6 7 8 6 7 8 1 +0 7 9 10 7 9 10 1 +0 10 9 11 10 9 11 1 +0 11 12 13 11 12 13 1 +0 13 12 1 13 12 1 1 +0 14 15 16 14 15 16 1 +0 15 17 18 15 17 18 1 +0 18 17 19 18 17 19 1 +0 20 19 21 20 19 21 1 +0 21 22 23 21 22 23 1 +0 23 22 24 23 22 24 1 +0 25 24 26 25 24 26 1 +0 26 14 27 26 14 27 1 +0 28 29 30 28 29 30 1 +0 30 29 31 30 29 31 1 +0 32 31 33 32 31 33 1 +0 34 33 35 34 33 35 1 +0 36 35 37 36 35 37 1 +0 37 38 39 37 38 39 1 +0 39 38 40 39 38 40 1 +0 41 40 42 41 40 42 1 +0 42 43 44 42 43 44 1 +0 44 43 45 44 43 45 1 +0 45 46 47 45 46 47 1 +0 47 46 48 47 46 48 1 +0 48 49 50 48 49 50 1 +0 50 49 51 50 49 51 1 +0 52 51 53 52 51 53 1 +0 54 53 28 54 53 28 1 +0 55 56 57 55 56 57 1 +0 57 56 58 57 56 58 1 +0 59 55 57 59 55 57 1 +0 59 60 61 59 60 61 1 +0 61 62 59 61 62 59 1 +0 59 57 63 59 57 63 1 +0 63 64 59 63 64 59 1 +0 59 64 60 59 64 60 1 +0 61 65 62 61 65 62 1 +0 62 65 66 62 65 66 1 +0 67 62 66 67 62 66 1 +0 66 68 67 66 68 67 1 +0 67 68 69 67 68 69 1 +0 69 70 67 69 70 67 1 +0 71 72 73 71 72 73 1 +0 73 74 71 73 74 71 1 +0 72 75 76 72 75 76 1 +0 77 78 73 77 78 73 1 +0 73 72 76 73 72 76 1 +0 76 77 73 76 77 73 1 +0 3 79 13 3 79 13 1 +0 13 0 3 13 0 3 1 +0 8 10 79 8 10 79 1 +0 3 5 80 3 5 80 1 +0 8 79 3 8 79 3 1 +0 3 80 8 3 80 8 1 +0 2 3 0 2 3 0 1 +0 4 5 3 4 5 3 1 +0 6 80 5 6 80 5 1 +0 8 80 6 8 80 6 1 +0 10 8 7 10 8 7 1 +0 11 79 10 11 79 10 1 +0 13 79 11 13 79 11 1 +0 1 0 13 1 0 13 1 +0 75 81 82 75 81 82 1 +0 82 76 75 82 76 75 1 +0 82 83 77 82 83 77 1 +0 77 76 82 77 76 82 1 +0 83 84 78 83 84 78 1 +0 78 77 83 78 77 83 1 +0 78 84 85 78 84 85 1 +0 85 73 78 85 73 78 1 +0 73 85 86 73 85 86 1 +0 86 74 73 86 74 73 1 +0 86 87 71 86 87 71 1 +0 71 74 86 71 74 86 1 +0 71 87 88 71 87 88 1 +0 88 72 71 88 72 71 1 +0 72 88 81 72 88 81 1 +0 81 75 72 81 75 72 1 +0 89 90 91 89 90 91 1 +0 89 91 92 89 91 92 1 +0 91 93 94 91 93 94 1 +0 95 96 92 95 96 92 1 +0 92 91 94 92 91 94 1 +0 92 94 95 92 94 95 1 +0 89 97 98 89 97 98 1 +0 98 90 89 98 90 89 1 +0 90 98 99 90 98 99 1 +0 90 99 91 90 99 91 1 +0 91 99 100 91 99 100 1 +0 100 93 91 100 93 91 1 +0 101 94 93 101 94 93 1 +0 93 100 101 93 100 101 1 +0 95 94 101 95 94 101 1 +0 101 102 95 101 102 95 1 +0 96 95 102 96 95 102 1 +0 102 103 96 102 103 96 1 +0 103 104 92 103 104 92 1 +0 92 96 103 92 96 103 1 +0 92 104 97 92 104 97 1 +0 97 89 92 97 89 92 1 +0 105 27 16 105 27 16 1 +0 18 105 16 18 105 16 1 +0 23 25 105 23 25 105 1 +0 18 20 106 18 20 106 1 +0 23 105 18 23 105 18 1 +0 106 23 18 106 23 18 1 +0 16 27 14 16 27 14 1 +0 15 18 16 15 18 16 1 +0 19 20 18 19 20 18 1 +0 21 106 20 21 106 20 1 +0 23 106 21 23 106 21 1 +0 24 25 23 24 25 23 1 +0 26 105 25 26 105 25 1 +0 27 105 26 27 105 26 1 +0 107 52 54 107 52 54 1 +0 50 52 107 50 52 107 1 +0 107 54 108 107 54 108 1 +0 109 44 108 109 44 108 1 +0 108 30 109 108 30 109 1 +0 47 107 108 47 107 108 1 +0 108 110 47 108 110 47 1 +0 44 110 108 44 110 108 1 +0 30 41 109 30 41 109 1 +0 39 41 30 39 41 30 1 +0 39 30 32 39 30 32 1 +0 32 111 39 32 111 39 1 +0 36 111 32 36 111 32 1 +0 32 34 36 32 34 36 1 +0 30 108 28 30 108 28 1 +0 31 32 30 31 32 30 1 +0 33 34 32 33 34 32 1 +0 35 36 34 35 36 34 1 +0 37 111 36 37 111 36 1 +0 39 111 37 39 111 37 1 +0 40 41 39 40 41 39 1 +0 109 41 42 109 41 42 1 +0 44 109 42 44 109 42 1 +0 45 110 44 45 110 44 1 +0 47 110 45 47 110 45 1 +0 48 107 47 48 107 47 1 +0 50 107 48 50 107 48 1 +0 51 52 50 51 52 50 1 +0 53 54 52 53 54 52 1 +0 28 108 54 28 108 54 1 +0 112 113 59 112 113 59 1 +0 59 62 112 59 62 112 1 +0 114 55 59 114 55 59 1 +0 59 113 114 59 113 114 1 +0 55 114 115 55 114 115 1 +0 115 56 55 115 56 55 1 +0 56 115 116 56 115 116 1 +0 116 58 56 116 58 56 1 +0 58 116 117 58 116 117 1 +0 117 57 58 117 57 58 1 +0 57 117 118 57 117 118 1 +0 118 63 57 118 63 57 1 +0 63 118 119 63 118 119 1 +0 64 63 119 64 63 119 1 +0 120 60 64 120 60 64 1 +0 119 120 64 119 120 64 1 +0 61 60 120 61 60 120 1 +0 120 121 61 120 121 61 1 +0 61 121 122 61 121 122 1 +0 122 65 61 122 65 61 1 +0 66 65 122 66 65 122 1 +0 122 123 66 122 123 66 1 +0 66 123 124 66 123 124 1 +0 124 68 66 124 68 66 1 +0 69 68 124 69 68 124 1 +0 124 125 69 124 125 69 1 +0 126 70 69 126 70 69 1 +0 69 125 126 69 125 126 1 +0 126 127 67 126 127 67 1 +0 67 70 126 67 70 126 1 +0 67 127 112 67 127 112 1 +0 112 62 67 112 62 67 1 +0 128 129 34 128 128 34 1 +0 130 131 52 129 129 52 1 +0 132 133 56 130 130 56 1 +0 134 70 135 131 70 131 1 +"scroller" 0 1 +96 +0 -1.478017 20.995436 6.000000 0.076939 0.215925 -1 +0 1.491741 20.995436 6.000000 0.083416 0.215925 -1 +0 2.549132 27.005108 6.000000 0.085722 0.136089 -1 +0 -2.470720 27.005108 6.000000 0.074773 0.136089 -1 +0 3.514073 18.989233 6.000000 0.087827 0.240642 -1 +0 7.480893 22.005108 6.000000 0.096479 0.201305 -1 +0 -7.464517 22.005110 6.000000 0.063881 0.201305 -1 +0 -3.484221 19.005362 6.000000 0.072382 0.241157 -1 +0 3.517759 8.995436 6.000000 0.087745 0.381147 -1 +0 -3.478692 9.015251 6.000000 0.072303 0.381614 -1 +0 -0.476883 6.005363 6.000000 0.077857 0.415795 -1 +0 -3.474295 5.996571 6.000000 0.072223 0.416635 -1 +0 -0.472487 3.005361 6.000000 0.077713 0.449122 -1 +0 0.522155 2.996570 6.000000 0.082580 0.449237 -1 +0 0.527650 6.000967 6.000000 0.082488 0.415853 -1 +0 3.507869 6.000966 6.000000 0.087724 0.416578 -1 +0 -0.506554 -10.002331 6.000000 0.077611 0.635467 -1 +0 0.515562 -10.010023 6.000000 0.082824 0.635567 -1 +0 0.515562 -7.994639 6.000000 0.081197 0.612182 -1 +0 -0.498861 -7.986947 6.000000 0.078984 0.612080 -1 +0 7.487095 -0.006020 6.000000 0.096403 0.494928 -1 +0 -7.470722 0.000184 6.000000 0.063777 0.494848 -1 +0 -3.498861 -4.986946 6.000000 0.072169 0.572951 -1 +0 3.492485 -4.994639 6.000000 0.087689 0.573052 -1 +0 -4.498861 -6.002331 6.000000 0.068903 0.583294 -1 +0 4.530946 -6.002331 6.000000 0.091582 0.583294 -1 +0 7.507869 -6.010023 6.000000 0.098076 0.583394 -1 +0 -7.476655 -6.006133 6.000000 0.062408 0.583344 -1 +0 -18.496527 5.005362 6.000000 0.038553 0.433916 -1 +0 -17.519123 9.995950 6.000000 0.041860 0.364471 -1 +0 -21.486635 5.000965 6.000000 0.033025 0.433973 -1 +0 -23.502296 9.990573 6.000000 0.028809 0.364541 -1 +0 -27.479452 5.977798 6.000000 0.020135 0.416880 -1 +0 -22.497412 4.003303 6.000000 0.030821 0.446985 -1 +0 -27.479452 0.022464 6.000000 0.020135 0.494557 -1 +0 -22.497414 1.011768 6.000000 0.030821 0.486005 -1 +0 -0.491594 -27.002575 6.000000 0.079000 0.866634 -1 +0 -0.571486 -22.010983 6.000000 0.078826 0.781945 -1 +0 0.540664 -26.992649 6.000000 0.081251 0.866504 -1 +0 0.539625 -21.973946 6.000000 0.081249 0.781461 -1 +0 27.495455 -0.000695 6.000000 0.140046 0.494859 -1 +0 22.490080 0.991055 6.000000 0.129037 0.485550 -1 +0 22.477116 4.003556 6.000000 0.129009 0.446257 -1 +0 27.501657 5.992133 6.000000 0.140059 0.416693 -1 +0 23.485622 10.001644 6.000000 0.131299 0.364396 -1 +0 21.502117 4.991519 6.000000 0.126882 0.433371 -1 +0 17.513138 10.005877 6.000000 0.118271 0.364341 -1 +0 18.494793 4.993823 6.000000 0.121407 0.433341 -1 +0 2.549132 27.005108 -5.999992 0.085722 0.136089 -1 +0 1.491741 20.995438 -5.999992 0.083416 0.215925 -1 +0 -1.478017 20.995438 -5.999992 0.076939 0.215925 -1 +0 -2.470720 27.005108 -5.999992 0.074773 0.136089 -1 +0 7.480893 22.005108 -5.999992 0.096479 0.201305 -1 +0 3.514073 18.989235 -5.999992 0.087827 0.240642 -1 +0 -3.484221 19.005363 -5.999992 0.072382 0.241157 -1 +0 -7.464517 22.005112 -5.999992 0.063881 0.201305 -1 +0 3.517759 8.995436 -5.999992 0.087745 0.381147 -1 +0 -3.478692 9.015251 -5.999992 0.072303 0.381614 -1 +0 -3.474295 5.996571 -5.999992 0.072223 0.416635 -1 +0 -0.476883 6.005363 -5.999992 0.077857 0.415795 -1 +0 -0.472487 3.005361 -5.999992 0.077713 0.449122 -1 +0 0.527650 6.000967 -5.999992 0.082488 0.415853 -1 +0 0.522155 2.996570 -5.999992 0.082580 0.449237 -1 +0 3.507869 6.000966 -5.999992 0.087724 0.416578 -1 +0 0.515562 -7.994638 -5.999992 0.081197 0.612182 -1 +0 0.515562 -10.010023 -5.999992 0.082824 0.635567 -1 +0 -0.506554 -10.002331 -5.999992 0.077611 0.635467 -1 +0 -0.498861 -7.986946 -5.999992 0.078984 0.612080 -1 +0 7.487095 -0.006020 -5.999992 0.096403 0.494928 -1 +0 -7.470722 0.000184 -5.999992 0.063777 0.494848 -1 +0 -3.498861 -4.986946 -5.999992 0.072169 0.572951 -1 +0 3.492485 -4.994639 -5.999992 0.087689 0.573052 -1 +0 -4.498861 -6.002331 -5.999992 0.068903 0.583294 -1 +0 4.530946 -6.002331 -5.999992 0.091582 0.583294 -1 +0 7.507869 -6.010023 -5.999992 0.098076 0.583394 -1 +0 -7.476655 -6.006133 -5.999992 0.062408 0.583344 -1 +0 -18.496527 5.005362 -5.999992 0.038553 0.433916 -1 +0 -17.519123 9.995950 -5.999992 0.041860 0.364471 -1 +0 -21.486635 5.000965 -5.999992 0.033025 0.433973 -1 +0 -23.502296 9.990573 -5.999992 0.028809 0.364541 -1 +0 -27.479452 5.977798 -5.999992 0.020135 0.416880 -1 +0 -22.497412 4.003303 -5.999992 0.030821 0.446985 -1 +0 -27.479452 0.022464 -5.999992 0.020135 0.494557 -1 +0 -22.497414 1.011768 -5.999992 0.030821 0.486005 -1 +0 -0.571486 -22.010983 -5.999992 0.078826 0.781945 -1 +0 -0.491594 -27.002575 -5.999992 0.079000 0.866634 -1 +0 0.540664 -26.992649 -5.999992 0.081251 0.866504 -1 +0 0.539625 -21.973946 -5.999992 0.081249 0.781461 -1 +0 22.490080 0.991055 -5.999992 0.129037 0.485550 -1 +0 27.495455 -0.000695 -5.999992 0.140046 0.494859 -1 +0 22.477116 4.003556 -5.999992 0.129009 0.446257 -1 +0 27.501657 5.992133 -5.999992 0.140059 0.416693 -1 +0 23.485622 10.001644 -5.999992 0.131299 0.364396 -1 +0 21.502117 4.991519 -5.999992 0.126882 0.433371 -1 +0 17.513138 10.005877 -5.999992 0.118271 0.364341 -1 +0 18.494793 4.993823 -5.999992 0.121407 0.433341 -1 +2 +0.000000 0.000000 1.000000 +0.000000 0.000000 -1.000000 +157 +0 0 1 2 0 0 0 1 +0 3 0 2 0 0 0 1 +0 1 4 5 0 0 0 1 +0 5 2 1 0 0 0 1 +0 0 6 7 0 0 0 1 +0 0 3 6 0 0 0 1 +0 4 8 5 0 0 0 1 +0 9 7 6 0 0 0 1 +0 10 9 11 0 0 0 1 +0 11 12 10 0 0 0 1 +0 12 13 14 0 0 0 1 +0 14 10 12 0 0 0 1 +0 15 14 13 0 0 0 1 +0 15 8 14 0 0 0 1 +0 16 17 18 0 0 0 1 +0 18 19 16 0 0 0 1 +0 8 15 20 0 0 0 1 +0 20 5 8 0 0 0 1 +0 21 11 9 0 0 0 1 +0 9 6 21 0 0 0 1 +0 22 11 21 0 0 0 1 +0 23 20 15 0 0 0 1 +0 24 16 19 0 0 0 1 +0 19 22 24 0 0 0 1 +0 18 17 25 0 0 0 1 +0 25 23 18 0 0 0 1 +0 25 26 20 0 0 0 1 +0 20 23 25 0 0 0 1 +0 24 22 21 0 0 0 1 +0 21 27 24 0 0 0 1 +0 28 27 21 0 0 0 1 +0 21 29 28 0 0 0 1 +0 30 28 29 0 0 0 1 +0 30 29 31 0 0 0 1 +0 31 32 30 0 0 0 1 +0 33 30 32 0 0 0 1 +0 32 34 33 0 0 0 1 +0 33 34 35 0 0 0 1 +0 34 36 37 0 0 0 1 +0 37 35 34 0 0 0 1 +0 37 36 38 0 0 0 1 +0 38 39 37 0 0 0 1 +0 38 40 41 0 0 0 1 +0 41 39 38 0 0 0 1 +0 42 41 40 0 0 0 1 +0 40 43 42 0 0 0 1 +0 42 43 44 0 0 0 1 +0 44 45 42 0 0 0 1 +0 45 44 46 0 0 0 1 +0 45 46 47 0 0 0 1 +0 46 20 26 0 0 0 1 +0 26 47 46 0 0 0 1 +0 48 49 50 1 1 1 1 +0 48 50 51 1 1 1 1 +0 52 53 49 1 1 1 1 +0 49 48 52 1 1 1 1 +0 54 55 50 1 1 1 1 +0 55 51 50 1 1 1 1 +0 52 56 53 1 1 1 1 +0 55 54 57 1 1 1 1 +0 58 57 59 1 1 1 1 +0 59 60 58 1 1 1 1 +0 61 62 60 1 1 1 1 +0 60 59 61 1 1 1 1 +0 62 61 63 1 1 1 1 +0 61 56 63 1 1 1 1 +0 64 65 66 1 1 1 1 +0 66 67 64 1 1 1 1 +0 68 63 56 1 1 1 1 +0 56 52 68 1 1 1 1 +0 57 58 69 1 1 1 1 +0 69 55 57 1 1 1 1 +0 69 58 70 1 1 1 1 +0 63 68 71 1 1 1 1 +0 67 66 72 1 1 1 1 +0 72 70 67 1 1 1 1 +0 73 65 64 1 1 1 1 +0 64 71 73 1 1 1 1 +0 68 74 73 1 1 1 1 +0 73 71 68 1 1 1 1 +0 69 70 72 1 1 1 1 +0 72 75 69 1 1 1 1 +0 69 75 76 1 1 1 1 +0 76 77 69 1 1 1 1 +0 77 76 78 1 1 1 1 +0 79 77 78 1 1 1 1 +0 78 80 79 1 1 1 1 +0 80 78 81 1 1 1 1 +0 81 82 80 1 1 1 1 +0 83 82 81 1 1 1 1 +0 84 85 82 1 1 1 1 +0 82 83 84 1 1 1 1 +0 86 85 84 1 1 1 1 +0 84 87 86 1 1 1 1 +0 88 89 86 1 1 1 1 +0 86 87 88 1 1 1 1 +0 89 88 90 1 1 1 1 +0 90 91 89 1 1 1 1 +0 92 91 90 1 1 1 1 +0 90 93 92 1 1 1 1 +0 94 92 93 1 1 1 1 +0 95 94 93 1 1 1 1 +0 74 68 94 1 1 1 1 +0 94 95 74 1 1 1 1 +0 84 83 83 1 1 1 1 +0 67 70 58 1 1 1 1 +0 67 58 60 1 1 1 1 +0 62 63 64 1 1 1 1 +0 64 63 71 1 1 1 1 +0 67 60 64 1 1 1 1 +0 64 60 62 1 1 1 1 +0 57 54 50 1 1 1 1 +0 50 59 57 1 1 1 1 +0 56 49 53 1 1 1 1 +0 56 61 49 1 1 1 1 +0 50 49 61 1 1 1 1 +0 61 59 50 1 1 1 1 +0 84 75 72 1 1 1 1 +0 72 66 84 1 1 1 1 +0 87 65 73 1 1 1 1 +0 73 74 87 1 1 1 1 +0 87 84 66 1 1 1 1 +0 66 65 87 1 1 1 1 +0 75 84 83 1 1 1 1 +0 87 74 88 1 1 1 1 +0 74 95 88 1 1 1 1 +0 88 95 93 1 1 1 1 +0 88 93 90 1 1 1 1 +0 75 83 76 1 1 1 1 +0 83 81 76 1 1 1 1 +0 76 81 78 1 1 1 1 +0 18 23 15 0 0 0 1 +0 15 13 18 0 0 0 1 +0 19 12 11 0 0 0 1 +0 19 11 22 0 0 0 1 +0 19 18 13 0 0 0 1 +0 13 12 19 0 0 0 1 +0 10 14 1 0 0 0 1 +0 10 1 0 0 0 0 1 +0 1 14 8 0 0 0 1 +0 8 4 1 0 0 0 1 +0 7 9 0 0 0 0 1 +0 0 9 10 0 0 0 1 +0 37 39 17 0 0 0 1 +0 17 16 37 0 0 0 1 +0 24 37 16 0 0 0 1 +0 39 25 17 0 0 0 1 +0 39 26 25 0 0 0 1 +0 24 27 37 0 0 0 1 +0 37 27 35 0 0 0 1 +0 35 27 28 0 0 0 1 +0 35 28 33 0 0 0 1 +0 33 28 30 0 0 0 1 +0 39 41 26 0 0 0 1 +0 26 41 47 0 0 0 1 +0 47 41 45 0 0 0 1 +0 45 41 42 0 0 0 1 diff --git a/NoteSkins/dance/midi-note-3d/metrics.ini b/NoteSkins/dance/midi-note-3d/metrics.ini new file mode 100644 index 0000000000..db5dd151e9 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/metrics.ini @@ -0,0 +1,85 @@ +[Global] +FallbackNoteSkin=default + +[NoteDisplay] +TapNoteAnimationIsVivid=0 +DrawHoldHeadForTapsOnSameRow=1 +TapNoteAnimationLength=4 +TapAdditionAnimationLength=4 +TapMineAnimationLength=1 +TapLiftAnimationLength=4 +HoldHeadAnimationLength=4 // doesn't matter. Only 1 frame anyway. +HoldTopCapAnimationLength=4 // doesn't matter. Only 1 frame anyway. +HoldBottomCapAnimationLength=4 // doesn't matter. Only 1 frame anyway. +HoldBodyAnimationLength=4 // doesn't matter. Only 1 frame anyway. +HoldTailAnimationLength=4 // doesn't matter. Only 1 frame anyway. + +StartDrawingHoldBodyOffsetFromHead=0 +StopDrawingHoldBodyOffsetFromTail=0 + +HoldLetGoGrayPercent=0.125 + +ReverseDrawOrder=1101 +HoldHeadIsAboveWavyParts=1 +HoldTailIsAboveWavyParts=1 +TapNoteAdditionTextureCoordOffsetX=0 +TapNoteAdditionTextureCoordOffsetY=0 +FlipHeadAndTailWhenReverse=1 +FlipHoldBodyWhenReverse=1 +TopHoldAnchorWhenReverse=1 + +TapNoteNoteColorTextureCoordSpacingX=0.12 +TapNoteNoteColorTextureCoordSpacingY=0 + +TapFakeNoteColorTextureCoordSpacingX=0.12 +TapFakeNoteColorTextureCoordSpacingY=0 + +HoldHeadNoteColorTextureCoordSpacingX=0.12 +HoldHeadNoteColorTextureCoordSpacingY=0 + +[GhostArrowDim] +NoneCommand= +HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,0.875;zoom,1;rotationz,0;linear,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 +MissCommand=blend,'BlendMode_Add'; +W5Command=blend,'BlendMode_Add';diffuse,0.8,0.0,0.6,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W4Command=blend,'BlendMode_Add';diffuse,0.3,0.8,1.0,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W3Command=blend,'BlendMode_Add';diffuse,0.0,1.0,0.4,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W2Command=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W1Command=blend,'BlendMode_Add';diffuse,1.0,1.0,1.0,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +LetGoCommand=blend,'BlendMode_Add'; +HeldCommand=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 + +[GhostArrowBright] +NoneCommand=blend,'BlendMode_Add'; +HitMineCommand=blend,'BlendMode_Add';diffuse,1,1,1,0.875;zoom,1;rotationz,0;linear,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0 +MissCommand=blend,'BlendMode_Add'; +W5Command=blend,'BlendMode_Add';diffuse,0.8,0.0,0.6,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W4Command=blend,'BlendMode_Add';diffuse,0.3,0.8,1.0,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W3Command=blend,'BlendMode_Add';diffuse,0.0,1.0,0.4,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W2Command=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +W1Command=blend,'BlendMode_Add';diffuse,1.0,1.0,1.0,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 +LetGoCommand=blend,'BlendMode_Add'; +HeldCommand=blend,'BlendMode_Add';diffuse,1.0,1.0,0.3,0.875;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 + +[HoldGhostArrow] +HoldingOnCommand=visible,true +HoldingOffCommand=visible,false + +[ReceptorArrow] +W3Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +W2Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +W1Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +InitCommand= +NoneCommand=stoptweening;zoom,0.85;linear,0.12;zoom,1 +PressCommand=stoptweening;zoom,0.85;linear,0.12;zoom,1 +[ReceptorArrowOverlay] +W3Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +W2Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +W1Command=stoptweening;zoom,0.85;linear,0.12;zoom,1 +InitCommand=blend,"BlendMode_Add";effectclock,"beat";diffuseramp;effectcolor1,color("1,1,1,0");effectcolor2,color("1,1,1,1");effecttiming,.2,0,.8,0;effectoffset,.05 +NoneCommand=stoptweening;zoom,0.85;linear,0.12;zoom,1 +PressCommand=stoptweening;zoom,0.85;linear,0.12;zoom,1 +[ReceptorOverlay] +InitCommand=diffusealpha,0;blend,"BlendMode_Add" +PressCommand=finishtweening;zoom,0.85;decelerate,0.12;zoom,1;diffusealpha,0.6; +LiftCommand=finishtweening;accelerate,0.12;diffusealpha,0;zoom,1.2 \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/res/Resource.psd b/NoteSkins/dance/midi-note-3d/res/Resource.psd new file mode 100644 index 0000000000000000000000000000000000000000..2ebcfdd717b4d11f2303b0e6b9932bd585a3d9a3 GIT binary patch literal 2133837 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

-2uGdh^n_ZguTkzxND# zjn2yl5}x(xRi}G=Rr+eBA0D~$$uXn5Ug~bu_2J2aA!p(@b=u5hO?=F{Yj85P3v54- z729w$V&^?G)0)KaUb=tTgMy~F%;UJ8PI*b`Jm&?sXRfYblvW2Dya-KaL`vDaJiOOB zt(&x}#+j6)bfx~)A(!SS3p+19KAwDqjl@|bG79?_t}3WxUB!1xEp3_pqBd-cNt$z@ z=Ew&3fIn1(oi_iLB5Z%kob_I*do|Qp;|X9oVvcR!`Q`?#mj? zxQNi#wEcH!mCR#VwnbOcD{EUB4qFbyR@bS_t}yGd>wRn2Q?qBAC*^UpPKN4FH946E zGVj~_%={c(7}jNPHkw6v7C!cUxUw)J*3_`8Xi*{4qyK*4@waPUE`GgY0T<=Y3$taa6WYmYmT%qVG9Ao_wV_?Eq5K$N8$++D&Axn;0U9a&fN~=BAd#c3Q z?fxIS^PiOXhg`d9y}JEO!B^{dpDG@#sG49^r28bScy&m>w9UaVF?VfT>$e*P?|@<{ zW(B>Yzug%7lvUGpx{zW0&fpyV4t+Hn$+1*STd+X3(cp_iKwRI?{a$RO$$+O8-({@FLH;Z{7Y%#zl{HVlz6jrXFJ)@ILuT!k04BoO$rw8{2o!3udw|NU>rQ z@hyXAMS1ggJc%ROWgJh! zf9=w!(W$okc*knaV;pgw&vl350;?AKZPt;l*f2hJ~ zTUX`d+ux|B&p8wI|ug=ddsI z3r@$I97*a`8*ilOSo_EYMdHbQg1h?6pO@SZiM&{9Tu>fV9U9J5y5J&fU@)oTjQ7K< zZs`jf_NmI_X_ZSe3Or~jlrtp;t0z|`bh(t)_P=L7H0gXg>yznT#;!<7G4G1)tkihc z&vR}|uFUp|s|k;wZ*s|FBcX3XJQ)R{5@shZ);te8=-BFl+p7@l)S~RZyjicHS88r4 zo?a3f-sR$HV8w`ujxPU9$S+*)?lhy$D}8%Z^}Ble`c0km1cqjfm26K`By&%^#pUjZ z182*^&Fo#PT6g*Es+YZP*EV~tiGx$9VxO!lC@i%&%Kku^m^PDC|yK3(3_1_qgw&Zp-?7eszLpgj)PJu@gEPd1*7*z^^o z_6x;Fg%zyWUGmBN#yF-+V&s8>2hm?Umswb}2A&AJz&cXn<)6GUl@jCN*JM``>EGfR zTEsNyJJwRx47xibKf#fa>u*t1*m^9#BxzF!Civ9nLdo=f&q|%!LEEQxIT6_i(Bcfz z*Hy%_%JgleI(@1#eN7bk2N{oj2+0ZEs%(VPdM+o%x!__#WyqPVey!%xW7X}g?WvM7 z;VlVsi==2t!6tX*y;Xg1Jva1ECSPbg7C1GxtKbv;q6KrwK8s&h&o(K$DHJuiai_V?=7;|?r)GbDDFOBZOVub4OLvbvD#qP%`2zvl&LqeQ-a9`tDPEZ zLQ9{!Tr9EnNH*zUd4zbHT&S6MLCpWmMJ3wL3A)ANb1ugH>XW`Oq{%+U;%N_~n*L}@ zY$9W7R#^9eetDzFXtStV8-jRF&2^o|)A6&TwuCgEQ7raqiuLHnAERrv-okfdE9su1 z{7-$ z)?X7(EMh9GVr&`jyLMXXhUmUCuh#bJ`!nOJv%HxhuPgB-EFVxH;n`J%do!}9Rh`D2 z>|A@dHSbLo-Yu;DXp=p~`yp;q>Gkw42GQ2%_B}aKssE@ait%A9Ws8an{-?HC)!7Bx zg0s>q9{Y7}$T2v?Agx~J@vQk(iTjNV% zF8X!bk@za}Em&G9t)wt~yI^A1{p7>d9**Clo)v0!`QWxC$5!Y`R=f^5l^43NIqihQ z3+9zC8Qr3flhcxr zE-)@wmGvt0aAa8xeul;ag2DDf(rE`|mYA>C{<^)toavEu|HDV)&C)hZNk(kz^V@AH zb9!=aWrueZCS7!RT|6PynDGq3mw^fYXof+!hWHK>{6u%cwU@Cn%6Z?#fT(~d&y0aE1vuVqV z2TF^?Ts>y=oia#1%FGwLIU}#2f{iR^y=Sg}DUE!h)h^UmTxenAZ=G3K|BIvVCB3k& zCzm4aC$&dU?%8+s{g=FNbYq~oLZTOSXtA#1%9j$oF*EloTsd3)p*u^KI6Fz!@&G+M zijCA+zX#KcZsuk`+j>W-NWR`lI5VqzMJa`ws#S~WR$>0{--PaI3kAx3u~DSHY%WE5 zMN<6kRjym_?sP8RXH!`CAvCekBu{!U$`f{ANyz=ImJ+ZZGi%vhe zpAuQEr*MV=Mr1H!vT$F1e{Y3q`m+2IsWU~Am#-Deht?OjcRx4L)60*w_Q;RDZd>Ze zN@&iiX=P?EOj3)e+x5uLzAl_~%ZG`p?#h!*tMzBzbzhzpl3K+IOYcfe{Z_0}q<3oS z&O7r9_e_%3kZdgs@7Ff=d^ugorYeZWYJN?cUEt5StVm%IyCeHfvqVT0SuOMig9PSy zRy*Aq*ejM!uVX)~?kCWD+ZOxN+2wVN;_mDCkTdy5KNr4!n~}+=y56^o6z3Dnw0>K_ zT>8vl3uB%q?TvHGwK7Y;TN-nobZgMRgqA*GD)rBL!g$;5f5BkksZ!_TesA;@g;M4` zj;(MLuAH6a-dRD{vSB0T6{IiE1@%*?QC+dMa}RF+^>Bw)^u3_I*Wa3$8~baTD|f$s zd0-D4S5`%+B&xY-Hh=5T!Oheeqg*_r~^JM?dz~I4fZBpWo>m zVa$Hqw@ih8nifT`cO1(kwJp%I`p^=hU%WU=rY7h8EC*(jhfnmzmdvJ&G5S?jE>Eh9 z4LWj<(XYhX1+8p7p_x19M3^`mNxZ7QC#p0{uG8Deqh;1Rwes$zjiok~EW87w^XbQN zsh4X4?v$i8#xw}Bk(D(9^{2CDr)E)9dKqV$$}1Sl=(iI>QzJ;uZCwR7Zk(}cDEFvK zCLd~!C`guUh-}IH$hz6p)?A+0`3QR@LG>c0)yZ>vyzD7(~Ln4p>Y z=C#{(siYNkp+^+FYr8Zd<+i zk|2-QQMi-aL(kdG*+Rts5fV0=S^8C`SDC8r^>o_1?8+mR`iccKgiawPBsXTV?wgEua}cI7u5;22d2b? zOn9G8Ebag+56v~Kuu7}$wzJg!i0zg4Bkn&I%6KF(xAS>&NnEs3o67zkM`ydxy|EXV z)4%9Ck8gc%e!scEJxNXVRBK&(c!T;4Z6a2>{X%Ymk;_+uubms(#9#M32-^qOB0?|R z``lRR`S5MQ=H(U@t*@Amd`p29@YKNZ@#_%kxdZ8kDwFeiT^nUxYG;~kdQtS)B|Y=m zyGk~)o|Qts-1a8OrB6PUMoQ71y(+V7$8=|_+QOL!u2;GE&m`@En#(z=V4 zSyQt%?B_#!bdL~b1b)pm*XxjoKEaew%M;G&d_S9!+v<@R>G6~)o49dz-{$oxOXKJa zr53s)HNT}$X6C~?d4amdF4d9U2E`gd)-??ax9-#3nbT0R$}<0fUA4vspNM-?GcI&z zMC%hSXCrp3NJf#*owtTbi=tm0n>3Fh?2^E2 zY72cG%toa3clBkl5%WI#r_yYs!6l)ejr1#ZN%q}1+{lcnDEOdYP{NGXKAs10`^wL^VaJgY6~i9*ArVURu()vlrq!qP_V-lR zFJ^g5F=fB_H<5EfuNEYPq(wKrBTd`)hLP&&{c~zcW>zy%p8jmp^Qg4g_yktPCZ#00 z!?vOs-CaF3ffqZf$G0wOj@ozX@h8SIt=!P2@^9_io5iW4)Z>?r=3|7w$RZ+`{i!TWmh&LYLFCN%7~u0-N{ow{qp_` zk&@nt-j^E_Q~H`D8~%UX=5-uma}P*k+&ZiLbhw zkd&sZ{ae3!sB{GDvrMAC?r}A+Rq~Wx-xchV47wIDf-lA0zTcKfy&K}+i+t!~$>YX~Rim3UmP zXnv5L>__U?YR#}`SerkNASLH1Hn`_K3I4F}ZsL`!8`+)2-jLI|{?F=q3Ydh%Q2VuQ zm9J@1Upi{twQQz4u6$7Ff5lwy%>G5em}@{sZe9ZU-Y% z6>bGZMBMniJt)thCOVs85C7S*4EE(HFR)E?I4d_eO2@u?2)(n_9zHOCHxZjI{P z@$hEg${wH(i zuknmh62qm7-d4&C-{q9v$oNI89^aYSk&JV4E)7ZO-sd8o{On0`WmdjS7Rd4gLwh0@3eMqViZ;c?NMqkS@v^kNyyZUo(;X~ zny-pw81*3vo{A)z4c(lU=~5mh5mTGHGg7n@ERI+B3h+LB2`2`e|>t3zcutF|CNmi`5qj2V^E0~bL|WwgWfCktpM;VCbEUz>$t$570@NyRmvjKzkv4Zl>!q>xLDTo zHDKu-`JI{Ic&u8-o3o+srgq<9RAvs6p*BOmo@c(!3(|mPBvoF z|JJ3sI$l3{tHdearVnXv9NG^e{+BS`grwPzaWk_^d<;y=n_3z9$&Cpr)lOBa|Kd*;HkHNJ37hK4yTv)}ktMW9>W1<@E%kcm1E+IO zy7UzFfN4cc)n@193)-o@lOpVIQR?WMap-0NnE4y7bHb#TBa=+*sp+3QiI_c6s zxw{o5_RBth>Gvr#d24z?uFT#1ws1n|Mi1}0p5V*rGaEZCo>B^o*vLd3P<#C-Y|H zdqP%sWY?A`k?M)n9Yxw9s~+TBp1$sZvheJru2b#a>RHd)oO|{-w;8Y$6PKB_q%z7s zMEl;perm_2TB|u3)soGpsvWn?NQ(-}tTB;K>D|)j4F&=;>jeMA9{dNXmo=uRPUxjc zsNItIsrFUZnqWp=-olccq&_vXXa-53w;ES*xw0nXS#^kHMnh>yh%CMRO90O|7S& zf2WxnT3+0CttP!+Q>iP6eyVS2uVsz%^i#DFuji@aCz`O@`aPWDnOj<_x8}E}uGa1r zjVr}vRW8}FV&i^d%*kea+b8|}vomxz{e}LbQ6I`}cQZqbH-oK$8N-wWlG{GSA^1>qy6w^bYa30xw1FyBEYXvAK1P8SPyzCM|smew~lH!0$pA zKFsc}^2k22&$Or{OUV)bPP2%4Cy`-LtN$wt#}w(_;1Hu<00#b42C%Dkv4VRIz*OQW z{bj+M*uEtA#s({uT~*oYvc*@wHYU6#$19~ob*=cAsArw$D)t}m(W%NwiuI``bf?M3 zv);1y6f)(56kvd6kD`LJeqsGuouv8&w{~3;q+c*E_UUr!e_N73ifd&QwAgEO*S8VJ z-anUrswgPD{_wV&lb9v-Vid;~-55RjNSm^(C6U)6S63zC`)V9LQV)rZ3G>dlePF8> z#VWX=&48B55by84%OtUp=_l;mvzE7ht!s!m-X5{lQ0!Vr_QuX02EjjrUp)i{fYY@HnE)OvA`rtoC7q{r^dt~|UNoJ2J} z(y4J(uRW#MFTEysCWEv#)&5(?iq^{|7rtiCsCKl8RG4#qq69v}p?;>1ok}Ak*}ZsK z(2c{=3lsNk2?e5hF6N{7X7`%#{mwJKKDly*8F4x8oJePg#%3%w^eHo;XFBt0rk>Rb zK|O2hs;)fx>MjG%+BU{ihD^e_>xWHtvib|&(Hocci@dsKS#E8@u5Oc$Uw*}j7I@}# zl+DJj+}R~zwtbmF!88ite%evi&x=^knME18GIoB}DP)=A%UEyk{LHAU&$Pr&HaEQ2 zZ3x;tqo@P?%46RZ>6q<*s>g;_B6hXvLx@?4B5r5M@lIdAPUF%qV5Rt3Ve*z^$NQ4f zWh+v0E?tRt@|H4eAi6(1oja>;W}5rwn?2GuOVSGGUzitqWEP9mdx2@Uc$LhXor}V| z3T{&mTP`?X^p4h_)V~H3Iz>EFt795LGs-6QvbUG_iB^K&V>a?}%el9SS(jcuD`|J% zP?B`pw|kq%aOn$^3`H(> zR$^65Xt1Raq-f-A*{!uVht7%PSMOycp&|8h4HmBm$RJCqsdR?4< z@9t-h&q?nmn$5{NwEkS0bM8Y-inqzi?fy*JCd*{S>v&Agp7b)!{hMS~=f$@5|MG~u zrALOMkKMPSXAfoL(pQnq_4czPYOVZ(BDX|#?f=9unsdl#k~~)A=NpP!cbY$4P>RJl zHDurK@HYNs`K-E6dj;z5M+6(t9zV}MpdjVg)!UbUI+RhpJ5=MO!-A75@;;WBm?+A~ zjC=D)QBn5k3m56nQEK`!XKj=|?ZuOtH}28aX2xB_h*(9XYJJe3_c^5^)yAD}8T|1X zvCE-e0WmpQZc^W>Qop5?RDi3QvsPw{`CT)m>nnDam+5|}P5sbU5J;tuFO|QUM0ShJ zP+PLy*d^|+5(%sjedt$`>${;gS0v)_eD6KXtePOdP;qC2X}RQWDG$mVDAGMYNj&&m zGu4eIbH?P9>SYCD%G?LHSXtSD7S%h%BDSQkkqn!bm|2C&2gUj%N&r2Xu;Ub|WT$};|aA^EXiH?}c_emOlE zbHEEr)Z2Rf*LihKkJl6*P!_mwpRl4-Nz8bm+H0^@mlqMn)MQxBKj#hQ!kYcG>p)z2 z>*Fw@#wOtkoT2L7uEb#Hu7X3XNLE9)d}frWnMBMCsjG~zK;QiZ=ao+P6&R4`TArIY z>F7>@4Jk{+-`@TFY3?sao?qBozCBHm_E<6aMq*&BRl*lAGrl0pFjI`HIB}{v^iY-l zwbfgmEtJ-L_B^$ri9&Bl^qSLwd!hYxUPp}Z)aLFTjmLcVU8zVH^-4MEXy&>sIWB^v zT)jV8=Ix0JR`Lt#hXne%`%0-D;y)h{vn^kf_c$rEr-@NlZE5M@?El>N&@{}vaLWMJ z5tF2@%`)lXJ%k5`F;NcBB)wQBzxtQkrETB-Nu_pw#BFB{@uaOU#@HTC-x##?F~)t@ zRb5ANT4>6PSKUbm(w$=4-e`GYRc~2;i6p%b?n$;iY)G|8H_m4D@p`T;Cvk%%JCwT$lvrz`yxC;LE^&rwnk_27-YaX#%)83P-{g zOZLE1ZNT?;;9D&4bsx~_;Ig7pO@^I{Bf1ux*5!v^Ps6$aG}M&f)H1oj^PEr(WkDtm z3vX~6j<+QfDT9X%jmNsVS>dTzH!Kx92orVpBH+zQWFK(k66aJVQS%`PC{JkJS_@Tm z;1TsA!o%0V=W1>+Eu=+^NV39Gsd)6zph2J%mFMtbQ!lC~o@_+$0OvkYJ$(jBkQ@Pq zc@2CMKjU{&`+y^^c#j@}BN<!nP9z=PJAxiX2=h;jf$k*6_6wp9g#y z_+uI1(H>*qO2eP6oJ@t0O$cP$;VUPcgN(7R1Ux{)6$2P&@EmIx6!D^%1z>U1!F7v& zXY~c{7`p-QM#JF;>6i$21|r)+%E2BzR5FP$tYQ$#HKJf+R#B zQ7C~t=ac{LlF~S^FvY1CCnh?eOd>K; zJh4O~p1?U=ePC=A$NTt#W9+?x@bH}RL3x@m1hvECs3bDF8VE}hawm{TWFFp6L5pAM zMWK>B$XFkHJbGrg>oy#S%o*VSGjxcebgY4r@h@-z{+7m{pYlhiKOUXQ!rGQii~fg@hP`e)wDg72{LwKuiBTJ zM&irB-T80SEX!l+Odc417Ns;A`*iqrK6S>j885-y`#T@AvDyeBS z5`68=*WUcmi!TG;RR;Ll`}=5b_+2-D<%Dl{eLuU4&s#ok`P%#YXzz)9?F~4<*D!n@ z@MYlp$pBw_e;@4)_rd4e-u#~X{dz8+w|w66wfFbY-jn&-8*qTHVfZ}Y%fR=O0lxPB z4%!<%mnsfrt%45)56`9I?r%DVNF%@)@w;1)%U5iEj3yb%wC433JUAwpp-NLi5KFVE)56=N>@z1u)31 zkr(75y!Fu=Y~>BeV8BRY%ps@16JW=f!<;#sf}f=!s7wHN)SMDogAK%!+Li@(w;1DPOKjDxeAPQcF=<|0TD2Gsv zLB7F85-aC=KJ*pj`PP`op*e z^bZ;y;+g+;CmD!NS-CL_&1{JWtDwL~})x4LsnPTO(ocTrOT1$~E@@RlvkG1Ib{I8eTr! zYZkG=5#%-!spj+6k#U9&X@vu^C4A8RiOn5s{Jp3+Pq>{gn%IV9?lqiT2my&;Vj!-ayC6NL*kw(@LskTEnvN?*g0aQcW|E9t=L2?7^4P$Ai~Docnx$-ynP1bDFAH}2!od^fkx)Y8DKBe;sckBr`y^=`5S~m zcP)v6|2?=7k!my~*d7Fbn?V_{w6Hu0+55=J*_t`n z0xuj+yud(<2ZIWl1E>VqPj0~E5E!0^33(k%8>}LzCafGRW~h>As^RCl3KSHeDjDWC9D}ANxkJS|7v>DZaBSjO zdH}*%d;k^@=Yn`YABr~!-2yi{cED3@|KJ+?2XF`;14u&E;D|T^$mzW`hyj3(bU7H8 z0SvDzfTS&-h(O3lmxF=1K@6|U8R0qB#C(941cwoOf==R#9%!tB$N@{01VVwpr-^8A zI6Y{oQos-ldBL^A1n@BYUG1>nSR80SrGsWO1oY<(SRAi`AHkq@7Bhc6o zg=zs_qqaE2TuE+$gXRWE2y6Q9TO2}eXf1}#cm^yUwEK_V;z0AU{>^v=Apj)?(SsHT zDzU#eUJY6tKkj&CsDsuMef-gQ^+)5PpKhVtU~3^`sY8NDfnj&lG1TVl|tf#x4HfCjCzzqZ6UsX)iz zP4=I+#9--wh5V{gS!|YQu9(R4q9ftqI)~EoWZx^se^?;i@V2zdnKZ1NfE&UJB z8bv-p$~fy^GeA(>5Io>DYHL)&i%9Wu!w=b`Fu#Aw8a4E}bmQy`l%Am#AHx*^)2^T8 zz=lRw<2g(2fOsg^(eyND*Wdql)+jm-e-B%O$Nn4LP(Dy2)EVvimjzg?8on$5 zAs`D;n9Zoo=wU_@cU=H93f65P`*DZ`Skb_O&fo>6Y(xaET!71h>;@N(&?&&Mbr2Kq zg98P`A|YUU3oj7Ud~kgQ`XS7OLWPSAU>%N1hASP0S7C^A0j3T9;4@};6#)j8j;>9P zjz(z-_$R3#IKT0bPzlLb#feq2h0~;N!W5JrvKTInRzlLb#feq2h z0~;N!oL{wg`3h+V^Rq$u9kK2QXKo+@YD5g{c|5b9(M#C>EVtjM)rjapKo>}X$Ixyk zBpks-Y9L$k5M6w)oH~4Xn{X@WUiA3(N3A{f(@YKoLokAVnJHWa-%nJ@w2wVaE zy+vARJpUg2Z%(tU{m4*H{?jYoJc2%~X?d0EC|A4o3>4(N>0n0;e=^A_FT9k156M1SnqMe|nZRAijv<5Qz{1 z$@}iJtOQpovKkaN(#0U>!TbT5B_mx9#$*7)>w*~uSUooan2|1+Wr1=aW~7TjQbAL| znb}B}lg4=<4X?{72SQ*uye@|}CxC%e^ST_2!vKcY<&*=5AV?dp3+7U%e?=i9T`>Q; z*NUtIX-2vn4E&`8Vt8FnZjje7Hy#)5f4pxNz@N-0z_4^fe+~GvnU)7k>t*eW1-YUI zAPoP9XI|q#*(boLB?a7g&ddwR1bzg}F`+!KLI<=}kTN*)DnMVy5gA-RUkrQRXzuY; zlJCH@OC9F*kIlMx#;74fhzB-g2o1ns*#vafB`A;9^7noNK-*&UzX3otA*N&-&*Am} zgaE{_->lK7|H0n?csTJ#BRI{2;4$>OF#*f9oo?~iPNo#^8ix!EQ4IL;KDD z(8?G{%)SUbXw`WKX>@%Q**SdV{(tPf3!Gd>bthciBWv`w{2Vk&(08{9C5<`v`xo3M)`2u?8fp$qV^PZ?MXslTqJi38d!LN4JN4RA zi_mMI3#lRC$?i3B{P8n0*Ny!>x>J}N7DUWRuD{&&deyizPeWP9dEt5 zwm4_ag1?FYS+AbYFOSSu-^aD1B~v@gAXE2iNB11#wWQaMegPG|0pw@A@7y|`)7Q15 zSMW-DrEOB$a0I<8{3ZsyE6}7CGt=4?_5EeQDe=FcxA*Yrl5%&B&c= zM=k2w(R)0{qOK4ng)2lYwq8|g^{Mlbvi;i8E4=>YV|X-KJGzg}tgo|Db2JX|a6Af) zqX_wb;5CjX@xATZ(dD~%29C^nm|Z)HijbOHe2pU)u46q!%JG8g(K4i6cIh{=z>fQ- z{WW@d^(N>;<3;Ee7W9D0uI-TS=2Od^Jy$0i@LVzt+OhdMdcjy9E)o0 zs4+KKJ1oK{0e+37q)}IdO(Qq16|<F;|g%Vg)sdpnct`##VnonbP zrPW$78TFaS1rj@ApdO5Kdn0y7kDxbt4e}3n@K7P_LQ-x?!#mf8FZa+?nSva)k zwBNkDNQ|}k98K;3IvT!Z6@CP$$ zyw9{^Wpp~Uvt~gnu(V+1u{67A2PGb6X#-ifRyoe1HRbsHmJ) zRbZ|1EKFqo(O?Q#H3LC;=QbJ^j3gpFC@fVp6<;to^zJg>l`JMO`bk8yv2pvZx%s zAjq+Z5d*AVRBO_RQ4{hfCyl!Hi#-I_ep%Escl$IJwH#7djzyL2t>92Li^`#Sl^ly& z4mCQ;W)Wi}tkNPSjk>~X8XT_hvZ$Q0=UCL-SjWuGpcyq4z+ETd5}U96N{^f>OuNV< zrd(+;nN1 z^@-d0sG-ZWJ$GFD#d>Z&D;91=OCL2@u@*Ed)_(05`$DdwvZyPs=xfWBR~FGjSEIAgn59Zt>bF-)%_ORqw z)OB2>a2=OLUHe6=0M~w5)HKu&n8u=(LyBBa14RRE%ucRGD#lkydT7t>wco;Y1MaoY zh16e0ug$ez|69k@eP8?Kue?{jF>zcyFT;53xns|bhhC1*fWmKL99Ofq4em`E@6B89 z195QHd#<}}+?4LKHd zg%|sOuJE#`9QOa@Sk&C!;&Zd899q>`jzyLF5YkY3i^{nZX~?mtn#i3=$@!x*!*GtSB(|<3y~LW4*5xnI--)=-$_%ir(Tq0oisjH7hO=PfOf| zr&%)J|IbJ)!!^g`j4s;BvdvSnohtL`mCo&D5XhoDNbPC#_=kO3UMc!h9(|7wrSn_oQC? z5W2o{ZuMrZuEv%CQ!I$r%LGhox4l);EAE@t+}e+ zcq+c-pn{_JB2=QJ7jUzvJ8Vng=(#@xHbpU;wR%gL=rCRS6@(SGbOQ_DMQUcYL|5CM zz}|}-%`L?KF$9g&>!hJ=3364_D0X1ydZ#4n3Z<*S;R+>-%6W2nH{C=##^9DU(I@73OnDUtx=yh9xtNMLuDzo@&Zu-vHq^eT5%$ zFGg-@RL<3&W3lxcr=0|$*3+nVRZ2j+szv3nWO6LFd>5HF&e=#ej98lcv3|6K_YSvZ zR~ud9&GRdRfAc^pdt|UgJ%{H%AyR}A6ArsgSn>Qob?#K!L&Pm` zYxzEfv#K1g-;P9+czvCmeQjW?JKo5u_gCrM zowSvhyE%X7SLPayX0McftevNB<&U^_UgKe(B5UVUcCPN$r)!h3_T!}0tW|EItq~jR z)2Un~*Us~IH|x`PPLv8v6E-K6q1_^EPP)JlRa?t5n|T@7A9YtyS&(Ikv=OvRVl#DS zdv%|jljvbgZ!zc)RoL0Nx+S$iH7O8(Ew3T-2G#R_nYPnPDMF&E% z^-HH#gx;#t&7_u{atrlCdzCT6U~S#2^gfD{zkcJ)wQx^Uy-ZT+TMu7tD%tCeK6aKkIA6cg7?qn4(+twrzuT4iLla;u#G2U3 zT9p?YcLBN6)@@Na*Lse{yx6Nrq21b|a+nJ_7Tek7STb#EY0SCz9(al5l18=AGyk;I zoywuzk7+DwIlK;*V^PZ?g=s9dE9aw#1i*9Ci0E&q6_%VvVL27$swE;ft6TxD{ zH&N&RW!onY(#6))7|lS-uoL5?JLuHsvSIanM9yniJ#+j$pSb&rc*WbMcGsF+@iy4I zce|QgVdIK_DRss3-f5s`SG<($yze%(!%n$tJ8!XqRPBzeEq^K1%6ofXD|tMXxl5oi zodvwo&k4L-D(>Yn_x*BFrC!dG)$5cqAS=J?t2XodU|6l+J>7S~jwgZ**wTW*CeWnz z#PYpdCN^*lb1mPZ0(NQn9_a4bzUBqORa;uPYD-Iutc-oBrRBSL%WOS;+&#OxgD-ZO zD7v9~r>qkTZHl!N{EZB)#TxB?m<#PdxjH)GjXo>g7K9BQ#RTINmpn+=UWmG-Izdb6 zX%yQ85gm4$Ff}`avnsNrRnOcU>>WrYHjqs-wGpP=TCPH9+uFsuvaMV#5QDjp-(72S;n*=bfgd;R zo~b2Gov_svz^Fg4HWutAN+nuNuzR@8#xy3nCNWqhZCd7&US+qoq@I_0!#A}HcL3Zb!FHQdW@~}NWH27!Sg0#dX63HiOiE@Ws)DpEG zf}W?p(D97jK92AHmEX)O-DreSOJuc0EiwCs08vYfS|TU3F2jGmzFg!Ge#!6+Cf-&!Os@p)cLyrAz|;^n-;#rL9(S|VC6j;JMS zJwz=r+7hKDL|bAQ8ntpgY`)QsdTUu5EvvH|*TZN_JcJsnD{rj6s3iuC(Rxkw*_QZA zsCa6L7FA1pm*-eiU62&&f)qne%#&qf^rdH+HR6S6*rL=7ZKhl$)P3Da2m547j2i_1sz50+pyGMlDg|=myQOm2Z8YwZxytdw^P^Mb#32(Q_=SE=US>L5s>^F63Bj zuO(jAQA_-dMbZ*idM)v+EL!4%W}L5#T4K}^cT_o@TR%?5b=c7_5w|x?*v~`rI$m!b zVIWkDeuMs2t`(j>Yy`B330*M`|sjz?75=jakVq^>imO*xcZ(P%KH3taEm4|a)DlkuEpZmNl3Jog)e?Wk zb1bSZND6g9i^^dx(;e);M1swZy0;MlBKVj;JM~ z5^(I?vT+kY7A@{X=v!GkZK9AyTjF%NR4MO49YtGWA*@O+jvYgV=n>aAYdzQ{Cvo*k zXdQF0bu>3>hj$}E8dXcY$8#*IE=US>L5s>^Zsb^OuO(jHQA>Pa@LD3S!X8=U1BDP6 znIqxkF7{Wial}@j(3}gjMtrE>Wet>i5D{zcYHoX(_@4Djmr^98_nF#RhHL0PKGe)? zsv2aC`&+y%`C#Tz!oT}$GT;9-J`z%4yfS?liQ{M?juzr*0S`hPE$FKxjuxtXFS?s& zsw2ckQ1a%p`O)*>MRS*C}o?}tR z1f+0GU{N{Dg&d1^v~V8yYf=%B3T_;M>89Ob(fV4id4E6oeT|INTx*2kLOc-suI=t3 zTtoZFNb}ViUm3N=lIRKTwp@s-n#3J%BrZHQJb?jagKV7$Hffq}=lG;+uoCPPRJQYmE;f8MQ`>sx?0BITlqnB!#-6MddIT zaxAvj8ei$MYKrEITqV%jhAQE8h>w*w8jyyHNL6uTH|F=Ym8cB)EeWSJ*8?PX-bYW)NzIyU2EL4 z#~nf~oW`mMN7Nd_I(hYM8;I8U`>1_tjTTjF{FvuhRNasi>V_7T!(7O**j{VAEVI`5 z!9~&8Aj9O#V8qtqL ztubniQEOb9TH^zFK51*Ts9NLuJ;$QzhNMt8w5S~BLXO4uTH{rjwZ;!GlGb>&*BY<$ zT4U!(OY_wluZ~({)EcAK7`4WzHKHGhT4U52qt>`IwZ{ALd{S$)s9NLic#cKY4N0MH zXi+)Lg&d3RwZ^M6YmL7@c&!mvV~?!yh`NuwbV-xQOM%viyz~*)Ku;ns%~>sOFB9Lh zUg;A)UFH}=>t6keZKH=LtA#z)%KqtVZQCdyuXXO#?iFquR{S2uy5B0=#vXiD+OS()!C54;heTdF;ztdi&N^yX6|%@)D>m{{;ZmuU zxPScqeXPihrSgr$xHIU6u}XzO?c*AHRz!{!(Jt6RjOMTLTv<=y$fk+w*{ydviu=ch zkYI7or+1>U472AQ-&e*85I4-mgJ+YZiJ6Ip+D|%<7|s7Ai01z{xRD$+SkzI&-+7Kj z9UG9sv4KV9Fc)$x&eaS@++OH~)6feG?h5?-$V>Qksc3$!qc8n|w9nEQJI`fko09ib zc{hEesVU0uJIZ%d?C;Xd^zOv(@e=peuE!lHOHtqR`!n-E64G&(IZCqj}iWLEHyG-iqV%u6^PN7`nQh$FY(%; z=4eqh$HzU#qUwjFP(QS&9Ogof#rB$`iN2IUbNtvMX^ya;OWe*6_FZ$-2ux9PjGAL@ zGov-*fvO)d0#l5@6eBRj2u#%iUkNb+Q~kwAtsq8V(&}Jc3}h|+*HIodM~kXC{)OjQ zRQ-??>W3DU!(7O**j{rq5tuS)jvrqn&GB7cbG*OrnxjTxikf589HZtqb~_bkPA%Y| z*DFAb`IF_*v1oIQHb=jUXxt~rZ7A(2*Pn=JbL0zyszS6m_Rr?{HPkURM~kXC{;B6! zRQ-??>W3DU!(7O**j{rqQJ6Aljt?%9=6Iji9N*P<%~2yUMa?m4j!|=rnxj>nWBkq- zzZ2bSjNcjKca|$v`2UBPozI|Agzu^_55(s9B@|1|(V}XOf9yFHRX-$!`k_VTFc)$x zw$~g@B&H0S(u9Pja(<9&VC95otK)EuMc7&XVJIY!N~v927>&4W8FIKeVVE=0c9e_L`%K#*{&G{KO(@ zj(BB>pW{7Vb9_0j)47++Oxnw3N9dPRGL8kFag5`+N>0E>w`;34B2&~HqvjYj$EZ0* z%`s|@lVuGsv86h(i@nOWs5zn*PGePsBWjL|U~~KeYM+{;Mb#XSdX7ca4@seZXi+)L zg&d3RHAfSXDTC(t$-!%mxFUOGjaAfrRHjSS(p=hKozt&NiKGpY;LvzjXzkAK`pZo5u;G;4{&9PmW#u$|;MrEq62Wi((Vm!|n z&l6oz{-(tAMRyT6kse3u$fn)p)_gVBhVq`$&1K9o;Y;zBSt*epHuh??IR`uQA=FIx zE>%UXAbKlERfx7V5O0P5h4QF5T2#&PUp>d7>W8FIKeVVE=0c9e_L^fdDpM!T@zaZ> zIsU!Z9RGXYHAf$nDQb@G6oRNZM$Iv5j&W^$Tw5RZg@|kGqviX#~GVEz_@YSr9uzklXg-3 zv!-Uot7W3-w^#{(66_)LkGMK&juusO{GR7nRQ-??>W3DU!(7O**j{r?MrG=xIeuo5 zG)F`ckQGvY(Ra(;y+7j654#25))rYPLNUrgPwxh883mT#o6a9V-gpBQJhA!0YhiHCih}4-5Bc8IwLOj#5vvWQ}OcTe+S- zKRhzGi{X*IqtlaxOPNov;!&vx`njcAE=+J)$=HkDv+tPFHkOhOgHn6D4!vlI)jG2`PPwxQ?>EE^>sX3t0Q}pK4zpK5g%gL zaXZbM4pgN+2edY9=P^np$NoK~J-iC}Q5tQm0X}Bd0Kayo=6&Q2>4`q^raSi4)JN`6 zskqe>0b`~8)jIwB27P;FX0nM-ojV!hQMr-I=BZ?pAO)2n@9$1cVpVCXJULq3xW8Iv z{k4iBkgdTq^OtSh73acZVrg_dPKtjrx*`uHFA>$ro>%VB{HxYhcc@xRvrFnx%3)Uf z++b9CGg>eDpNFiY&wKxOi<)o!ZE0wASx2Aufi(p^FPp5Z|39AHQ(14m;D+bkrZUuJ z1?`%m((1ArS~giv|54^(W##Xa)ops`M5(~*3mZ#FSJ!&M-RpU-9zAuNcAL>>CZ9D@ zP?GeviMQcM?Qki~L~S0aNsqI&JhPc%!E<|8ou?aCyAeDIOBdC*XDOe(Kpzc_~{})t1u1 zdev{de%JLpePs8>ZN!8kVA@bZ5zzGtJl&1#o!H(?5y+$<>?s`_32k8OmJzx4Bh_&c zh>=i|&1_`v^d^)jzW&?y6$-nqzjYUW4?7M;${2u*I>`YSQ9V#-zH(wybqBkJ`g#GX znfP5lxK_Z@k`gpaZEs9SZE0J}(_VwBjvLKN^w%y|ADrgJJOm8ig~ZI7E%$I|Y+%tHAS>oVUAC$(ZiiOD9bvY=dh^OmT^S^?h{g?^Nx!=BE)Ghz? zs{~I+Dg6EH8@`0m%X_!J$vq#G502FYKl;{p3g+B{_unh$5SfO^JaUfb@L(Dq%tMdX zbCE2OM;h}&p#E?1aFP4jG@ z#v`6ENpKa^zJaTN*VDuY>1W)N;U( z@+_)sD?p-b7WH~~F0aR;wZohZ#;_Z4d-39%#_O+8j}6{B=HV~$@teA7ns;9wP5vG) zjj`KWh6hsepDOR>E2hrBqkIP~F!kT1ne5i9xmF6~WRI-2o6q}17wVJCr?>t8X*Xir zHKSMLZFTIoPIEWYvZi;0%_j9D<6KY-V=U8&Xy1ANf zHXhmE8@sBbQ%J>p7T>x#e7TA*YlQiN#^J4-q5^hl-Ry@g$e0VaR7WSg%DmETfjU0w zCh)e^83K_Vfd^>@6WJ3={3f^G&0rp(;`Ygj7=}%34ub=JCw0?IZG^bBT&s$O_(A^C z1LLR`%ca4gW+eSrw$WC|lNd%@#XaBo#uG*5gyCSZ^gl;FcU)=NY!-U1wOOQw7`>78 z_3!%3xwBeUUDn-ini@N%v~05KFwe@$)F+62<;|4UhQj3UaMO@ zB~nEDN+Kd^v(mDu*AVxSF)|p%RwLOi*+UMK8P_oHKjBvhgu{# z7W3|NWBY}YM&&R!ax7B%=APcUmbvBJW3UdeTTP>;vH6Gc?1-N!PjkCOubOgRM=dqR zuW#b*ALQsB^2l-BKZS4ki}4Lsv-~K~Yw7tf3ir!We_s~ktBfUQwoTP^SKSqN`SjVf z^bOT&1;)uW%qjdd53rxad<6V9?>qf^w-YuK_CTrCT13- zl>W>tw7Y5++p6bl>4RY7kXs*wM#D)?J;=5B4?Fc>>6xY&PLgSawWZO+lhsX?^7!Ov zX{J}sD%-33WOzLPL6N;5;qkDvL_;wH#n@1^mcootsI$~yu*qzdeKbRALz8z>mzqx~ z{0;abFE6V&Xm@@zsZAv2mF6T51j-^)J#IFT^o896%_pc^qU3~`CkClvaDnu@Y0SAlxbLrplg6C;6lP|aTN*K=@!cCmTS{Zj z9l_c*YF25StHo@97E^__$M@kzi+MBKO+V)(8jZ2Vx2$&P2Yvd?T1)OaeE<@^!-3Y& z<7)C0_rQ0!#q~AFS+8^{S=sJ3N>ms9C7AF>kC7f!>p4*c;SY+C)Vu+ zapvXCtdBVJBGZ^~jg=90^lW9LaLuNM%;2^06jhGP`TPiG1$$oNEf{BBSWV4*Q%Mg; zuoZ;g3$`?165e>W#+jF3>;=dSk(CyQaImX zQ8~?;4U7K>xySz9H^G{l{{In~D8r0;HVM{-irt9RL6lY<~qM)Uw1@(Crh8hNEVJzw_ z%nyUZSs05t3quNLVJzw_40GWuj76P=p{~PO7>ha!LkeeMEY8(v8nZC1G@3EC<$lh_ z1PuoAHb1i3rjPsNnKhU*>bB{vG$DPr{KD`x-4M*G9sK@2$Z_M7z+eRH~ zreTduRZxbSc@C2t_vyN?nZixgsXbHWQ5Z4gs#F_pUNZ%E6K3?L+#Xq9Gup&I=}Wz; z8Gk*kAw$hjrFTndUhAu-cIIWhZ(SXpb0XHtp@r5;@ix8sg*-(|uC3^}Q{OT3YAc~u z8f`{qdfx75dX8q9>0zy`p7l9oez&Y?%=8p4MPlCHINOt9w#SU{PL|o8repo`Yu@o5 z->QP`*S9eNyLMxcvpvOIZ@+YPQ6;I{CH9m)`b(Y`WG(*qJ7z{6(DSm%x?WB`LD$*v z5stGx`uN7#o{kHFnm+NBSob8e7O?$?k>g#Ma zpjJ5BV^L>&-t0LRbxwyA&aqfj4s#*LVyD?2n@h-5XM1)aH_rB0)Y%@Je<;t6Z_h)@ zHO*#w9Aa$9c%(7ob0>cfbjIg4NQcAB_%PJY+wqS04?wTE=N{uZ?oY*``%lHg_fIJ) z*WCPxqvn2wsvTX-_^fHn`1D+J@3vo%yCAbZYwndR)m^l6`h5ZMKjYdPU!4MR?F|-P zEoAMD)Z)SyY1w-c1|OCd)Fw+ys7-P0P1(kEV?Fg=N4jZFL_ktd6rHzw9uaV2_R0U} z0cLEx52v1Z*RLKIQbUuz`BRVhxOgqs?PXoDt~u+ceKi!%Zg5)7^R<|j^C2n)_>BV|DUW?e(xg#28*nN)79jzmm6DQ1NdTSlge}C zXH4zP?@8Hv64uJk_NrEV+Xv)dfR9JKKg~0P@u#^AMe<6bKTQUInhmq4Ej^;$B-%}M zT#zuDn}PDS@mjf5p`}9)>#dWVnrFl@oFk)*&bc-B{jqkFP$IFJ-6Y1XrG-6d+BP@t z6x9E<8TLkhiEEGmb& zkYllvKaI^L`88s_gj{b?TY z{xn{5Z|6@l(*u8+UTg05eIFbKEG^wH$eSnn)0o~cuA;_MfFsO)=r1T*2_N5PVMlB` z3#kn)`qTVVsLQyDx?U4a8j6elG^n2FPlHNGXv@)`rrZ6D%-gpSV=Jz+lC?`G$bLp5 ztF;S7f0`{DH{sPFhPIs(g@SAdRyhum9&Od$=ug9taZ7uf#IMFx1=oCpXM=KGmi_i z_)qYh73xn@UzOy2YUq`|!ur&>xn4&1N^SPSuf|`!NZ#xts|U$a@~gSe)Xsvu1)5ce z(6ZLbpZFXyw~5ttznX%s*=sy8tDE@MGZj)YkJi-j(1xN65~jGYcj+* zYWUZ5igENGQ#CVx9~)mY3-Pg8K#U{SOqLi&p=LVAIQmMjYR2E`){yndSwimbfp9Rz2G6L8nKV`zn9>cSe7 zR>z7~4A7UMm+<{W;;g*8ALD2qX;e--ow7Kt5vc}VPdVwe4$o#Y| zpDNExO-%OmX)Esg(8CWL7daa9Yp*`^Lk~Tmw7NdD@r6I~M>tRJg6Q$9UaMzF3ugPq zv3Pp?4TVC15+w9^;}g?k?XYs3g~^dEFoK*qp8?3c9sF0Kn_?HmEeWe`zmr{^7-(T) zbI=v}oq}zesnPKpI##VJb5RfSmma9NnOjQRX7Fn`Ia~p!2C9s+=3l+O7=h5(EX_KO zqZIZw1KA?Y4hq72oRurcYR}6iYkoKLY3+vJeZ5+_dMoQ`Hw;2nTZi+n*I`ix`(3Zi zWVQ95tqrVtxYzY+p9H)7Hx zEI8WUq<-dW!I5e?gQrnBtW0t&VnhjR5MN(u#HbqOkdwxo`#5|j_zb5}(>&j& zv8d&c!g4ICZ0CVP*(@sOT+gwn<B6#9aXa)mdg$(Gx(fvy5o7njRlK&YwqnnZS^yJj|PEU1 zUk?G$3SeQDVw=;ci7F7aLD1k+l zn(duZTU2X=ZM_`uPGQJ9>14LE)M&k{7oqjisLIy+QegJh`yQOl1Faxi9G2zMdM{ln zt+xo-VGYAEKYRbmmaUg>T-q1Ym~+1e+az0H8kNHqNRCBqqqJu-H;c+)3na&4&V2|i zkd!p$-0w4gaMGx0`1~-9MJRPurfAz1S+Z9kVSp^s5^&^EvMBfI&Gu&p9Nu*ziZ4w`X0r+~REb zmck4*K%tk^9(i9gwZn0XudQhsgZW!)e7sb}SG-;IV4B^Bs?+$jzR1sZ#|c;~Lko_6 zH@8CaZv&09agPAQY#e*pmR@yiD=Qx288|XOEz36ce(pPr1t>^6BW^fP+LU_L{VUVp zpbp}7e?J>1t!rewR0yWK;;l!%BIi1{Zr|ukZ4&mEk%LpU@x67Avuu-EQcgRIUc&Ac zOg<=j-jiCxZWG=-Gk6nKdN84t-kPW<6I$Wku!h4J&)2pR1WRL;hoHQzj)l7~>+xt+}UJe^f1ulJ

tJf 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

EAws)zjc`smJbw%kmlamX86*U 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/down hold tail active.psd b/NoteSkins/dance/midi-note-3d/res/down hold tail active.psd new file mode 100644 index 0000000000000000000000000000000000000000..fa89b7884a57912ae5b5b04e826b9b0e2673cb44 GIT binary patch literal 62317 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 MJ8g%x_w4U~0HP%!X#fBK literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/down roll tail active.psd b/NoteSkins/dance/midi-note-3d/res/down roll tail active.psd new file mode 100644 index 0000000000000000000000000000000000000000..5c3175c83ce05369617c9587ff9c165800c52eb7 GIT binary patch literal 68860 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�R?sl|-8Ek4QW(_(VBrXc$(DR7#_ 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/hold body active.psd b/NoteSkins/dance/midi-note-3d/res/hold body active.psd new file mode 100644 index 0000000000000000000000000000000000000000..6a2a6e1f34c06a7fd8d37745e9d693fee77840ba GIT binary patch literal 73614 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 Nqkn2s1llA5{|BBHJ1hVI literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/hold body inactive.psd b/NoteSkins/dance/midi-note-3d/res/hold body inactive.psd new file mode 100644 index 0000000000000000000000000000000000000000..4f6ec5c346d82160cbfce9a54425fd240f56ae99 GIT binary patch literal 91652 zcmeG_33wDm)-^{a_Z{wQ2sh-K$vNRnCZ{A2l5l#!WTul0%*7le!Gl8<;6BIF5AW0M=*ZbyE4dQ($VT2p44-Pw??(dl&Q8QOHMHWgx|x>{^* zLvyOlHHar7(kbFxMyJ`~Hbd4(*HCBoxW^_ZV@AG)Nytenm5 zO4p=m(tX4s?HH3WzuxY&8r(UEF9cxPNU8yr5iZ7v~aqurVg2w*uQkYxbo>z$mzZFkn%?Ur$TrB#WHs`WLQ z>gi^i$=>7|gA@WH`(-x9hvJG1Zf=}5Lz9u3k(a8`)n;h&v$ONFbg3EH`574!B7Dqt zG%D>TbA3wy4Q*a6B+bmu&(@@7I?b zE4R7a2Ah!+Y36BkT5X2Dpdh1AOKED0bwyb^y*4jfqtzD{i!>$aF138z=6Ziq4$xJ^ zoUg11&7bTvgJfva8mAePejZFxaEhBz&AIFr4>rYdATqepHRuXSrReraXI?z16x}|l zKjl=L**#7x%(lv^GzdmkW=2 zeUZLcSCCztq0i0E&dkm$)MVyn7ZwPN2XH2^eaX5kuGxG6JwVL)dVtXUDswYunNehh zcH+Xi)oAm^q<4ssNZF5{dBKztO#762yT$ITfq|1l)uY5Dp!Tr?WR{temy?x}m7&YY zpf1!?u13qdS_uS$WwR)P?$lFw`cvQ2)7^pdIK! zd~kK>=0QwwF|SO}6?8F|Owb{8AuYHxEoe}dCJV6W0=MAukX#zhLstiUf=lD*vLT$S zMR+b~8@Qm8SsESCL>JS7c2O7O=<+a*PDkVDG&GFVbd;J-hdJsfO&xLqgGf#a=xqw< zdP+`8Zc1K?E(JuR(WGd!DVod_O;!r%F+|ejrhwAJj6w@d0a^kyl5A)%pzhEzK;cJg zHM-mqT}Ez3u})KxS5Q)v0eNN>>WYf;N(wSH(Am+-45+b7t>wPazvB_Xhdy85eW-k@ zZ7}k2<1)vjcLbK`pdVeX*H=01^=1n<&Q)Dns4g$o=V){}IjPz-P~#5cbx5bo?1Fhh zOS*4r(&3zi?-pRb2J^*q--J<2>2K}jH}$V|JK zxPp>EP?4E-F>wVYfuJHY?PB5zN&-PeX4=KX6_f;mip;c&i7O}x1QnTS7ZX=d5(p|X z(=H~ipd=7fWTstATtP`7sK`van7D$HKv0pHb}?}UC4rzKGwovH3Q7V&MP}N?#1)hT zf{J`m?TYXp!Q^ak?y?CESmFsy#lQH|o1_eU8To4$SiQhI9Li9N%cc0%`@;!Kps%8jxNQQi0%mE z_5KnZ=FK18C2~Sbr-U=Sa3xSTz@c$7C@5SeUVP19X|RMSCnb#+MjRTG8Y6`kTcr>yl$IwGp>h<}`8-pdX~%PT zz0+XjYTTS-a@|}bBokCfC?*OSOTszv(5sMB5&$DjoXrlL`oZ!U7?+Z(hEuI3yQgl# zH~{gN(hXYepVdaU25>Z=TDwCn5do>->ZKwfg>Ji5z%NFE)eVgz9-mb% zI9|?)rH}>W6GCwi2|JQd`cPgZ$t$$MY49$yf=q;&^EDqRg?iPLwOq5i+*MXvS%F%Hk;6oAK;-a7yK`ZI#oQoDDwZ#NnFxlIp(d{0;IX(N z7`}jWx;uzIO#}x)OqkosN%+U(P;}9jfy!_@Kp?5p1O={vT$y9Y87;j2B!(WrD1g#Y%pWv z%Z#Z=!g;4UDVTRIij>5=SP<)$$Nw;e)|ssP0YA*2(hsw5guWDJYl>U_u)6hx?ED=e zJwNcn20sY>|1v^$yeTP9chncj7e36KF%1RkyE={Fi+SOIB)>Gw&vznLUBtIwHEOjH zPJDZuYM4&pd4;@A-Xiai56Mw-oP14A zkW=I=OqfGu(XvEYFWCUu5ZNf1R+c9lCo7g!$f{*CWpiW=GMmgJyH0kaY?W-S>>k+$ z*;d(~WzWc7l)WZ9D0^RaO!k%R-?E?O3VD<~N#0LBRGu!+lNZP*%4_9U%NykLB(shX?0R<&C7 z2h}#!9@RnBXR4E-p`pD(M}>|Jog8Wib%!nwT_5^b=s$Eh>VO(j?_g?i8Mzpj=VeaiO5$Yk463zl@K*DN*{Gqlqc$zsE4EW zM7aW}->8~04yk+_rbiSe5F$??|s)$xzSzZU;xLTJL! zgyIBK!m@--2`?plmZ(S^l&DWMCf=C1Iq~Jh<4LNdVM*mlbCXsj{VC~q`_S&?-7VeMbbqq@yWM~8(XU5A53a|G9*_4p)Z=u|K0PP&V1FjmwSKHC#lcqKE^&P`#jm_gTC^< zBl}kOy|(YBz6biA?AO0vX+KB5_5EJz_f7xq{U`LF+y9RKFZBOvK;nRL1Iz>N7_fW5 zKh@pT1!{}>ZuLI(iGh6wmJRd_+%WKsfoGG4B~MLWn!GLf<3SOF@&?rpx?|AZK_>kh~#{L+%=~f5_>f!-h^DdehLIL%$r>b6EMXg~J{l_R;X@;p2zT zAHH$;+apvX@(zKmv-=+^vpOt=F`u_B`jO+|c#^#IomrB(D05fl_gSN|xUBoL-pfwRuFSqEdvA7YPHv7f=kc7catG(m$-OW4NM2H2 zRo?2nS9Kw}Lfs8hCrYzRuPxnE7E(5`?6$Ha<^9Tyx+zYZ7Z_*E~{ls~kJl=%HD0^-x`Ed%x$fBY1=nx5L3Tsk4SN?2TC{A@@x`T!w=9WRGH=P>mS!wn zyY$B!r{DPOvVO}JFZ=9wrN4W0dCYR>@*_8mzUhIRl{cGjeq%-EiuEhnR+?7+bydcy zb*s*;Hm?5b?=`=_`}f{k>Th{tP0pJ8Z&lrDyY=1M#^1JOZT#AWYd^ca^7b8fsP9;L z$B%c;zVo$pS?eCSE8;HCT}SV(xO><7!Rv2bf9{^fd)~RX@ZN3r^}TP!eW(9m`op37 zC*1$|1N|OY^}x>$njd^`L+OSc8;5ROw@I~W!KTkQPuslzk9mLG`cUtORz1}Eumz+1S@Wp;QO~1aJ$BV&Z~dw0PrDvZeSE{V?%P&9L7wnD@y|cc`SZI^ zPJD9j_Pp(nKQ-j3`<_mGdgTt;j+PxKb~f%jx@+dHgU?*?%-&~5Kl}7w(*E-Ba|55d z_xWzmuX!Qjg=H^zcQ4$1a*t!rH!n84_}Sjsdp~?>#!GMSo3ihXmnXjb>MJF$ytKby z|L#}EzWUs2`L8|m*Sx>(d_Cv&9S5=xJpH%qzdij%&Ko=4%zbm$Te`QNJvipz3x~!Z zdhu}4;aA=+fBW@!CcSg;-Kp=scjT%gN8dBO_vQPR_rL#O!3SqQT>MeUM=L*$`*_{o z`~H37CnG-Db~NYc^T&#g9r(27(+@v0e)jc0T>m(CeA(yGpRfC3z!zJ;)PDKgS0!J) z_0KE+dHid~*Jr<3{;&9d-S_SAZ=d>Z!gmKw%s6rUd*}Dwf3NnDyh{lT|1G ze#(04?CF(fdY#$wQ{GSef1dvH7iXK!g`T^+bwum4Z4=u*@>;!Ky4FadvjLn8M9^oP zL6az$FVp$NV({UX!Mz89QEJkY$h_})kCM16O3F)!Oio~j6jmhOe~~Eq^|IOeN{I0- ziJ?!#1S#S9L$ZuSg@uKMhed^lN5w}*M8ZR23GYh{^K80u_t1`4-u?VkZt3)frkn11 zc<25jU!0C7ayf9Tq&$VHLb53f12qXs;9!1oVu*IhZAr+%i`55DWDc%7=3Kf~U(?O# z%KCnY3K<9;n!WcBFtMqJsd#FRoBPzq!i6~)=4ZkC0f|!3JmblDGW)Z`ZQqaoag>*M zl2)!c^P`tMH@P*!OFk}6-hRV~wu$G)pIz2(?Wb*vUO%(t*bU%rt@DQ;TfgWIF9}&W zd(+7)AO4}?)S~ZRbMHQ}`+YCjJ>>9D+s}?a{f}p7pPBuQmwa;DYddD2=-oQsOP1{{ z{ro!wt^M+WW4pI|$)bsyerTd;C!hEP({8xS;w2|@hTCsCm+jeoV!#Jp^1_gJ7wz$q zd2K)6b)}ccTDP73^y-Flv8Q%_x8>6hLtCfRe3E-6^5pCjvoY=;-)`CVg_m4E@ewas z+IFP%WZI^`EgFCJpEFLq+}3BrC&SK+`n;{-%`+o7bcajA1N;3M_BGXqXr4!-Ywi^=a7$?qVO-!GEiAtt|HB)`K83hTBC$4v3N1 zNeng7lNy4rqXmnFWC#*jT4f~}34t&YDodbW=SHgyBI^x%n;4alI$0lIc&==?5C;}6 zG7Y>hA*3(dPMMa5aW!vNXjAW?=OdJsI(k%nMgyHCil~(#K3{o z8I=R|v2J1?L{!LMt#*7rBjkl3cz*^rOyvESXn6q;8HW8Be@KKY#lVGpOo9~H&1ArI z;PTV~f44zo*dxWk&38C4wFYMc=dOYGt?=#*ZBW86a;4j?53sO^;J*_*#bYo58hc8x zT2hPl9JGfjb=m@+t4)FUTBpq=8XH6!Or}cVJM9Q+;^$nOpwb}|M2@vqhRVkQW;h5GP%`6JxWj0!&*i53V1LP~l zhtY>5`s32_6k0r@`56j2sU5o135F?xu?yl8+Tp7?lLXs7bq#!1UZjpHA<4YlYG~l9 z4DQANi;$$LE{gwikw;-sFIvDJkVm%yOOv6+RbVm|Slk6}x6@qbadV;`MEf9m zus0G|M~#cpTkI~b0E|}*4OEi=M#741M)(5-8yHkk6F!9XEOr?U4z37{*DPFNi<_HT zU7>F@IDLr{P_b$Z3n1A=nT-TuF=(L>SW=WzuObise-|9mLaV4kt`R8u?CUU6_cFKD zBI41E0nAw7Z!`o;ES12rT=08#;&%s%2~_kop1OLw#l$%!)>xs$4DX8#qyZ*-ye(No zxy@+tm^k=960v^bF#)xwaGUGQ7O+n2PzzDo(f+8F2BSzI#t)r3seFbAme3XcIzz0@ zM6kedc-)m>A7pkw`vzh8s-Y)e1s4=hxF8Uj;CB;zQDBL}vna?52@nO>gBo~UFe{M+ z5lD)p`wGwJkp`0SVoUHy_4|q(S8A_-|2q(?z(TbiXpuNtv6Ti# zg`NKs6(M7sEJukrw38Cxm?l=JV4#M7ok24}wM!7-vp6Soi%u|U^PyDbHn91meV8y| zj0CGDt{6-%p!*kSWA#V!^)^E^5ySivrg-dbY=FKN>Z2P^|02NYDz-Y@EqX986KP>O z5eY_P=7o0nCku;^5%!L;LP|6dga40_qM~ZRdX{tXV}hjI(X~a>%_eta8Hcu90s;#j z3Oz%+PD2G%p|7bC6%~803aA+@malfiYU?fzNqpHa+BIND9SJ>{-UA1oohFw7Rmua*Ma|jNODGS(w#eGnZGFRKvqLj9XwU!v5kTxc%do zXd#WNKnhA~L@DDVDRGwDggz|L4pU5pN{g|m4d$Z3MmzspBvdYMLk>j6p0Hyos2!xl z6=1dryf{TGQA7j2#3}NE5)gBf7~FzpU^%Ppew%MhN#(Q|L!_^@-U(K1bTulGfiOoR z_C`YNW4xznT&V+#FCi7CMGXYIc65=p4W=?)emeD~kZ3qeKOsfucW8y7g>$MkNXO!_ zA#b=!4kZ=P!?#eITQyo7QoPND7Pv}_p~Xp`Tg)bWhMV$XwA5Mf8QDX;*;d~y;OX-` z+dQlvDs7tH<){yMHd>HAofm>n)6_RR9S}rWUHs~TgnA+c)IPkrETNb&>AZ}nY412* z61=3;KqrQbA?X3qY5-d*JMqA&2YTiN{>qD&nv0|VDrWIZO~FgSh%-8ritrq~RQB8f zso{d2whcU7=P!Y~g;1#|>6sRJ4C)QIpf~au%$e64luFoB;NaC|sVEEWCNPww(x|cP zv0lY`!s>@hn3vKgy~U{x82<^_|LGwTZS^>Rr}qEli-~FurX>XD`0Zi14v@mA^y-_n zAiOhtst)=Us%-sP@AzZ|TGsl1-RC;oz( z5c@)TU=aZ$>LKZ3ec6wSWc~Fefr<6yiv$6Q0XF7>DnzEboRr@RquV#OAiUD#5TCWb zlvkuDUOwHrB)sxnlayD?2iKs&Xwgp2fWgvI%@5EJzh08AOCmUG9rIcMYZ|Jj5D;ZV z%iuqWfO=MouGxMoNb(RW>C{0$!Ex>A=M3ad{gkoahFdJVXX{x|IZ~5-sbaI9C0x>i- z{LK?kO-9Q2jN>Oi#{vky?TxcEdLe#+)inj;0n6{9KlLpiMFhEapb__ zDID?I`-I1w5HJ!S#P9W<1j}ti1^PS&s8Nj6m(F;iC_jZT{+LJ$mQgaBp(iANi#ecV zwu9%$P|sJuEzWjsfiRIzqO+Yz*t^IliM8b=c>GL-{RCdav9MjaRfTpZY=T_c*^XrN z5gYpi2~2G4B8*C#&UWNC^Xzvp+o5_E&;$EBrwh$?%AKX{W;+OhETS=+fUfjnUE-yk zGl-=|76L}e>OBaeSE;4R*LfEf*A^qNroONOef>PEF!zFv*e?T8XYn}s@dV%)QMhUv zO_MqrXC}c$U`Ox*o4Y_T2>97|txvPLl zpbe&hczB#%dglUl$CC)XvkE6`zM&JRd3+k)#bHwl3*?}q)KYYarAM*_ygyGss8!b(;@h5hI8)_&$r9)TaHMmA_3Qb6Z@M!f9b_-2TY?@@uWP#~*j)zhqTuuY`p!goFM1&_{(X*) zc@1V~qQd4>BhBir?Mz6t{?hGC(4O-$m=D2nn!j*1B(B%_HM}q%5`q8M=0l1D!1%AX z8i)M`kjN?AS`mF=HNIGYNPJ;64iJcZl1P1iHIBO%h>`l8?FTdp`AB?$1BZZ-_yPw2 zq4`LCo&%slF;c%X4rU1XNPK~VIRZxF3mgE1<|Fla4uA^9Nd3+@C=>FL_yPx20!HEs z8~}voBlUR>fC|M({mwXm6Lz%zCBDGH1OX%Q1r7j0^O5>I2S9~lq<&`{e1U@u0VDB+d;mi8k@`FbK!swYzI10Q3GiX? z9*!gR@P4EQmeR07p#8CbeL#0d|2NkMAa8s>Hy&=B30u276Mh?F<3(kOg6QlHuSSan zek#mn!d-kvCz%tlnJ}9P|LX7PexsQ%?Kv*|j!vTWY$gn{f=;^KoHh{l|Kz>YuRIgJ znF{R`k@&*szgWOXd|~tl2p!|4K0o>c6^fDioy|Y)7V?q!0tdGW7>O@%01%pw)aN+> zDikC2JL6!BkdMR{ICxONNPK|T;tL!Agytjl zc@BUI#Yp|mIM^rTBk=_e_6Qh>FK_@5nvc}yIRGjYBlSDu;8h_Xi7#*<;fc z;W0pkav=3P2+ z>HgVp7|siS%h~XRIlviQ;`>|vN#b_8TfP`RPy!d09IxRhh_2jVpzeZQVKhK)FR2Jp zPQTeq*9)+Ips(QCtsBDWGruDq1^Lpq{|SU= z0J~3IM}#C{dcPH)Y%|14!ZilmM<9%Aj3t6SWtU|YR%CCom4VSeBu4tbg%yMM39Lo$ zDXGu55ZF$l7^%;<5QJbm2=HkOK`Mv|@TK+6uN8~nJyH|YeHr)`V&dzR1ltv+3n&5BH}E^F zOdBNHa5?W8V%gcgA>A=$Gha6I{coQ6vi&^Pf>{e@Etu`&pbjuSU@~BO!0P~O3!S$G zwr?ofT(P|Y$=<+aeew%6f@uTO2C-*g+Q7F4TxSMc_`kqPINg7F|CCF}5%|afe(qqY z_dRM=!F(nMY$;3+E+;+U`v9zW{89(}n=Jl80u7f`(*I$BFSpRIsUTPj@8sN<`EMGz zynhqO<^AjI5E@eS84Y+m4YI&NQk>l)5D=bBY3SFEV1npAO9+w!P_ z@nc8dwEU*!8EL7bZf;wl95hfpVAap7mHh^&2d->e5jkR1Y8v8oqsNYKUEb%4ib+*B zuUN72s%z#LZ&`EeTKLZt_k!ky*WIvq=`y-6#PVdaWjehNVCf6K-dHh!{s0-J-e zxh9)av$X?TBeC@-TW7QV1h#L&_N3U}8{1=Kd#P;CnC-{2_YUm+3VV;l-qEplk?fr- zd$-Kqp)>mgW{1J-O_*H`vsq%cSWHyD&rjXebGMhqXQ+Pp}!jtRUwv(q?*DH4H+_?+9zdZN+^WeR>ckfH! zy|Vw+S6kP6Uq5$%ybh1Az542Y@bu0uq!1hnr{t??hWBZ3}{}lHJ*#0rwKWFa`*!vUVyS4BpiM>Bz?@!qK b6ZZauy+8S_-=B~b@a6DU<}wLfmJ;|Mu-gTX literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/roll body active.psd b/NoteSkins/dance/midi-note-3d/res/roll body active.psd new file mode 100644 index 0000000000000000000000000000000000000000..caa82b6f774b1fa08c5a19e16fb7e0174cadb669 GIT binary patch literal 91758 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 H$$|d|POI!P literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/res/roll body inactive.psd b/NoteSkins/dance/midi-note-3d/res/roll body inactive.psd new file mode 100644 index 0000000000000000000000000000000000000000..cc8c4208b04ee6f9f7ef1bd971ec7c1c8710bfc7 GIT binary patch literal 95516 zcmeG_2YggT`tx=-y%(yKC4`=~o4TPT*;Gj=*@R|+&F)LGu+1$gU;#u_@I+A&yCSEe z9(oo~P6ZLqdMaQ$+o2vOo()gIMza6!oA=)C+Ym_hPCf6>y!>`%-uKOX^UXKk%zV>c zippji2uFlR1>Oq!izG?`#5WX`)zqmFLrBCh1tE%iW)KP+Lt%+mJg~`PJn#6n>&EKG zrBpB7PjTsp(`}qGy~AlVE#*DxCcedDpPKg7pLV6GE#|3d^YZI*>YRGM)l$98#T%B* zY%ncbYSNk0rcaBW(ox)DbJ}>1QQcv)+TFz+Q`3xQM-yKRVFYKVsc96?(y3{sh)~b3 zo2}M6T)a9jOOt8J$t_Ul6=Z1(3ktP48R|NRU0umHsWm#aHYcZ0t<@Iisl_L4 zS~P^FxXjJP_2rdfp71s`t<~dk7H4O-x3_1t=Vm!vE!i5KPM4jd&DLr&Ax5UV)9x{L zWZK=M1tJoia^7unS)3jVWQ}xJA(~!mNNdpwoZ1foWMMWO>7pRK5x>Hw%&2~b4)YTQ2 zJ4{~Gv6}K}Ua!SmoU19%)oUwq^UF)i$}2UR(!%^g9kigLvhqT`E~kJ>H8@?cOaND7 zcYBO>6ED#$*OY2CMP)^$Ib~W(Q(K`c&(rC(Mfn=7zN|u`DNFZr%g1AB4m9N;T}8}^ z%8Jn9SuP7mhBmEfnkm^Qz+?rdxcT+G+hO%$Q=A4OgC|>qu9#Gg?wNGKsguglJ(C7f zHrg$oX<9M29^js-WLiiQIPnV%B&}L{0^WX=tqP&d!+#L96 zAPn%L+zhR*AR{+NlaZ?_f}buUUkkrnEx>?IVGjHtZXv$s10H_4dAZuj73F$uPK91u zuFomeYs&Qy$}81q^2!Tya&vW+r6S`&oQZ7zY+V-LVL6E&Am&6pKxpx7O9yYAUv7bR z;>NnwXp5#~_ll88Ie=eq(v&hx&y;$H)!{P0z{#WPQDQPs&)7jS%PlA>$jivf(G}!S z7wV}{qZM2&g$Qmg!1FaioV*N7RY+Z^Q>ZV1fD4ekqWm1{LVZFQY7<D#2Uv80TW|$PAq^Lys{=m4rEzrm5H8dr zyb!bvT+qopjSgs{i)nR5m{wPWadbr(N2jB4bQ&5)YC1|yr^6g|l%@_jfkC7o1N1fn zbUmXWqcEc=Lze-f(P%O>+6+x@h9)lq^cW&(3Nt|I!J^PYQ-GELjU*r13#dD^3{d#V zT8*x-QkPShQ=!vT7L`_(=Rlr$WxDe6qRP@-4Rm(2GJ|UD=hkxn=->N@;76aR?|xJ< z)ixOU_-VOQvU>x|bTELf(d%cs9L*LhKh0fVRi>_~&=+WQ1qGSfEKuWK>2AxR*l$V|JKxI&UZNRgR#F>!??fsi6I?PB5zNdh57X4=KX6_Nx(ip;c&i7O-t zgcSLd+7%tRg2~(A-eo&nu*4gh$}fc5o1_|i4*o=+-rgKbaq-lp&h!<8-uYC1Nnhh) z8(c=a+i7(1c2lQt8*~80i~u)|G!Pdt5<77dC-^SHL)b(*MH*kxm_Xglj598gzC~kx^ij~1 zM`^g4WH&bh#tLpYg>WL|jvH?DL$rY5$U<}Ir-D1Y@FY_=$f0p_C@6}P9-(HiG+08ElZwWRq!5%Jz!W9IPmrpr z0HB2213wXuuXeB13LZ^2*X6cb9rhM@r;_LG#-=8?7>e|R?L4>w$SS&T>kmNt8M zmkdS>PLrHUw9R6l1-GUwo=!0qYDBcn*bxlH8Y5*^dz~07f|e&2p$Zh$i9A!C>A`bU zv&(4X4IbV(t7(Y|l8GuL788YxCE;Co=~c`r6@W2j-tGWS17O8`j7!PY!>v}c!`oCc z4M4)9^1$7*{%3)SPLf5W*$d3TCANN38{|AWwdi(-YiW(W;pgHm2ItTm`%nxij)8-1;>29=27Y9d(ap~UMQf;--vIAn zq!D^m9{N;#!r@lA-Ruso&w7(b12~#bgTtwoiGbAd&2o{DGLOS1;#VNS`j%D+kMH4b zxL(dnrQm|{38OfOgdIr)eW@vz?GXO|Kr;`^WM+=b=f|wdxiyFLNy8KGGk1q;d*1Cfsb?z3aa)dbHMysd6 z*b)>g-o#t24Sa{E#$DY|SBqMPks~E=P~@mqhih4>)zTtKDnTfGwFHKg5oW&G=(Tzv z7}dtRJiSDpD}jTf$27Ij>wPleCJFS*s{9B@LS{PbDC;PX!wJpO%}a`bxM(XV(h1Pm zCWi+U>I8TURB>yM=(GilM_MEne%$mUG%U1?1PZPORCTSz?odG6u-QE>yi_=U!9sP! zD=?Nt!Ds|}ZZx@_b%si88w4&Ks`2KbK#95_e*_w4A-AvlF8`;A#<}K za;_OZ>Hy)@5Vp2^oCrs*Q=67zn2sH(E?^MCgAv{$gfnOyAzXrCv&|0rtw5fgW}6wq zdm(&Tn-}$7SqtGcZ5F;A!mmR(-RiYjAdD77s*N{7ucbnnrF(c&D}-|(9P4VR*F$&; zC{=8WEZigudq4ppF3~%jowQ2S<4qIbs~EZ>bv55^wu6K-`Wl0P9~Rz}g#z_IeMa!dJb6HtUl!))zY(i07h13ywb}$X zzP&CrSkxw7o!L`~|Lue_wq$%{)bq_eTJF4hE@+v>-U8KaH(PN0Q(Npo_jY9z{>@}E z3K$gh8UiU>x=HGyERy(YDp7v%GEt?(5arpo0*3R~TW!=_f-P^}$WH{lhcMu&8{{a~ z!>ht=p`!xP*Egt5URRqCMTK4%i6#jol?)*x$Y?SitaB|XB$G)AsUT;PSukT+K+c6Z zN-MF!*xF9cCo9PsvW{Fut|K>++sGEOm24vqksag-@-+D~d5OG6-XQOigX9qTj2t1y z$WLG}M{sdm3O9rs$&KMAaayj3o5odewOl>7fLqM9aCXkiozGp&t>ZRuH*$AyTe&}S zk8@9RFL3*~zj7aPpK|}=epDzGv5Hj1aK%_fwxUQ;s+gf@P@JP^QJkk(rdX}GQn5*~ zS#iH&yW(lZONuuX2NjVMmbP9N|~uFQtFknlna&3N|*9NO<8LRd-li*s!ok zVZ~uJVe`XU!rH^ugl!DFE9}v*XT#nII}~;-JUo10__*-G@apgd;Y-4ohhGtXOZWrf zyTkW|e;j@^A|hf)#H5I+5wjwU5uS)O5jRBKAF(T9f5f4P?;~R(M@DKRD=!WPe(JP}j zMQ@9KHu}BjZ(?F%(qeQmb7CwpD`GaqJQ(wQ%!e^Q#3sj1jMc}U9qWy~GWPD+-LZd- z{U$ChZfsmh+`>3d+?8=#^5PtQlw>xPIV61K%9@DL)1emhAbU&^^hGy-XE$OI&tWnq3uI&9s2Ch&(BCbWAYiMGuEE*&>8OxQw*Cp ztbW+?VRsIDdDzk6BZgNEcMiW{_%p*lA2D!5$%rK*t{w5zh)+kRjGQ*oGV%^NTzB)-UsbG?2(k+wrWrV@k7VH_DGv3OK%`DAq z%e*i1!>oZ>wOOmOc4U2-ou0ig`|9lHvb%HgbF4XAa^BS>YtGcH((KgyOFL0((%z(f zJvT15GWVj~$8x{Uo0P}r-J17yeoB5_{-ybQ^1BKO3tR=;3O+4NFI-%BbKzS>sYSDk zt|)q57p5!IU8H+L_d{_(v8VW<;;$xWPF_0s-pPljjGMww*)rwhscBP_GsC6`eOYB`rYNq@~ZN+ z<*!sES2R}KSn)w+T4hV+eU(S5@~f6t?XC{1o>6^u^;3Ha^fvC9n=tq6xm)LcH?Mr&hIt3)XV1T2{!0sn zF0d?kY+=O0xeM=Fc=W7_v#vYq(AoKCuQ~h8bH<(1an1|p4n5a;?vslW78w^kyf|#} zyv6q}K5m?4+-yABRMT{G(-D*2biL^_bBXy{^QZh&egpqW^VH@I&4*j2wp`QlY3uaX zjjf+s^p+bfUoWX%a@&&cmd;vw_fnsAp7jA+q;0Y7aeK0TseP|wgrmc;&pFAt#(D6( z;`6RM?}%%L>n=CvKF9r-Cl!pTm%Zb?mv}#Ho7Q$y+xP8r+aK;o>acgb+&QuH^3G3| zRWAGea@BIv@;&E|I)CN)A6`&;!5tTJ7dBnE=c3UUt-k2cimDa&tc+f{bmd=G<*eGU z>f4LwUA%Mk@YO3;e|$;RCHJj~U*lTy)}@m#z3np9WtPicxjgss8!qo&YhL@}x}0?z z*B!sYbj6Fm)BJAJ?|fG_U-`=Vg7vpv6@HcdsyDBme)T;Yk~S>c@bNWu*KEI5eeK$7 zzrAkJbuVnp+j!gc(bs#gKe(xO(_=TJ-*D9p$8T)C@r|3xZhGM6VK-lX^LMwHZ`prq z$*tRN8-Clm+kU*=a{JqNRNb+C^VrQB?+m}Q?aqH}nY-n=-xvLU>s>?dT6b61-S)c= z-cx_i-mQgOx86JK-u3q>?(^RF>HTNl|JonQ|M1wh%x!l(Fz|tO50VGH5B~Fyi~soM zLo*)Q^Kj9_+a4M7$jy(YJi2x}x4m=wksYl&4nDTvv3-x9`S_lllXpJ)r>sBS{lusz zZhCUSlk1;~erokozFo_99o_BR{rS@^Pk+2;(Vlmong7h|d*|$Z<=Gj}KL6*+KR@$a z>2tfDpZfe0FBHG<_=`m^?s%!-rR^{0zx?Q5^8fPaD+RA?f3@({$6nLDwsYTR6vKQ?{*+27rNKYnQSKjQwe@sp9CY(1cI>C`)_yZ`NMT0e`+~&Mua_;-*FlUg zNj!ZcW=IL|?~>IdHZn3YDl#@IDmE!5IwomALTqfpfWav#15#23C&ki7^n{n5E*BRQ z6Bi$s7$2XQ8Xq5@icWm0kR+);1bn+mQX~{F}I6iyWu9uXN89Rmx&!AOoMloB$La4JrzP$|M9!Xv|!vAKXuQmRHJYr;zB7*o>D zTd56Cz50$nmW@syQ2%sOZk}t^K7GWP4Td8her%acgM>=l%ae$BPTz7r_N1uIbcP+ZRJE3d;3+Wp+70mqX(Xs6{TXT1g-aPt= z>3bS4IPk{%`RF9=o4@0k?xBD9{Ki*a_yU~gZ@u@WryNI8zrFdI{VvNtw>qXDnL8o9 zzGRDi-Z@p@uk(>7cXfsN$or4JwC&F06+ZI8-?~@%$d~V2nmy~jvu^21II`=@MZVX5 z!@TYL4fD4DH_Y3C-!N~l|Au*c<2TIPo4;Y+{z}KmQFM@K1ee2sGJ%v5GjWh6ScF!? zdSW2B-6HPDr9qHzS#@<}A_O8y1eZ*|K8w4Ogc}NTcZ^C% z6L*F`yo4Js#({yE)4+NlAvl)1I4uq1Xn*CU78vw|v|GS`jYJ<`K?v;miT)|RLQ3${ zqVS2>Vr`LH`Yb4rAj;dh0B^S|{Pb7ct_*}RB0S+7Ov}ONV5L%44sJxC9NbuWITV~k zgUeC`Xj5X~fb~J;Kz*#6gxe7n_M**!>yKhy2%-iIfq^RUNIQ!F;V>M)1VR#AB?V6A zV-lpmeoO{T2To5N2y`2S!yYLSenN*6-(YmL@E!x~C&1b=?y*K<AGCuQEqn)a zj@M`gH1?FRE3cOJD`^i^<+2C8*PDa!4KBM|+DwZvn$30Mca|ksG=7b;l71{(+DNSQ zLmmd0`@nQ5KDS^1OJY`m|bi4uuo!SFk<${e@aWfb3$vyD(yjh0rnc4u~O_r#m zO2{&=u^C(V*+x%m(2i$nqnoFgQg8d&YIStUGf)4?_^d?sEzX%H^5tPuUdefR@`VloxI!Q0gAu$p<7?6g4yvA}+a zk+guZC!CdtuCbe}UNaBh+n4Gm2@}x$LXV}%VujN;y=oy!J1!8l&S;Vd#0Q{_Gi&Bc zU>RNU)9_Mlroaxf)9a~&{cnpC+BXQxUk!tWDmbZtqC|mkqCY_NC4r@g?~))-CO{P2 zAbNn|q*+NMh)7Z*JxqK*fi#dzl3IelI;27)rWW+EqQfJ6irQb~#41NEe9v2|0xQ*e zphXgC#nu^}wGQE*1c(`yh94DP zV}~d0;1#6W?&CGN1HnjP9_Lvm=f;95Ep4P+ATHpmG$s)9OIVS z%dx+B4}O91OF99Fsz6FB4U&}cl~lTF>|!4le9lNpg-VOD=ozC6=B>q374TjzR<3YH z5{ODYVeeE>J4mHF=vWf);*w55AsX~zuhPKz1e;Yax} zS(~i*j_e`cVsGvc@$`MEeW^qKZgo4GgWgS6q)+Wa@M)Un4wn;xD63OH{gBXLq=4Fo zProG;KP6j`5k0y#O^}2jDK*fECsRmvkhEIhtbl`f;Z!d@Qw{&BMv$7D_wcFngKPi-XI%6UiMD*S;prLIniV8` zF{UL1?fjlFoD0ZdRD#VNS`gs(LaJW+7L+Y9n5^nXyQgyWY?rBIffyI+&t`OkkzYCA z&~EXVTBY6VS9A%%>-ak@igJJkX!zG>0@c<;QbCH=gwOX`|BVeJ-3w9SSui=47cpzq_ls|?M zrgwV`=-0prIV!IQ@lAN3CZzsQ5nM#TNV-V+Szk*I4ZC=;K-XViW0$NPeo%n<>&tl2 zq&sgHV6sDomsgO4`P)IHD$}is7vC=vKy;o- zW!024bhBCj_K#Pgdy?~tsc{}Eju<`U3>Yje)%+k03Fsy1za&DV);q7IFt4F{3IUzl16>bD6K9oh(B!b{Id)0d#Owx|Rn(`Qz*+Y?-iv+W)=py%G*AV6^j&`XTd z@1`xQIKwiv*wJ)YO9W{nseU#n8dY?p1|^3{4N3;1eIPA4cLjjy%>|QvZP)sZwX5%j;O%=TEt=P4T8dyj#7(-LT zzcK-;X-FC0aSRpgEPx10-)O1P2k~t-_fmM-4L{o2an=7MkKgX;1+M~@Xv^w>Qvi#{ zaK!8B69IEX#K?RQzt49RPA4KN*cUKBjbh}!-0B$&_$X2a{m8Dm7IGI+_?F*uevrq1CB}T`qZ| zGLxG20;j=fMCFW<#bE*m3aL}!>cr7V0-i>r(N|Dr7&m-9d>D-o0%J~3pD4Hl-w%lC z>5CYkMlmv99BG6(IPUMq(9y^R;}PD0JNbwdhE-&Nd!LYo&I$4T*BqfxU4owf#Z`-N z+QNVSRf`mm%u4u`3ab|J@hGWNty;vyVhnitJ#Hu9RYzRfq$9UF4@>g1joq>lt3RU{ zm7=h6kt!79XBxYIiIof4X!&oiTnr_ZU@79ge`$rx4lPzqS2EPSejNaZGkE^H>l+9C z(<6Vaj^z#uoC$l=bj`qc(U&VkpnT5!tFCV>`K5S;&KI8F+WLklZt4YAOM2%ul=Y2T zyGxBk>-)F9A!{2y=lTZiA5H^1%HO=uijwC2!dd_)7*`VTw`NBvUj`-lqF*0A|03b9Uxi4@4R47L7_r*bxn2*dCIgs&0brh+d zJRboAR44~>zb_8PiyX*&k%Jr&BlATL07CPT`vM0*g<|Bse1$6=@CmS|$CGBTP7E*w z$C*W7UZEy=C#-hSRoDOK+ydl}dwm^L&(f%NX#th ze(nLvtOaICmoQ5jcCP>XJB7%D^!$>RG|l7WJB6~g!7OPiE9lgF*u>a52VnnC_Q!r< zOZqY@v|~i(i`K&m5hL?O>j5CtMv(i0^#D{TM(+1zziblok@+GASBV&zFLD47nvdKU zH~=aXBlr8_;2tp_nJ;p1yNHqbA_oAW`N(~N1E4}Na=$MQ9uxDC`634oiWr$MasUvT zkK7kH04fwC_xs`iPB}r_IYwl@$iZ$ABlATL07CPT`vM0*g<|A>UmQFy<|Fe(4rDw@ zJc=C1>EjFz-vthU3gtlV_r<~6A_p>GPfI$H)Pn`x zLRwE|OVgE(z`k)LzW-((-R6#quVXO|NV1?LJhUy z7NiP(v*8!~gkgC>Tkr`wpNeymuvAPRIBm#10Bm!l{?z) z)o?jMb_(&=IBns35NpF938FTf?sj8eXx>bpBHuAO}DsUB0ef zekd!3VKQKP&_(w(SX*FifwcwJ7I3U&dcb7B^gtL9SzBOj;eWX;zzm4(+tc$32Yl@B zfRAZ|u;RpY0VTk+foVgaC5YN^IqyIYwzT`r` zu7XjtFt)az=6`1R{>kb5H%y0tTwyD?e6kKdE457*0Sa2UqF|JShh^aOr=-@ zV%-Jn9N7rO##?4xFk6aQj?7MGlMy!cViQd^t!9e|Y{`VJOR-frw&uuISlN0qTRmr6 z6l_C=Z9lQiHnz3MHd5JcHQSqKClT1W3wFwcovC35m)J2ab|{S4}(oSn31*BRL54R%$9UCd$Ekl3XwcC(G$<72lL*&WT_>Wx$~sw=H)bXU4! zOnQ3PSl<{feN6ZGqzUPx(??I7IB8PasI*ZT8JU^t?vY(tWW%cwN-d^32hmL*HTga4f7>}pcF+-^@-ldtV~J81*o<8y=SyBvol7ONq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X! zNq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X!Nq|X! WN#GZd0J$8#K-k4xCV|sZ0{;i0QS=%B literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/tex/black.png b/NoteSkins/dance/midi-note-3d/tex/black.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8f9aa4ecc28ac7b858f57d24d0ff6741d8941b GIT binary patch literal 2791 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 t0000INklQ|C|}vZ`keAZka~hTuQbWQLAe<2I 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 mfyL_IpQ^t&_`a_?pivI^RVVTDO literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/tex/color.ini b/NoteSkins/dance/midi-note-3d/tex/color.ini new file mode 100644 index 0000000000..0d9434f5f7 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/tex/color.ini @@ -0,0 +1,17 @@ +[AnimatedTexture] +Frame0000=color1.png +Delay0000=0.125 +Frame0001=color2.png +Delay0001=0.125 +Frame0002=color3.png +Delay0002=0.125 +Frame0003=color4.png +Delay0003=0.125 +Frame0004=color5.png +Delay0004=0.125 +Frame0005=color6.png +Delay0005=0.125 +Frame0006=color7.png +Delay0006=0.125 +Frame0007=color8.png +Delay0007=0.125 \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/tex/color1.png b/NoteSkins/dance/midi-note-3d/tex/color1.png new file mode 100644 index 0000000000000000000000000000000000000000..221b2a7b7b2ac55837e8ba16742af73f2033694b GIT binary patch literal 77856 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

6Cp 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%0DBQ!_GN=wvm8+{402-h#1F!OM3X z0^34el+>;v>oSSy?e*ztX`SpK;{Z_H9g|x5EWY~?TN4CI08m!_Wh(0@fj%&y-by-u zlB|NA%YQ5g})v4h$l5zAVNG*DI(2RWM)WZFeN0UOc;Ma8?HCOA>7QihpA93G^ z&VdgTxY`HBu4l7n=B>&4TYe2#ISMO++x+;}F;P=8?2f~5-FHOQR0gvXpchog#QPP? zxG-rn2&Z#-;>TV8+w^u@!7-E4?RlhAU>*MHduYxD8`yOG$ceEs@eUmy)R5l`pc*LH5Oa>WSDHYLU-*qr4iib~Kn`E6au^kOR!Z#9aF_5g zX2U*)lbhkNxA|OWmoEf~hpUNxJxg0^-)CcU3e#Wx%>?7MkN4QTs23>tCK} z@o*5{tJ=$pw}N%j1+D(;_mM&Z^N@pAuR@e7yrnr)wKosG!NY`(xbyX z1AXy!ltmR=LUo-deiv{LO=KI*Y)3Ix75I;zku1`hY7QajHkcWM)Vc)m_rJhoYWVHG z`IPen*+H%aOE1FbdY1EEVXDZB)K9xx1~2s{-%?D$?>weUi}7qGz7mkaEP&tp3_U(l z*L-9ajZcsj27dinSuFd3Jn_wwj*k~|WbLS@REbV-QO;B2GB@hqOttJW-ZmHuo!7AB zz(E9;S%w`MfKD?U%btL2No)(Tw|i&Wa%^UT@|VT6WQrkbxhAdlLy3ORCn}#5ElcyfE39iv zT^_jc;W%!DWe48Wmo&MC=_!NTQ+{Wm?0SYj7-W)A+v2#MoHJoV?FrdU+4C9L8Mnf@Fczi+Lni-q=^u=* z+Y}!$#nl1a-BYE6%+dT^V1mFi&*ko>WLvZuZ#E%D0byy(j9d|GCd zOa5_O2^;qpTC9V&UC#j|y9Pm7O5s^kZS}PHBEG7h>FYD@siUeg^>14|MB%=`7^7hl z&W$T~PaQ2|>B;i8MS>l%T=|am6-((mHYWCj&8`QMpitFZnY%60ZP6IVB4|c~^}?MH z*1;-|+tZI#zUtBH$4{JG6+Ap?aQ}n(-`kg2J^?{>EydL*`<4ON-G#~z%rca3d5wL& zS5xSjalnOeXI5j2ppclRA8J34s{ZV|I($9yyCV{hw^!O@`e487Zk9lxW>hnq>el~$ zUn3LypFoeul$qbM5ptl|BWF0i_^M!48n4&aPtYUyv%Fg(Au86)izXm}ML)X-vt}6J zu@gevHd2c^w=OvCap4stiULS7uken075XvYQBo0NMR#jp`jC2WVh9|5XaUUnG#wK} zD4ZNb(`i!^SVkhGa}R(&c)KrW{C zhx6xFiq)_P<$aD@B`XnjS|@zApKEmQ!BK3t5{dI#(qHVEc@oJRUn;W`7nE1Jv4ZW4 z{WUM+rdZmCF_y}|W=4E`RgC^{gLI3$a~rAbkr*_reD3J-=(ns+B)e%)c3&2rG1s2^ z9bq-TDtLZ0(lb*!uggK9l^LOi@y>!l26h|pD)SSjQ=n(<{aw*2M3vbfWSU)QpuCFeabdNIg;hE|>B zXlJsE1shOm4&XnFd0$?+>%hg$v#L%f~t8gSm61q?P?Z zp&q7-y2i!ti%Xlz2fi`XpQ5J_W{0>-7k3BGziblD2j@`1oV>>)4!%c1<;mWTnqwM- zkCU5G13^5)!q0gOQ_JUCWBNLBGQA#NfK`*zJz>;Fkou`oIJo&CwkogX`FIoB1h-Z; zS`~&@vr&JZ+5bgY-Uzkqr!Bn9p||H;REHEMS}?Y$u+e21kT4Pc?aRVb0LDV#d$NJZl7jQkL z@sLn2vy<|wxyY1lXt{R93x}ZFF4}bnmIBLN2S-T*pH>#P=^yV1{6z|gssnsxaoAeI z`C?R$cqTDpBz12Rn5XQdWpaPM%L`n4*6>gUo8HCqHb(>}M00QIma;Vuqk7~h>3)a< z75}a5b@Ks5g)iK3Z0pQr8^2tSC}@1IFw@B(2?~af5X~B`_+7)b3T;~&A+c_KIXg)IpysE%zjF&`lmqJ9&~UB0T_Em5xmPggH8EZPd->TW@sXA1HB zxvzA>$--UR0I8GwfR@gv@}r5jwt921zh&dJyzWdIx$VtT6wTrHn0dz^?P`rhKgjyM z^8V$YGb)>D0XH|OjUJ2dW^f)&3P!NrG7NudJe-3_)lYRnfb2|xpn5pd7pIf-tvvE$ z3M+wrI2Dog{thts>E%gGb!eglE{mubq3+5sn(Y+`(0FjKtOscOkh5D`Dd`>U@@bK5 z-l>DdT_1{1KTq}Ixl<_Fv?lDlkViLACwnVWys8kU$XHd?N9$h+)xs+)9$FUJ zB%a(ri}_(|K73h{LA5RkCtX+?5~W6BHx((&Pe&>UGRu~4cr*x*6qdX84W;$S=Ea*W zWqj|QKrQd?72rWTWb;Awb76fAXsdj`v>JJswHuVkVbwszkcQ zmpHJLYu_mK8s-Rj9Q>`Fp*jKI$a0Qx!Ge#L!f@>Xc6;j(Z}Xy>fg-Y@YmRQ`px8dG zE&ur%%Hr8B`GOz%vAEMKY~Is%&vgrwL1P)CW7nfDa(9;1!#SArSuiQ)a~EF~It6C8suit`FYq0n*P0=z9yxT~X<0T7r}$F8sAM$pi1j8eVV zv4-{+ZRs8FxN~AA?mv|6p2Pz4Tphuj;sK{Eg7r>jQ95T)sN#r|x_u&fIN`q`iA(tN&*B&SXO9 zI*qOOntNhf!0+pf6!?}X6JSB3Z^3Je^V#~ySG(k17Wei7_NxU_@Xi98Ez%O2O5=PM zsG!WvC+BfRbsy`z*6$S8HVqHFwjcnvIs$$^cuA_85(GnejXzQ>M<2U{`iES+K6<(b zJ=!K$JzhViw$*=2p1bwEEN5NvIgX~h>R=Jd@@w3K9*{8lv+(}x6OD?W+l~|dJ>bwC zTwRvs75^K_+gsW&dVuLQfyfW@+=}5)#N2gpY;LRu{4{G)s@IX*%K>uqI5^lus%7(w z>H)cF=Zp=T$HCmiH6<1QfcrDjQa8r;$*yUtN0s91W}aUt zemB$4mF*qz6qfEJm+H_Wp%W%+cfs`wTaZFFt0jTn5ln&n@;t?|VndnJGz}I)NvSnr z=!KkAF@BEfdc6AaS09)_f%XM13CKMJ3DbKle77M3SRB{|t_LQ@3s7_*^;rXs*Cyru zv>#28h5u_l|B5SB%*}oE$J3BIJedy*GUlYyay?nP`gI|tQho_1W`aXxsrD^X?yh-* zge%P)O~*;awN4|Id4>zQjiVa(>3mIBi-yr3awvLuy*$Yy znwrgte3l>z@WMN6n9RjnVRIqLa@^|t>N|y(q-1w`CVpafkTjEk7IYuE#LP77y zsEb)e1q+F&Y+fUU4QxtP_8uzOa6mngS(=$Y+8&7F!s{PjtgW{|UgEm!xIhd(H4_PS zTnUvLTU_s?1XXS87hvvj8QC8 zr9DW?r%4`LjCCRDL1&IL#;VWGnV*6aBZUS515_1U0j0^fK76gy4fNy^FY~X z#e{@7gd1UU79QlBAK;vSP0tsJ6}Xj$lQ9Q4jklMTih?jl({{xDNV~g}1Sm$^J+~7Q zkoMbp{1#ZAUYpeUrU+jX+nAaWR{Z?~KqRSqCt)}pP}Zi) zL_YoWF6S(WP=Ti_@{goS@ujj;^Sk_q$@1zyf1b46F^0pS;~DSSDjmuvf!x6)Au}0b zRAz5H4$plT?uEZo5_$dznQQec=e`hSw`JH79YD@^$GAxT>xBO^FEY{d6{#H*)LR}C z7v65*l8(%ejf4Gu->zdn3cm>cxvTrKmX(ks&&65r=Q2}t(D|H97hYnRF0o+n(Dd%( zFNAX#hs0hCjWJ}N_nBaDTqbRwyw4pSU?^Xvq&d%wWbfT~u)kXN1~26N1z_d$3gv}z zq-fU>$?9EpFpDsoP274jb;XRa)7vp!={GXQ*VR$~DGzCoCsfwcu5)Vk2eA_YUTCutaIanj7q0Gbo(JmLC=nR#`@F2mFG zp!@;OUhd77h}4^HIX28$iNy%zStEsMx>HbL?>9?KW&dEhvI`A~OdBha&%Kuj3tJ(@ zLH%KCol@hMPj$Rt!VhX#-xGPcLAwH{uqiOyDVRU_`yRexN6daQGBZci@g~R4_FwqR zdn$8Q$%rDfGUWo3e2PY)`!AI3on1<`xcKWHzG-oUoAdWPF~%2Zk;shWaypxHR{SNp zRSGR8(}*Y$%~5hXBO!c`!fN7dzssM>axOtd=we+dH#b_Q+CO02u5VSQfHV6^)50*U z)gjaqF|`DLipvFa3Q|t?HS7m}7drL5%SIx`uLK3q+|Q@XI7^cep(Y{8YL0f$w9H20 z+!4;}omD$0jQpSV_g^+Hp9E9a?3I6UrXCzIS4H=yg??y(16@cXht3-velsRHV{wu1 zUqE)TkKzNj6S~e+5e!MRdQA0S@5alE`O~7Ac~zNqy3LMP_6efO3Bg<-@=vuF0jkYu zYg7fM2H?vk6gqc!8EfUdKM>6V_HSbAO-EKYARFuzMkkSYxi|2&v#SLRe;Q2Y(|b&5 z5u}>iBL{X%xG)PFSG-su=pi$m*K!a3o}y|Hx9=U5&H3{0IYgfhvo}v+y(0ry2xb+b zedlsDIz_;3eVE5aEFSrn;L|Vk=YU(`F!Xp{tj2KIeIr~O2iApJ2}V16p5XFjQ2ohu zS51L?`+;vLR>bf_<0^1AQ8wT*?iE%+`;K^U7nj&+X4@;os2Vt$&gZ`2c`Y3Er}$&1 zDB0{n(-TIJsg1y~4lgM{9n)rvT_%{r7BYC+ib-mN8u)IRgPFwS6}>s!%%dD2=%LFmSds!S|I>GmxfrWVybGLq5VC)fB| zmtz$l1jDysP)v!{Xuh(`DDlg{N&Qfaao1T5YpP!79|yIBN-2&7c}X{$z>J^N`*+KI z*q#~He=YNBQE)*1Durt=_l)MtZGoRPi4o^bt^5t#lEvrA4XWs*!6|I-4C1+B;~w5F zCC7}@MGq}#+R>&ez`Rj7s6Y8W*${1!70*ZBl)$<4Xz4X2?O+;FsDgHQT`v5u6Vk;;b z)$dDW*A=>kttdW4f)ZU7Qy`V_bT0M(`5_WqmLT@OX-O%(Q(66YmkXruAL3JEaU;#-S^v3Q ze#!BG6esJu;_o+>A$Ptm;8U5 jK=%J%@&D|oF$@`C5T~K`diW9pz#i%19Q%<9@*dsofws_Oc6Pj#eb*gB zlGSwq08nxN{lWk;vWNfx6lEJpNfi}qM^{G|Yey$4IY~(>r|*uIHs8Ji03OTP>Q)-+ zM+72}^;?NA5dq0x9M$lVsMI8)1Mm_VSg4V)x4n7wn82u>nBa|T!Z2n#?m~dln3?Uo?M+rV zy&G=J)o=RkBS$?+fDl4}{aXS3Ih?f-YMvV;+OiH)tPzlRw5)yO^zYb6H~(?fYicYuv5<`t8wA_yuye*||*@$ZZ%X1NX4mJ9ev3L^k;ka){aLe!R>} zGb;3je3qtP&a7331#d?c$2ks^5p%;`L=!3T5Az@T8K}kf#>Zz^(G4EJZ(C6q??kpz zLvz^sFN|0^uHD-Z0N}dav1g762{ynwcx%!fdI5Zu$)g7ZSjzq53;-B`=-4$z>Vbnu z001a2kma{H>1_|u$8H3&9{ANB)E5)p5DB{eUI{D-6pH||?j+ z5+YrII%VO?l@U*nmpS#lfkY&RH~(O&!WwfqUQ}|Bv-^+;@l*ddPWFL5iCX@T$Vuj- zwKSDz6$2!{wJKrTBk#;7Yu({+0;Rf_F4*sQtFiU%;=HKVd^35tvece7=G|zgcTEUCJ`c$6|p-}O`1Y6@oY5lpav%& z*GbwzI%c|~rVdLJiw}O{2ug~43PTDh3x`Hod2#uAIjZK3=BP$|nUT70wY26Z^_?>0 zxt|r9<=HAH>ZIycWkRLl`GBb;^~Nu1 z9q)p9o0+uuvqCG^R|C89pQ%4}Dr75ED`ZZ;v_`>T4w^B?O8hf_K&I<#t7+`RyS0E{Bryw46?(fE)$Kl66n;!4sJ;$E(Jx{Zq-E z44Mu?JsKUt3fcsb@E;y$M`3b~!IdjjNy9!d$s*Gf)6}hy#MWuy!g=XfY0Ma#0fQa7 z9s2?MfkFlZ25N>cipPrQ8ET5H#mvP*3PK8l<749m;|u9LnIc?^+y|KlnTwel%_e#t zdLNrgn_9lg)$QsP>z+4tIE3m6=oaZ{>KWEcS7lexFSJ*+mtdE)DkUjZn&m#^iok^_8rB6FexTDPdHreW#vocnMR;@0WGomqSc12u1Hjzvu3V?g;a(bFb?fkMVUk4>gY}_c`Vm zhi*vv(?TtvUeIYkNdP^J6>Manc%c4==Latz>aIAT;L6wgy1!@QF?p@x_~P+FRY7|_ zRn*o)rwLWmkb|^|#0eXWP!+$!g(*bSebeYZKQzYB@KEhAV4PEg4#_lEDv$g0s-(*X z=n3=_w4Q0jr7TdxCeOnnTF!1Oyv*13xeYkLZmByquam7K_w5Ur06R-Hufw;_jhC~V z@a^nv)E#faG>#!dC(rze-rLX;f--iTkAgqN6e5)PlP|@wSV{?E=&y0z>Elp5d&zsP zXgH>Mrz4gm4Ol3Yu4P#iz5Y2(?BMaF`}3*j<6dhBV_8Cn0=mLlreF?1#t$lcZV^E+ zSMWcH3CR>xNRmOn--zlPSm{c(tH=AcMH9JZ@ZsD#&LLuryIKGe`-T4X`2 zv-+xS*)<+HBJi^!hjsjHtbSxAfiLSK7kY-%i?j7lQ&HF#Z8mb9eQ>3%K%KC&=L*UW zK0Irf7DAn!{k(F;nRaTmADF>Q(Js)aXC$bn5ytKWRTE_|)c0g{@yt+JheLOx z(ex=Sn^Y7(GO8MHg)kN0e~D?;V~;f4ailAKHMyazqQBK*(sIV~Xn&n8M<3&7dFp;D zh6DQF-6>RGjOz^PO!bUseKY+w#l|5YT7VV50 zL1X)4*JI(gq*>*`_N?}d>Q)20)^jg#qqimGh%|?9V(k{}c|`zSn9mUqSp(mAIYRzG z?luV4{Jt~3PK>tyb!R-U>QL@5z7;zY|0}r`J`dD?TV1+X^|$SI&%2pkm4P6H22Z{v z-o;}|!pEn_kA|U#o#gO~3J7cizrP;6lt@lmOfuvUz7@QURud9%_&v;@EKW?PP3Nax zrzUmT`xLz%cb^c~tPJ!HP;?G^eBv^?)p|bbabI;OzbM?mRNnQW@@IltKi1x=k)|jQxOeI_#r!=33>f0g{ssf{)o9l9uQocT_)UUVu!a#mz-Dx6&>-vKUoVa2<;(egQa`&@}8QT9C_gZ@X; zua1<_O!a?dpc4b+{*U`XG*`)z2x9-cn16)|?osb)_s|0igT8s=)aFD*n4Q z{{KMzPk;M=;!#uf5I8O1)vymrWC@$-k0;2!qO7pJ^ZqBt$;^EAvSL6RJ8bLI*c>l)Al61to()Z{YdIkRX!0E^NH^j_H6Y-ed zpS=1Us|GBzK?rYKxut0bjP(dr_r9sD48C=6=hU*F2#xb7XfsCQD;5%M%^bAaH zbE6P#3$}+XdT80l5b2i@ORP}+1NYS&=@EmNAOty^STop2;cCH3${EJF??}aY)ovwN z{&|IhP)ax_I>H2LyLQ4$Gt1_MO|V%MC(`~OKj+G;L;P?f7Cb5PRk(i6Pbaz7L`lCvSCI!N(X+hei=t4X@ zkla6*@^`-f`*MNqf1>8(j@Q?JWr<70WwbrqSC6Bz zq5x&W=G=booU>tCfC?658uID(fV`T=K)=7tXrZwXw;i<%eE$7bO`I;qpY3eZ{G3X? z_`-{C!G^zSuGgu#6JD+xT(E4a5yh-Ub{3oB|DwGABjdqPGvAAHAVDMKA57C=_N;zs z3^6Cc5X}bShsF?t3{s`7Ugg!mG?V3USZ(iB2G`|5k~)lO=0Ad7WuH=M(%v@qTdO_Ep8vBmKFv2V1jBC!M`6GDJ1>J^@Hdh&!n&4 zq0Zb7HBfioTDojLWX>071y!aLw>yRg2gae}Y(`0QClT0+k&2(p%z#by>z?``U>Q%I zP+XKR26?+8>lzgp(AJ!s7)6y_puwl2GCB^d9e?WT4w1jZfdOW2&uq~Ur9=wlw(L*p zBt~hXugRj5>c>V^Ir z9%vC-rXk3efV?k4Gl8q!5&c$Pv8|Gf3|1ceI85EkOk@7ToDp}d1pDseL{9Eo`Vb%i z!)HVz8JSf>KekqcQrzs>#8zQ7{Rs{mGab&>Owbq@ zs9K`trBY^ivl&v2?{NCuv9)Qk`wcQ~nSz^rnBsN_IscK^YAJlkicxYD!Jo{KofHi~qx4osN_Ni+|+&0MxC%O)LU<^te zih*d!&BHW)_y-Ls@=PjG-Z2VejL(%xsZm~aZ+6iqWb$o3SN)hJ{|Z!A5dkOpp~q|U zyo!6IjHt0vrQ^EL|M|k4U^qxAyq)?3m|4n7{I;JxC3oZP?EPb}32^KZ$?XmMNL461 zs6mtQ^%jeTRN258z9Q8a9)-Q=D{_Fjd8;<9a!=ps;HtAdvBjc4alkODamWt8h?Jlg zbrUfk-KR~y5PfAq5yxJHJxX+4tt#=qJMu>;j?Wb0!aaUr+%k z1@uAGIB{zn>u*&1y~h6QJ(mG6EaRTVQTiiL>00P+_zlB1fFWLwdek=lAx$Y=vCnZe zaPO1*s{nf<`M@R_mSe3j;=;JlvJsCDCAQyC@tws zpn(T*F-{;02Ww{rAa?n3I`&HU8wZtZNpY%139$r~U#3@dj+JbhQE-#OYvWFkNxH$%~RZ%2o z)DX|C4mQ4jB3$)ynOcs*42MU%WjLl1M~&hI=kAl?ZrxyRgh$`>A!2Mht5K;H&KS_K zplDtTeA{%p_m!h=#f}h5#KCjeR;^yP&cX!mcu}1JX)N}kIru4G5ra#@Ur8HugQ8ppn;j5BTyh|5*!#HRUuTwF!fMr_e~~b9uCnaO zfv{A{fv{7~QLwkJt{QwfE!*;1H7&y2q(yMeJaKZ!sp)_aRUnzg)u-qJ9K6Bbq>lZ8 z*S#0!H1H*kFQp3v{tf_AaRf15gn8t7R@roTT95#=rgK;-w*~f>9b!&A*lu|Ow=J&$ z5=>Un=>B2mDpa4c7ks_#g2@Y8Zi1#1gnR_QLc|TI>$$0i=NR)k6f->U-Yoq3~PO_iU$pQk$a4c?v=* z&yyW}BOg!__WW1E6L5y8998h!F+y(JHG-)7d~8I+hyx}~1x1PVi5o6^NFIt>(YAt~ z)9(^Brd78caGH>n|3-ZQB)0L*3Y%dJ@wd3J4<~a7UlTO=OF}C#`ApDvLZ6cpgNG_d z-i!kq^$W)QlXl5SIt+ttu>Ny4#xF##khn?U17Ne`q5DWxN~(t|kJpeTB`=l=mWp%^ zTF79dgN}z!=5aW4BH%iVo>;2Qk}ZiJh$DW3@dqU@5u`aUX0CnVR2hQN;I$^w0>b)L z+K}T<4V|{3zRUfOkl-)kU<|eBvQ7TnuKhxT=h}*N5Nwz97RR{ETxT2E8*w61g&5<+ zS@UWPmGFt@MzCGskOVdhgW(7iArU44E#TW2z*Z53mW}m^qSENfNUNsp1EJ(s3FkhZ z50vn~)e0;+i8;YUYJ!3gr#QL%mcSn^8mGk^!GyP={%m9;^u1-<8CUV>G_X{eTOT+< zzGDb}CyZTxR)C&}dJnz!n6qE@WF|$hzW%hW z(*5}lOhPR6`-o@&GzZY`k(^L-J9lhFJtt*I*+4RX4(T$8+60!l{qgO%Yo^KOXqa>c z3LY?6C(hzmV~DaEq245nPU62}{-{MV#=pOi6C_n@kggWtSHPMl^WD9>3LObuP`+pn zX9JRD?PRo#UET>c)<>L^V2mV!U9m$8;A9pe%H;`i7(=h*1O+sPsnC7q2L zoidJ^gYrd$W4fL(?4QViL3($C3eiAlrtwa}%DI@mwHhhjq@abD_2^StxHOZhexu1y zV_~(=+Z1h!;^P+VWCT};ECMmh=*`_PW2=pg1BTz?C+?+s<=ZX9n8scr@f|k|3d^Dn zRU>@`n0Zl~mMR%pi+Rd10VbRQrHxZ<{I99!gGJnrZ=X1eY9ppTY?i^;!x01imcBH@ zIXZ_yJDtYoecozBgJgSt&7U`pV1E9FuzDzsTumz{%NaTL%_gPSu-O;gc}rl@_sxUN zad>OQJJE96*cvzy5c zW-Yf7gsbq+*Re?Qo?8&p^C}ay8Nf2t`-Gs1D8}SEA9TO<()C0@XzZ=c>iHR~D6Mf{ zdkatu>Z=qWWeK9Qlr2BDA^Kk-1@a`0U6_Ed2+xP>)wLl{h1;{-Pu&$8Z})=^F~T)T5>o#4j8G%5Ddhgd(W5(n(CaZ(ZWTu2dD)ymU~UVUh-mj_5A8_XOl8 zLnn$)KO-QoV(1p!!8>T5s7v`J{h1swKYB7MfYjJymn%y9tsWN9d2wGSsW#qndw47B zx&DI%EvGX>^<42FW!tHAr^}Icx|cGexZ55LzqB?236;3U`_x7c!WQ&pjzy6D990-V z(dX!aMR@S*!k^*1_t#zT@S4B*5MW69&L2y2j8$s$X3-~k5;`w)XkV(rX5Jx0l0DeT zCMjVu8~AIQrqtFPq|!l-FwY8E{qf1RS9kK&pKFZ6K?0z+cOyfRa}Dr>D?BhqD}|U}8tR6SaTo zMjc9|qM(hfj4l7ISwjFA;BdJM7$O z{c|scDHiS`8x`n=SU_I$MrtKh7vnVm#965Xu&lE@iuz6>KJI4w^IF6h-%Ya?HJ|tN7K9mN73i6Xw@O7FsVxp8f5dx-v^84gxGDk z?XdGyqVt+To21d3GIt4{0k-{CZ2WQh6(8U#K?ChbclTco4X*0_ejcm;)4@>ts;JLw{_DaYmvP z{|ilWUms*t&zO#@BnmOtNs&clqGm|)wn&D9RguqSZ6bGZ);?%H?L*T8kQV)33R{?f z*SP-8vFYSfKZJgW!4Fj_Mouhx)l3A(QFA-cXAtSBo9lYOh+ zT6T-9>9af;>zwGKZ^=N%~NM?NDRdgcA5?G&W zXMxG5homCvztWc%N|+0-;j$a%w6GX&kpfDombMjN$eOX$eb`MqXIuSJA^$yQnT5w^ zY{@NDdG(H3)D4o0hz}B?jIoX&U5tD+CaId7x-`fbs(F3A21*Ra+}i*c)%T%Mdtt|SGx(?kyG`e}7PBu7mey92yrJtdp*?>7Pzk9SkA zh}Z07XGL)fhsr8NB_1}fZwNmrB$*7n=VN{LM^3PgoX(hOs!)VUvf}SyUHsekeH)UZ zP_XXu@Z6F%{Zfez;z%zfR3^N7>Q|PW$4!+qi}5g7^7%{Xa<^2CFu!6Z6e9BL75!0Z z%oodsf>8ftqdLAa5UyS;Ue0{8fM+|Aecr0YT(JKt;CjriB2q0kNJ!xaz<)@5MKt@? zaYu=a!cKXHnw#mpEh~#sX)fTwdM=U3Ze0N)xoc6MPxp}F7@$oxn#^}!2Nc06nw~gf z%~vLlQL~_;9~$a!&H0#n*>?%OsU1pdu@sP37`Gu}mpu1a&3NW(OZxIMj;S7T@`3Cv zwHX(rv;xRhK2*~%HQpIVMRm}Sd}pTG_c`D3pJ=3fo@H9H8y_bXT0OMGUGTYp4V1YV zjD;r`J>Q*XnqB$3v+6ghjeW#_lXbvH`H?oe^vjrXsRr|SoDy_$+G+DhDR9qyRaDUE z+U;S~V)>RiKe<>T#o9L%&ne%?6Mn;UQj;id2xU`&t_jW1yE}VxG!UP;>f`sI$Z7w_ zQ9Lo@%U5yyKuKhoz@`|}Ij$pGRDs+bY~yAN!0zF*WLX-sJZ9SrS$*SOO(Ytm+3$&+ z{b|=ef>ci)PF{W^ON-Q7)EVi18de6s^7>H-L$&C#&?*PTdIuikt8xRCXpvW-+ALrM zFoZC@wT8=|#1+BD?gAtDuuD$4RqyWmIa$1>l*ugWc!0TFgRG2RM=ion5JL8ZaPBlw zwh{a+#(~!$9=FY+k|X9rkKb*MAXe;&8yCc)bdWT(ZI4Wjb&D zX4e0s1*gOaTWw_N5QUfXzmEAh_v|3XR^GNIyj)=S_wubmuhgh8K)!Fs=|uY?GDn5O zhnL;gX{6ajj2Vwc^$)k?TiScd;@ZtEm97%yZvwbi-Zg0OvA3KNus-;6cFxd>Ci&NWfM zHu2ii6!x3PcXi-5L>26wqbzwqY3h*{`IAy69CrwJxU+eeGg#dg1ZH9dzN)M0E$r{E zPs_UJ))RVbi}e~e2PLP^gCu>e=A$*wmWhD^tmKEB*`}Tnh;?g z4!dv79Ic|`HL01)d5aLb?{fGj7Tjjt}}@S9)oSoDLbdNkY~?MvX4oYB zuRi<6JIGS^mAN`dJBVfu?pNK6a?8Ch9}UgRp)#1N-?(HGH)LckCX)N4CP7wM_e!Re ztpy7_LdHg-Nz8w+agWa4v1ge8CX$>{&w{C53nQIJpjN>wuliyMul2qMRkN*OfRuGXo=JFxLhiOJ9zI%7sn1&&9)ccr~L#b+ngS)KA8HtsOp0$Wk)wsEu=z@>s70|!+PAMtO6$YAGO+!p*NyTatM+Oy3 zKaj)EGAkRn5lX$(a7`*_`zu zvT%(uK8LrcdoGck%q;D)%v*G*7oQDe#Ge&s=V>2 z8j{m>SD6a$?gLt9PQpna<^MU!SBw2vU&`7PDC7xhSM8|Iy}_%LRR`jo=e1i2dZ9?8qhhQ?40iYNFCt z9Yizlmdl^|-6{VfHxfmy@FzT`swdjSrP5Q45tgtMYZp49=~+oIAmweK29&-F@uke3^77N@{{m-*BlD-~c|w-uccH3^ z93eL&yvCprJfY7v!TQ^gP>_R+V1E%jFk)ZJNTnHFD6hd;2&2JeOKa9Tt=ehrEZpgn z-|i}G544)zI-nmb{WD9ePn?X`*+wd!jtpOb9dx%_;Ba^x9A3&mFk^*Oic3VjII?biDLl*EEshed|TE} z%GT7S;mn3bGVm=YhVMx*q_X+iRm%BO2b^YPJu>|vj#XSE3a|)n!_6%r2zXtzG^*r_ zogyFJwBNe^6uA3InB<=iCp!CGP2dK2qR&s;KKoIm52xM^QNFqbk)Ax!omLFu`gO>4 z2OqMT&Vx!fdC0zF>*P8eC_=XPvu=W{5YOc74VEMdnH9;<4+=RybA~>*|@pJ=SZL=-(jLmd* z=AQ~dIPJZwlZ&1rrx^&4b$`Ezi_-({_y(H-KmOcX*s)jj%owYlVK%N}lilaaoN}+8 zvMVDpAey%cbC9{#@^^wv3i=%&VPSMwinb+4CO+%;kJg=qOlGD@uXBjBR2$#2O|)%d zGPH1~n|N}4;p!8hj+6|brw>K%j$y2Bi#qbIwnbD-_Lcf!)A$#R zVi4z*r{OA+WTNEafpc;F*{TI(`3o)TXMk+Db$kQPV=S)?Ix&P`EC;agG|GG&RN=H( zxDjBR<#z1eyi*K%=m;oAeE3(C^C1u?5H4{Od@sb&ciuvm1y)3m)Unf$^gNw3?fCW$ z2JNJjDoy(LwA3I%1k+NVag@u}93|+GGm^740iSA60zoWpFThslw~{k{lu)k6q?^wh zn2)+RO^J5VN0z9z_;&=_d2lSN$@CRw*5MUlt(XCeZKzO}7p6#xOV>rZ4h$Vm-se5& zzi?_=HN46&t6Fu#$YW*P!1ej8FkK#Xf;!BrXFO4&uy0L=vO5nq))JMah@Mv}L4Qs> zl!HtV?)GJ>4Ds-D-93EzxQH|89meWBDPKm&@PwP6leL{9P_*xkwjg{8Z~P^elILG> z-a|lBhs+`6+G0tJn-P=XpD6J<^V*`pu;D+Dc1h^6;elCRB1o|YAtIGi@hk5#$m&H= z;fe&6P8!}&cV0%uH^I>kj;Y#!b$IUmQv_hmg73qz<|)hNuT-AK(NwWi&)d#UT8OQ( zpTTK5C!}>VUJZMngqKfjHsC~HsRn;^m!nE6AB^l=vQtel^MUX#MK`>8-+|4CXd_n-r)_hJ?GRqbL^=< zd?g_^w9J!gxx{V$er0vuD^h1raNJi2H)DUk;90~!C@Knv(NbNBKiw|Et5L1Gnf>j5 z<>0mP~;87gahLd zpJgui*=q*?@p%*-3#~W4t^7fui%L`s|6WZIE0Bj~hwtk&UA3{Baxjup}o4yAgr`eVOI-zZ-5X(B+6qCD0F7BWBB`*`#508(jx$i za10*X>veL;NBLB`yvGi!5_F#LYa(T`g0orAUaUW%+^%zgm}_PmCf7$ zu`Hay5lLa7+->ivJnFfe%J#bVU^C$0)FpSrOGDuZvR3r(p*G4%pEy&X?|#E zuwXqYxexBWL!=nCzqA0;+sdVoa$lDSo@yv&C%@j78%x0mJV2HE^s{bpaae$nZ@c3xIbR%U!TN%p1h9@iG z`VViFDR~)J638JgJ$Z0}g9E59WVvoCS2&9#{oY}`lc}mp7JVe2MFnNssmH!~=WFO< zmM6Pj0i%RocO?37uJ?%$?fdk^@Q%8_PDvz6aHMRnXCx4Y1j*itov8fcCw1$w&c92n ziooaxHr};d9U|+afV=ZYJ7YMvlKroHO@4j)^2%Gw_2~HOu)0-G2}P|2?;j&MHH&&< z6U7{3B?fuqd&LH6CZW$>VlI{vEXE%%lKc#8UH~kcVk{cD@Z@zo3__L01SmJ+WNb^@ zKVXkz?yPf)6~$L_Mly^io)L}bwhzDxpM`{L$LiZneJi!wfp4NM&pZy1MCEU;{OvEr ztjTnIYZ+_HGk`Lf6?~gmIE!I?RT!J7^V#W!f@}?jzAE+1pg2LN-c5e!Z%5o735MB4 zp_%y;k+27%EV4WfA*iP+eiH%2oBm^bzy>i@o8O5*K?%l|NT-;syyu$&<^HBi_~ljt@$hm+bXdd4sD$}JFN%&G=U+r~$nunbqqUsQ zR=yu&RYiDy_Fz@-U_qQ%9?eM-0-;&p{Jrd3QslZFY9u~l2zoT!-_Mf$X5sHdh4ay% z^6V_;l?N1(BWj^!Nvth-vy4dT?9f?nMKh8-^2<%`1hLgVLw?a(q=X0;MV+tnc`OdL zq|&~aRQF88cZz++nniDQt-srjt~3GrvVQ>L*MZu~ZHG+lR*B(?E~B0pXDf;Id$^2M zd2Z0Nw5x`VA&{hMT2d+Vkuqi+Jc!rV>0biHch9~74HzpPQeqhxz*d%A8oze9Yh;`Qj_`v2ymYHn{Y z9J&T;$&$VNwd$68p58ut(M9%ZUI+&nNW4-$HRMNVcDQiLq4L){KR466ffzeWy|~?- z4w+&t!}BB@=RMeC%V4*}DYhn_Om27@0^s9fKfl-D{Q3v!5AkzYmM(@#kKnzwdZ{*!wzUh^!{R&MFz2UX0{8T||T%4;HWm5IVvTNqw#^EFXIo84RiHkCQ?W z`>_+Y3CsAaUmV1*UqPBgqk%Zz+gCAg_R4}pNbPIo3f@vUtb`bS8I5}{eL4CjPg%q; zm&gmpX_N+Y$B0=dzattucnl_&5F1)Wv{p&lsZ8}^_xpo6r-totv!NgMPcX_dy;E!Sa!i)?8^(tvMRn61!=r7T0?>Wu$`4%;rtZaPQ1s`zkOyCKwU<%Y=}fvquL` zRmG}=PSIrPep)=%8F7wBe~z-Yxy_p0UxoKPHGRo>c20%R!Y67P2zJQB!RqH>;;+(` zHXJ%@(G2gNKTjrE1!jL|NnGOk!^{SQ{q2q9<{nAHQZzdNNb4*Ck^fahz!L?7TjXLI zHD$wZqsg#38oa8Gxy61FM_~!Z$K}!Gf|Sn)H=kECuxj~~S3B5Bu});)ZTTC_dlr** zABktLCr2WIlNT=k(!l)s`W!na9@%gCx7}_b0MjmCb60V!41NstSVT4)Z|iC>XESiH z_Tgd6<>kwMnZ*TgcdTXMby>~4Fsp?Zu0yt)(e z-vSME?6>E-o3d40w15|LWkS`zw4iF3?_8nGa8t}5?DIl|Z~ijy+M^G>;SV!q%Le?5cV?lE%bbY4Tfa=V{jrz8)YZ39!(EfFTL;IL_f;Cm9WCDaU&=o!_oKe!5~JV^BJ3~uWvQae4X0q@5$a!;^s+~am> zudZJYiNtrpaNVC@(2RCwb8Jt5+L^*ACm0orIBNe)4GG4?^kE$KWFcbo*h4C5CcaiT zJ|{vie1YCHsjn}Txz1%oscSzV$3Scj;T;Xfo;VDMO%{xvrEY&@zg7;c;^`PV0}9yO ze8=VMGH{~r%^uX=torqybr2|wp~0m-b|m{V?H+WJq)x@hbkzSE|tnRP4*hW7lp+6*^ zCJ}S*GE?uDzCsizpBTLx&2w`?(zp{#<5)xsH_5MMXEu_SyzYz-xj=$*#dyi5?ZA5urQNo!mrwrBm~(dXj4H|50hR$lYq(v!iaA0l_F3!b85D%u|++E0w-HjY%E(tH0AuRnKT+lSI zOV0hG!KX->^ZjsrkaK!Nrg&||*n7Mt`_S6a|BR4BIWjO`%yPCCzY6Le6{z_%njZLZ|+{8{fJ~ zK4&y^YuV=PFCjBH8jeMuDLi;y5)rp@p0QqDOWz&n33mbds%->C(by(|tcC-xsS3g( z)#YO?XTM74^K^V{hT{4aKMFqCRXK3ceTYKBkGDOI7|2Hn-{o?EIMULjMz(=ZbNsz~ zpC(7oADe-!#|$*7Yv&vL3Bm;SZo&g<^9$Y(%A)N%{!NjECokdjTJ3R7#VWr$ zgIMrQ-R_(zJY3}w{X-PA-)8sx9|v&BAwa{oR7X%TEBVVbY`l`Lp>I}H0Lua#)L zEUfRF_X?h;(<74Zz&M>p-`Zuvhh=4Gyz>39!G8#|MqJh|=+s*L%~D|sje0pT3v1dr za!K0k$kxrH!@!Lq*$NX5GD%XIV6iEJTlK2@(BuA^O4)^0IOWrxxBvNY+>Kby)?m1zp$t{l{WmB_cv-kK`wQ~&^lJYcY-PpYT^3&L>Zqff_ z-0_jVA>+MsMZWeKGqRBWpX5+^P^irAn9)6U=nf`-mdLsbo*77vhv@P?W|yd4nkv zz2r3OwO8*havR=mqT1hHCpCF+%Tia3E)D{pkdlciN(uyZ72fPzz8t(op42_+L3vgS zAM_TG+4<%3S+8Er)pvSiN=mEV66@={3Q{O<9^x{L=aHAAIJUWX}>n*y*|AvQ@ z9NP8p#Am!CT)XWw&1V~W&ajWrAuJx0ylffGBJkZG4dW~pK{ zT~31oLEGM&xctn7S9y?6_ajl0`6?tCT;NzuIW z`fCpX1xPt3BWI5$P8NgA#vZ`qKC$vf34_h7t{ust)qN*rI8DPOLo2fa@g-!@a{ zh42%bMNBZSvY!r@Hk$_H1)D);o~Zd?`IFI-IN>KwugSHR!{^W-=rO5r?X>BO_QnHB z{$|0&qW8Hpg)hIndk~^EZ#>A1xNU+=y+46{NAN&6nVB4(>!9a}+@S{Y>FT@gWJqq? z%`hSm;bkrx`gY*OpwMCP!yBB7c;b%bB8W2Nx(WgR?P;3mz>SO*kFP{+G)j)Edjd`N z#S4Eha}=L{>)Z3cA|)k%1RA^%b_JGG-~SA!^bDD2^vYU*s@*XODz`1T*I3xsO61n; zL?^KMUF<-~4?&M%is?v%_~FnOJNLI9>DxGv{pI?(Y~7Ccq`%9Xb>=XQ8qUEBb4&w=ez5`ncWB=-skHg z`Dgnh1X^?fA&-?G1~a~ijUyLt8e3a$}qleJ4lQ2 z1!GK`d-pB(8Ty@P;SPsQ;>`ivPP1%m2Jg4)=I)sBc0*g!{!CaIVC_F#<-W*UO-@af z%a2WmJ`kyHF-B@{Sh$td;#BGnsPYTkelg~QI(9YaP98$r9{r!`|4bhfk{wf;%)t2* zJzIxai1z&w`&;VAe_D^~D%9t_c-Xfaw{b&Ny!M+by%K+kN@d20!v4Zq)RXVtAjsST-~Z+uL$y4# zL;&swQ(2aJiZ{q~2y`!uF_ULS(zhVTw-~ortH8*~9Khr9LsQ?b`FOn%4xlr}Z((x$ z;Nlq`TS1X+&zxJONX0e(y&;xL??3X%L+xd+hjz*x2ZObjg*D&{tF<{0idHw6Le+P| zHlhD#Hk#fvg9}4c#FBr<V`{A6Mj}f5K4|PFPG7@t@ z|2|e;-!cEUFztxIDVe+G)IYx}S8s4fzt22w@p3g#9d8a)kQa!Yr~EIHt~##i?|Vy$ zw19MXw{(}FAf3|PIl4hT^RwV*heQTg@*wRHu;o9BtpGd;^|Be7I6&;Q6=@fZh3gR zDuRuiJQ)|8W2r~WNNkwU-As z1qe)Cj*mDNWl$&4D-P^Qk&5|@tLi|3B(k{KmAswSqnw+2%zMio%n759%x?O`AVziD zmH?!1KdFz*B;uQ;-s&0`WXkLr#84Fz_=|e=D_rt7NYuyuAH9zZ%z2vHgFBMSuS62d z?Bt8ITXLx(WiCN75e}zESe`@sHxs$75pY6bi;hj-whU!JsCc?C=~xBT9^05+)Yx9P zqh=t3=H3V}puJaZd{NrqTNuqExAuYFd$g(mvdCVVhhhG4LZNl3<97^ywLMPn^2W6o zT3>X&aWInG`V%Rp{NR;@IJBc>W#Gz{E*y_rdu#Cxv8AePFBM3u8t*z_!#25U^bGDE zDAg|e>`O+A9j(+Jyy0ac_RPuESX?}!5zPttbt@*_uGbMC@y!E1C@#vfShB#9$> zv>5TVN$sz(bcEV&3P`&~IoeI*KPTa57d;cE6k}%Nkr21j{$&!|$u$x;yVXiXH;m z$(hL_dJ5`=(oCfgw(RHbki?NO@}JXS+S8fg`@z)LGE+Qg#5g3KCG;Qgqlf@fz1kj= zk+#7+d*?*{iEKKqZclkX_D?dQ^uDPPV9bC&MMMw|8A+FsYU>j?7pjccfBzsT zDbo|)2O{C{PUT2-4{Y=~PwhswV^dM1PR?K5hP5aD&K5M~(QX+jho72Jn5Lz;N?z$o z)*)OivCX_t!*DFjC_NBhM<*bY=hesB@@<8;w%8cPlnn|VXz8xtk z@yZtll%YHLGB;ODa1~n@_BpZV^umW3%W`!BLEZnzU)*4VQG89!$W+MIlvsWLAgBC2 zEomab)VKJezVv6J?p*+~H)h1%mL)b;S6$yX@=aoTf7`#Mu=no!xh)L(2&ZQ_Nt4ar z+W}~wqIQ_UiyK_{vnmAcs>~vFly)FOO@vXp3W? z>-J0n!8(g|1R4k4wp7hQtQg_HcEwid6GsA$pRQ`H`EguV$eQpDZfv@Z8a{KBqV4lZ z6iL5kUH_GFGghxYVbVAsa8|G`dtDyZ?}Fx)RJnKBZy<%mx*r+O^1oS-_WoQhsrkmW zh7D3Z+;)}#Xk(d{%~;O7X`-)!1Yj~QQZ0OiiUSQY@ZcZZ{<*7>-)Df+TRBj{0@{bZ ziav8f|Dt@3?pvb3dnB+rG|75e@b+7bSxzM^NMx0jV0{GKjdA_r3DLewD=|-bY^I@{ zqh42)oX-m?m#~!fFL=M?LaMfPb8xijsv%Ybc&i5JGtB{W1!P$>7*c_vZ@|K=)&IV} zci)uLB|H%lDKGr6T%Pm%EBT_tB&}^K8;^VdPWKtb={kEF-v)bc~K zD4Vfe<$fm@4XW4=rz5PW7!Mi6TgE z?47Q*dm;jw`!XvKVD|XZdwJ&P@FVTm)vtpBtP=@Nl0=RQpE_fApkW_UA{7|!)9^MW zcbPYQD?GzT0UV;eD%PlGBbH-yFLi6Hj$1N9(n=Wj+KqT+kviGBKSLCtamwx<`ixb4 zVo%!r5BA<>`U@B~MUSz$1|^F`w>@rV^!y;^$g#RE6S(|l&r*#|u-MDi?m=1g`$%aA zO&u=Xr07&`ABw4-d44)kaCrbgb0kyzLu_UFyf^8G#%IxTIIv4(JbNql^~LL!KvvGm zRZH%U!D8@R7;Fcr?c_c2`_mE=3+D?yg8tuiuuZHidKA&jPr-gL-dJFb)w^7 zb~l9rOSlwiZjIvcJK-)`jq{zyS8#SQZX{$bP?K{ncw5fTl3&3?_Sw`I4*j^d#5AEa zYX>u!lS-oQD8HqAJf^@dikYpUQh0z7qpaPZE^lV3sWMGVFx~=}h`(^VfCH*g8?<## zd_J%J*QozSUYn*Masc;xA&?x0JZ85K?)NqzVX%a}(|aT+^^H-~DG7#;JAcJ{CR#}_ zWv6yWDu#(Ykc(ottXLrWI;@`yneP)%4p~@^w1&K-{$BqyqbC^^EeU}S9{>Xy^0*63 zzA2$7{zYiZRa{?XM)5L}larfX=bxuYKA>{ZR-(fRa-7GmAB&8Fqj~9|D}7lr_zI3Y zz{C>KqpC>`NIy8py(~6Kosevi=-4T9_ejGWHZ&7nT$j0=W6kz`!K?S1{_VI6B76Tn za&gw14q8AeO^SkN6qN90t-_qPQLraI`r0bfM zJ?0ZWLQk@6LQs$;fEG{ts}QNS7j{%5oZd0+b~!AJ2h5~a6fa7~xuj;xMTqwNSh>)! zxcj502Nt84u?O?E$-FFUyCN~rgEhKC(|Y+lE}LT?cQvEQE-9IjQu=n2GVI{2CGpunH{dp6!)3p=STLrT{cLs)!b zzQpNn2M)RV)6t9t$XGlL*l`+Oe>@N7NNuZPO^xlEUzqJv!#*vbZ~gbsUdAb( zU_O>i?iVOTpBjCmJRSf2t^cJ?)xO4iT~(O6i2;``Oe4KO;L z7;f?Of+DXZmZN+3Cbh^6sW$-tRU#Y$m7Rx~?F6a2|EsL5I{P_2w_wHb-CI!A_bV4`( zFBRC&mX4LDQ9Th!Pd=U;!FZ`qxq7B{Q~WpB1o=89?O>+Ni(jhBx5K1p2M6CkfljEH z)bsDfD;&Z*oy*6jkAnSyCd^pmw%xfYUF^q=!sGf|K}@7-#^+b$v>h?t-$UEd(OOQk zfS^aY## zq3eAxy>R3n6c! z+hU#OrR-?ho3y6Vak7&cfi9uY-QXsR*8Ju;u&Y>cu$qco%U+CA>iS&l@5QVEEWR*^ z`#E3c(d#qtVeoXZ8W&7^vR#7~UY*IZE)V0Ye?wQJ zwFtQH{&)4B*QqhZ80SQvEx~C_HVA*3FAL3y{8?t+gIau%vqQl_NETCKVY~-Xls)_0 zoDIfYt1{c&gJ*OX;n){`fH*qv5W}N|pr&1xWAh<5shAD5yFDe33n1JyjoYIg zxYxO-Z++R_+f~vzZi2UeE0km7xw_~|t(ZtaLj!qVrLQn|8?jO8ZJUtE2K)KL4J?+w z@z?{DH)IAf&72n0Q6xoqnM>a83Ean9cg~4IJKUEc4ZX zw#uC=C9KH;M6tU2Hw2Usl8gTvWJXrh%4$LtU^|?|i^4X{eYuKm-KjJ+S6Y^dlHbyP zG@%4-+}9Bn99=`0#2x{apQC?Pz@AZI&?sN(5B|;r1xf9qA_3vs=r)b%l2~y5FmqtG zVOl?!cm-50((W-i9@lDI@N8wCL zmjuH0^4IKlanyp_3x!Y@!9-VY$em?R4((1r`%RKncN}79Cqg*WFnMnqd<9;8SfHtS z+KFh<%*X&LAG|?yGTt#i{TX`7hY~c~eAMT;Ww?ILQZHF3TqGww%H!Q3kSry~cl z$eNN*Jazn7i;wt~^{mf^2&{PG*o%<3r*@H3Lbw2zUI=AnWn$S%cool1%A)?-JGBRJnw_O!s zaG)nLn`4F^iEm-lrpp3uFGiuRNQ*Wnp=~j|1Oe^yxNbtpG4oVWn98ooO`&2@*$!Mm zUK(jhK{2F9Znprd*tR|EYjqD=#O%$P9z&_UEDuZr`G~F$PN)XWGVo8hFx_XSj6p!vdG%7>c z+LxIGF;P#<{blGje%~8%k1{v{KasS%u*->dA^oNEo7uYEndene*f(j+uk4R(5@KGf z<^I;y8o6UJK6%MNCiL(kvd zwl@P(6LdbvIJkQ6&dgn&iiv2VdePBdTd+*41SxLHZGEib-_x34g* z#L96T46nbb@@EEe9h9fF>JJA?K2HUI`K^j+QN~`~@A&A?{nFug0V>`4mQeTmi1P4n zyGH+F>ItCt=lHi!X5icnBc4#ID%Ap8+)pwZHw1XR2uo#tS^lCb?_oGD3~T7;`1+Uf zup@vo9pz$5M_r+v+}2*p35nV=;J`kl2z|;y>oFE<&3ffh9wa9$pVoFM!2BO^Qn`ka zY+$k(a^VsCT{Q`AO9HVK4zU$y;!y~gYG$ba438RiHyiKK# zvJ|5}5W2)YODsDgTFG8m)QPXO0G*Lf5G~*xYj$GrrK11KtO^M7s!D@|fxX>w+W`n2 zr={~Fop+#r1{~~=l!&+sBjJGPtJ4y&BhNE{5CNY>V4+omwwo`**PEN9Y0Kn@dSA&Rzh?kJMl6~f;ZnzJo2rmt=!uh*k` zVDUeue{pCS1pn+8iI7bN8_*P~tvy>z?L(mDs=F7FS_hpO ztbE9|lWQKSbe>S;lQ?bI+mtpYm%rUyj(M_5$4aV&e{M1@A6qPW4T>58^T*x5HarAd zo-hwk-_NLT`iH;WJDzwpS09*DuXG<*4~sXZf29%%-527+U!WU7n-Gc z`qrJdL~VXR;{_6`TPYy>r@j(9*pzoD<@_#@8%Mwyfl0MT}8!! zifP-xvZ&3+b>AO& zGUrm1OARe!CAKdr9MmW0F}2M7)mwd!CE8~|4xaUtqAlB``6U=+xa9Y3>IK+;G9Z#O z&kH?zQIw~LU`pQx)l#X>u1Ll#k`4AW;#l%4NIy!2&L^#Ap$nEk@C&HnfzI}t+Rw|d zks8lCOkR8mC8d+k>^HqG<2)#H8=Q9*sczhfBtv1k>Nam13T z(98_u3WBJAJ*J!b7Bsh=;^*2q*z((d+~3o1uRN{K5Hdx=+CO1DIG=cIGHTF!ZvGc1|FPW}{YKj&^GvQ%rH&IvQ z?w28R8$o9(wi{P-OK{6Kizh%~mDKZxeA%4Rt(DyLU*^{HX>za;Ad0QJuU2~j<-5)^ zZx)%(zyd91_~jq3JO~3<#J;2qim_dv3(bB`izs$@h#Z@tSDrsvHy@KDsP}pc@ksn_ ziQQtqut?){yTE6e*4!j4j1~}xl5OZwGxU^6uLnhCV`12#iYb-Yo1QZin-pHiS6=2U zyYFj|PtgRDj6xpG$AZBm>h9p8p2eSXb1eKUgnO_|U z9r*!C0(e3o@Pe;P2L#q}uGOZolNr?Q9KMkf5h|||Qlfpm8{{bY!3pTcXXw`# zZdLy!IMyGp{qdg$j~w2^NYl2}HC~#`nE&zT4L2TF!_XuOROw`(aCpb;V-V}6HApk{ zo8qQnP>(t#gHLyPi8JuzV%CXa1jUX{K*;|x%-;pfNm75geIgI~sX|MK&H$iYA1?4C zP_<0R>ww3X0tadm7Ek>|7QNf{S)Yns4%iih%g^*G zZ4G@qR~h@S6h*T__jv@@?~jAX1~kY zL_>)>vON}%;A@f`cls7B)1+t&s6~`s2pn$^r%=u}EE-HJOhu(M-!ZmLG$Q-aM<|+g z#_+9S!<;eM;Agqzccxzad$el>e94Sy{75QRsWBYDrx^B&F2~nqVMI#-&kBpDzWvQd zo%LE7Q`4~`xKSM(J*gMATbZv+*)tw{A1Q+$lOsn^!cn2Xks1_Fh{sIpvbL2J+O#x@AqAW4%0g?|L=}nRez4j zJylcg+y3l$6k#x{AsUrx_sH^F62%Jl89V(VQ_lL)ctp^qV#wP+gC!Fe^}VMfg3Y6W z>Q2jja&fDm4seO`TTL=y>uEWTiM8Wx4h`t`OfQ)MS2We33rq#er+}Xn1NWVhAX0Qb z53=b(w0IC(hDj-qN<^JbxV+Tsf!y9Jq zdhsB;yQXc`V!f^*9oA}S>TDnN)+OadP63*XwYW7=NbgyNI= zmndb9A*BtLQk*^-tYc-o9q4_EobMSou^ZNAXcn3(5b1f_(-zAnaek5MflX8v#jh&M{}fcG=%o4Ss&S-2O}wdeNjNNO_s6-QW8 z{9-IHzF%kfF%F=xLiLKQ$27uxx9H@&Xm;Sa1wdlzotfJ(^rJ0qWy^usW4MbvLt_;> zAhOW|Kc{e?p7J^ch!aw7HAa>}xWvWmka!;nq%3y}t>K$?m>m!JBfEBV$rA732YeK`2qMK?_--=eipfI*CL>0I#@ z187BvvFz;gEbeGdB~quC!XtERy@m1`S737)rNJ|_7t}u$aTWwuOuHB6Yk_g{I|Pu2 zs%3em!c~Q&H1QTAQUgtTQs+|cqj3xpi$O8nXV68e&`_&kM6KI(Y93;zLU~k?ePN%A z^y`my;Nr1WOHKpOq8-+DwavOKQlf;1{|HLT$|r<6uk2>Ge zXI6OJ?gwsFQ=kh8!J(sNWj;Uj<3;pLav^H{cRT||hU>3#J1|1lU;Vvl@#0k zaQuctfsZj9PzmY9uf!_yPmGMzt-iz@&FudJSrUMoMRu<2A@12CPlz7$dTgofj()0n zoq#;ztx-$R1e@fEb;OL3W1Y$lTzhBDOA}Nv8*j^9A)0))>LePW#*1*A{^zL`wiFN{ znJ~UAeP%kj3sY`->!5viZfXI4EG`J&aZG!H%S%2eIr+!VkGU$g#l|HxUvXOo_BczkDxLWVxzBW2+Y*2NAg^h6zG1k8ix?{R(&CiR) zERZ>Ph=qq~i@(O+DXii)&5(kCMS5V%zEe2IZULb1UHqqwGaa9Tcf>^T2ZEtT-aOTK zWK|~PFTe1SBhmd6w=xK;h{ClCn0Jum*z*p-ZZP?{6u7}c$nb`>y7yTr|`@kuq-{ZqVrRcVa;hzxES zk65Th4kGIiBSov|y@qBa8y`Y8>5Slomo0l3jHqWhWa`>&CBi~q%KUSYl5rL@X-M(> zRI6m4S$0HETxf+DR8v4dq*%|MWYTTQF}CwI{qF&!`b6lUgG~S^)X4}~`MKjK%$dYl z(Bp+=Y{}+&k9=H~%y-0ml9vydi7l&a=sjK!=b6hcb^a_Xo)g=Zc$N^_ff}C)_V+|4 zBbuA|q4emTRQ1tGo$&c+<5rQ7AJ+cYR@PaTyG}tqN=Ru`s{?*ppm|!c5 zsliYS-5(j@reK1Om~sOT)1Y}4O~DrDPp5qP+^r-A%sRZ9LyCMOTV;0TA%SWdQ`ebN zQpO!y32m_@kz*C|2<&`OgqQjKUgWIMQF7K2gTw=? zR52ra&_!(5G`6yRJmzp<-y{CaNon^Y)ZJ2Wyp3; zD{1w!RC#!;FDKu6fZo=!U{=?Du4Tj>RMQ}UeA2^;#9dk;&D@_aF6?y z@gMF!O_r8=ES1nSx3um$?T+tNn~4&kOBSRStkjg=*87al8|(OcFV?r#Uq2yJ4iMnj zzgQoQ+l83BO4pXxJ4U+K_btxwj!|9Ijhd;R3qsVwNHA)@OF z(-^r8MKI*EDgW=y3~A@2ynHA~6ODCe1Nxw?$uVG7o(s9Ihs5<*$&e2`zG-Y=lx`&-B`ot&q|8VHj?L?zRZDf(zStp5Xxm&2j&_X2s8e3W~WK{5@p26&kJN-JoJyo4hB zh z0#_Of`Q^v)(=%6P_~L-81py+HX)j*i?6`BbWxbZxD{Gz_O(*|H?9ZtS{(Nnh=xeU= z@=VakEUG&B_)P_C+35;X@|5ct>0=ytD zdo>+?Dla+4Jsl1~K+R(l_sCE~0*PkZr;+F+g~Yd~fhK;-xph(GtR_Wtcw`0bYi4~Z9- zD;hGW|qIH8Fui_v#5GK9frrg%yIz+K{|wVeaEOf7OudPipY?9vVZ19l4CWc%$V zb?c4lBwL$YP@28adgdZ@Cp@1oHM$r0mld(N_aRl-zx<9j55Un8SWxBbo5|IL{7yDw zDw!}j*?6mWHY|WRBRD}aL|k|wZ3O-r7)9I^WPLo9cZuZ^s>G2tf(F-2fE3LB4TrZ! zC_?Mzb>l~P{O$b|1U5gunEymjj#VSwCfPRLS7WiJ3O@WCz~9SeIR-dh=?N65I+MrB zxO61t@d~?A3{+e>Lg#3Lt1lGKB*TpqM-pqqUOFc0lkI^&CsOMvZRz$1P|6~$qg zQkF}u8zFn`HXXNqrSX81fdW^Fm<@L=;DWCF4!2U@wa_O~3$ZEhzMfR8Fs@RPBloV% zfjU1AS{EIp`z**^SVE?bT+_v*P4YfBA>jA~bD$@FXd%pc)Bj{8o0 zJZklBS_F>J_|Jv6J&hq30P40;%!?%d)Z5e(K``Oevm)`ZFhNg6_Q9)v$KJ;-CAdWE z5%hX;oXFu=hI8b3vOuKoU>ctM%az6(8Nwn0j$&##X42fC*-{Y5As!1+gnPNio~b7U zFo4ajWir!oKbITKy}Wrq7W|OdB`Z~_?0-&dQMb8TeZuUwrwMLn*`kly`@h$5~C~}ca0R9oV zKLD>4m&*f2o_xu9jCMI14PFodt&aCUp$^~beRK!v|NP(x7vylc))Rio?%DDPMI~8u zEhic$`_EFfu-?^9bVJ`Iy{a)tqA({oo)+|n8F78zgKm?}+^OlXHjs^MWR`xb#YzdN zvlUQ|#2lSujF7E5)9-&c?F+lQRkMoKMBJ?g%E2BPp1RB|uk6Pk1>zd7EK*M%=Nk)YQa%2f3FXq7`Sa%XC33*pKuBHm1oH5(hpTE? z&JP_1BkHZm37PXMcyOaY^q56L-yR_cd?1Y$&M$WN4MDjDV{#kg20Rw>gF@^nxPaWL zLjyV*J+H`@_9%oNRI4PgEjs2O*e!J;?{g6j6Fcxzt=s04kT#M|B{(8mO8QXX)))e& z+QF>8=vBdN6kY6we#SM)Q7sJdYsXE%3sQZ3f0;++Yb{_|L=dWxYFE_(gVv;Fj>ebedSa*?QVzSX*tcG5NExS;yIE;fK zWmqqM@b1S;5dUKo5~;=ef*E-_M5GeDU6kXq&ASXBS(R3g&*DTbf}bUH;ll#rN09-Y zkF*+Zy$gLbo(HB%nJO%JX_gF+Q=c=6idg(Tc z#>Jy3ezBc(*CF8bJGf7@m@vWJZ!i49$&A?QF7wd0Q?@^Z_=7RlP zevDDQXW+s#-fw8|E7r{VusEcBDG@N}v~^+O^^{SJ1Pc^SP!@-e2lg3anxFcEB4_9c zi_G6R)%@1&q0{9;gZ>@)uJ_?wN!?bG--r0*))y4sWhA6bfmiX-i!KeD80jb zR|#PUHuMf7?;m~=`e~O)il=KBNYYd0OAbNOq0&p|P#98ipy1c?x&QI(kLcKso4vjy zp}}tg)3GaI1GtZ81HrfX{D_VYBqB1Dxf}sr@#^k$80x>={>R7xq-ar(A{pu|{HAB` zqvf_i%DmQtga*MSjTYRKMNMD!>YA3Mni+Um_(3hqy+Iq*9j+sbTeHtW*ioMlPOmpZ zmmDz$Ym49oCBAx8k$pjVSPgzoubU5E05JvVOw!Dv%Q_V$_Ze?Yb)bDG92b`nedqPi z7OTe!vxq+gtY6-KUlA6& z%N^-Lh#-lUEFOH=`6y{Vjfm1NQ(tvt=QXBe4E70UDIMtdBfTCe3_5i6@i+oBtgj}u zIB(o6Wh0Jl_1Bkndd8~gE3{HEQ#o!{3R zJHC3;P2xvxCs=A-DBO21d>p^EK_5n$T;U*z$3`0|9fjd*@h+os!VTxcw}}ra5GI+OIzW|qD^76Nyi=G0Nl7loQ?r1QS0tPSFtpqKD@sbt8s091wogwU-S)H>p9 z!uVU1$=Oo1D_3EBH`yUSZ45y^+Z1I=U;Ox8_abjvJo5UsMIy70wBHwr{hxtmVBuTY!&rZCw6|$s}+QTv7)px=c$++wK zVe7i?pkVqfw#ICst{T4%Y%x6CW}xH7==7Fap~o^JF77WGPxy6lI=b8_LpLoX(pX|G zNws!1~-DrHKmQ?{q7iDgEdOg;iBnq2&Mdtp~wx62?W7x%6T- zYrE542}tu-@3%CPmfmb9E%d9~+ZKQ4@bSLH*L=)+x3dHaUKkw@eX^22cu&EDMH;z3 z_)A3Mtu}6m@*J>~9inOP!!JGmbK~r?JjQMCm8-bKU+$WR&hvihuI>I%;#WKwMXGb^ zo-V5WBf77O$woO%h%xtL9w7Te4-gf9t6E2IR|*651_w1v`NhC&&>4?q`EJi^3QZS+ zPNE`0P%z=)wG1)Pcg}1J(7TtJym?PgEaVqLkLvI}zgADqrNQ_M-Zu5CIPH9jjGqDl z)x+EtJZcpH;v>de!+~<=hV)MhjoVU#N#$*#rADO-N*=OQQUnKWQqC!^{7X1#h$G{> z8SH-Cey5$)HV2s{FzgX8Y6G+dYsQ^e;weNEP#&hl&-s z4h{wH?+t>~^bYG9#ZY5tA)3VNccU z%4k$Wt#NFy;k-9IR0kT-zkPp^Q{=D7a=0fTd$Jo-8v?rmt#!nIv_R>zY366&Kvan@ z#M)_vnhXOKKKa3>(rhbp-<0nSkyab>cS9oh@8`pJoOM1nB)b=vR@a_5%E3K3uU!Wg z{4c~MD8i5AP(}!6^k1ZYaxQ418(nK3>ox{6S0#QGMh9r7hl8RPia+iOU`RJGsz0WV zZWSO3I-h%3vB0ePGtufs?(v;l;oF%G+Q=ap7 z)8V1*NgD$4sf-RWS{%gZHF2`uWFcFIrT^X;*d+xR5Mi%}1$=2^U;b-0R+M#n_^J=e zeHvYRPEANysFf}}7zl}L5Ated1*tVpxSq?pGaUvla$*4oR1T2r>UW>$@^8tF%4Ru-pUWQjYrco+>xNan9R!cHH+-m2z2IZ$|u71RB-r-mN+}AnEc1+&cEgy zCqJiIjc_(j4On?_6NKPey}LK%56XOS-M;4Y$)eO4244X9z(rwR&j--l7W9bC{CX) z*8NK005#Y6+C9y=uiDB*;e>I>@A|FgVLL(}8TWVbwn+Kj%f2|DbW_KpXz+a*mcDmF}5M`DoMBN$v(JsOUOLr zPnI%6f1a9r5Ju(KSRuz>iEDLFQ*#~|^%q_SwIvJ7EjmdwRXO1@Ud_eaz4Ss4vqTK2 zXb~TA*MWQ~R6BH1EWQFda_;tJDyTs@3lEp(dNE5farg|uc5{>aFHTywHACqp#>U|iVj z%61>AmuT;hrF2OfWvHrdn}*{lub7^b{VGwt=B`i<037XaY*~2u*TP*+6sCya?}hZ2 zaLzM@cJ<}xXq`(wwao!P%hPcEEYlv2UD_CjTlLCk(pFxC#VcrqwhJ$v|9T^75vYt<$!t@fMK8Fl|Qg{Rs^M&ASQ38Z8W0@NHg7DbLQCLoUCP(V%6NpL&TbYk;K zkxtY;szV4j>6<7wbDo1#{V(+MIh@|!CC?lNkEPq#x_-~c&F86RLS-OuZKfGa z%0%e#{xDhn)oClsAZrA9UUf@M>{nP|fe%>D{G_ob7cs-8Mi}!r!zS<~OQFAXf8tco zm4-4T|~`ccW9DGj{Oxkk6;nE^dT+t z|2LZrE_sRD03@t1^i^#yLRCARtdT_SB^aUD8+Omm$2UnwLnao5yweUv6!LOr2tf8Q z`nHlyrG7UjU8)Adn`#lGM#;(k<}{J+kFS8n-7iq-QU;G=#MP;|#VIqYrD%@M-fCs( z+s2#bw4l=){%{&VcBv_6ydly<6@3trQ%p5#TKA(Q_b_40aFX&5^=?gwn#AnU*VBBZ$?#L+t=m6=rH_oi9&$GW_X7YIpFmmg!&B zm6ei`jcacZITgM4kp}e|ciqLX93y=%u%IH)w$8%wJg2=X$oRWMsf2d72a{lWGm~;g z!$j6WJ|bL*C){VwRL&cZ7wf6IU6yV6)$UbN_vP}#z)(2@A_VY($W3&yHtVja?7i33 zt>vz1lDJe(d*w#Z^{~|e5EkiRgYROO`M*W2$k}@d~P!okGLO@D?=bl2M~>s+PT~8UO|w}1xb`io4Q6=eTo)t zrGvIvXelW^tSFnf(QFwJgu1iaL-@N#-)b-Dr~j>`#&z9jC!}S`d*MKS@n7j{l$zhb zf_K~SvI({H=R0*P*~hc@#YoDf@Y`?RUqdPE>P6y9scyYzmiRJ|!P#hqU&X1GlwF)e z>tWx8N?q%6zG@#!JpGJFy6kx;AG{!dy!N6Oy1ST?f69L+&ov1xim;aFD1Jr8W=LQ+ ze>*fA8-rzEFW+4EHpCL~^cKEC+1`ge(W*(DXAODf6QY|GTrO%-(Tr{9ylwKs*h&>i zk<)SLo_Ap&=W@pVjrD>eM{Nwb^~80qRKZ-Q^N3?^$KGv$a25z5zv00$p zCJC!I&0Ud+qpZtn%Dm4ZY09VAdtUKFC?X<4pl=YnaPH9p}qtOv> zG4Q&~ea<5QF;b@rh&xyxS*IQx|3w7vD|CCPb&9BSGN%S7c75Pg3UB|HXTR}cyr@ew zuM<~Asws+9dDZFVboOyF=6y8wE-TPK(R#f^W<Q58L5DWu&k%(^ zJol>S_0K*NPTLPwqxid)5R@BGJpTeqEo4BZH zef`;cp22C8lkwWe9@%+R{)^B{M`tlcuiC1Lwyz3sx66-sIMmIp>8oI_a}DGb@frbL z;QG(}B{zNc8mcH0*l-^TMVKPobnRcF?!4ef|2AsiUa{8KaHNNqA+4b{TXgH?e|_Id z3j(MhUW0vwNo#ap*td6ryK(5yBX6c({nx+#x~K$M?C}U%O||HoPd#-X`}Xd|&03OQ z2^w%$!fmwJM{GS`?Uu@a%Fpf%fXEnC3ma)dN7ahc6H3Z7vU1$9k6y*O7+&mV~iJSQ|grG?tz1Q3sZ}Ru_#nGL^{-! zN*_jcXJ8#P+7)jb)0lxZw?I;Ujx0ZwinxH3aG)1&4Ml@*-d(X04&}F9cQ+S(@xGQm z;4Rv`@c@pwgTe)0xDRvTwLkFe(P1tUinCLZqPT0j*G8pMmR#l*nYW{>t7ScU1SP!v z+`2~1Q?OD|Youl_h=NszlTVAD1rOczvRauLOn_PomK5N$Ghy$kSan1rKIRfil@&v+ zU|tdLT2|9=*!aR;Ame&i?)};A^5ZUJvs}?SW+Mv`oQyrnffc^|?GNzv2d|E1jxs2} z8#O-rHr^^<|Mo|~obNmR<%qAwePt-^w5TXjZ*A8i%bzWz`5T ze_I`U@ZHG$??tRb)fzR?2K9@UsVSy#|9e9h zIQUbT+N?C%dqjr01&z#h1V2pHr&)89+PM4O4QC|+^Ai1vgnb-5Z3?oNZ`@g5J)u%H z?rr$5R_K^A^%b6fR^i}&L41PyW4KJ3x1oUdtp~ug-J8R+px2+{a$%0dTPk=m|OB6F{&=Zta& zr|4e9tW^(z+bUZ2FtsU#f|N?Jne$ZFnco&l|E`xGDP4STHP($O1qYu}WI}JNILZb0 z-N&EYdtU_IT9*ArgRR3g+=V~6_db-ufBVd5(0fnOm6!ujVHR@()0i`Li@lyIi*~Tj z9ABeKBo=NB>toMu=e(YJ8dZS1?mn+jsInS8FWMPie1$3%p7U(VDW_px@j-XDzBQ8V zq0wHc3^cEUJ>ImSZJ@;3&GOS}RH;h~MTHY{2r$LmCgSueJpRG2@tqHSorx%T3EzWk zyvejOLB;vbhrUih*!!~YWnw`n>k@q}6c2xaM{@P*-icniXi*Zil97FTn0{@TiYWXQ5p|g%j4Pldq!`NF=S?oh!x%Ok+@Y!pE zrpRj~dT!8uca)AEQHg7#yx>P)+Gs9Y642P^Yc@B4BDyU!PxH^rT9Mk&sGCMbY+jKf zbS~7o%E|loBBDI_@FV|o*o{szT10EyBtT9ay6l_|)CVjU)Z+n_7{(JPq#`Q;!Jdan^pl8u+)4$ZB5caRCw zKYw>*Qvbc5ZjFr$^^U4W?~k+MW!UMrqy+wOe`CwKl_C4KZzYPYd|L)*kTj>&lu|mp z!ohvYse7UGFhZ+OnjnS~xtB_(;Qi19CxQpk7Q2g42b}qW^+wojAj6IjqoNODJe;5d80dp?8?tVm^*Zknw(b!ie z^x9KQ@ES!QvrT_%IQ~pxOrOuN^)|eh#)K8rJeao(Y{jbMOrTV-ik@^DcG4*z9=%}3 z`#v;4mI$Kw6iUH;0@SFM@VK_MiNu(taShGpG|bVqC@W^S%a4d-CWy35`4T}@tE+P~ zfWns__#j_@@aj-p-6%u$zHIysswid=%=-F+S0f_4;NX89%^clvUqwn&tZWKIU`f@t zqyR+c=xq*jFa>FC3+4`uTs<5=ZY?7$c!BpFRQ4U*hnohKmHFsEFmqZ#2yWV{sbYUu z(QueGhyH9VXT1lYbMm-+Wq5bXPefQ1?Mw94@h;A#&S7d$f@|3yelL3edt&b@J<19u z8?Qi(z{~_It3d^D|9fy%bpKBWzgabyczkVh)4uI{vUM~lv*7n))kRNKRR-0^<58he z<7_Ylbb{3<5DKU7cTPJniCwc+yzGhV)JiQYfKtqG5lo)I%LFXw-Kf!IRJ_u$7o?73 z4|8$xZO8)K-SRW^QW3Y-OnnlyQe{f1O`kR4%a`B4m*0IosNy;V)!A?YlD9q7#i*_^ z2JnJ^{KAp$)XEgET??>Ot7Qk6INv znddB|_KoM$_e3`BaITF#Z(2fB@H+*4;J~^tKc^$jd5I44-7G(~HOh50iU?DW+TG4H z0#>cc=!rl5I*)wlYeB`;oSR~@Dd(+eZB*BVM?Unm2rB=B?_r?n>MR;tn;R2RYVfX7 zefd;Rx<-y%wree3tk5v$j%>5#Q+05TyK5BT}bnP|V z@Y#<=cT#+l14~LJY`W_{dku#3f*<{f(YzcI9EQ2oAb@If-)8S|Z4?YHNU;R{@ zLyx%9p{#19_#S$h(jiL^f{f0>Bb915qtfUp65Nc4L3Law;{oIvW!V$y8yg!;8hw!o zt!$MDgy?ECeU)&WNu7o<>v518ef)edw%2*4Gmht!pQFo9P;gKj?T1^ch)r;R9G3|f zTz4B6e(Bqh`CSw@YbTFyf}$N<&X^&pP>l<}bU%pmi$8Eq7?rjcnBtwIy$5|!mBxm) z1qP5GZdi=}Zmn3A)}YzOpp3aiw)L>nYKby-DWL%3BcHAKPzTh430m6UfT#t}d33f2 zgUA*0))c|@@HxTQD`(jm60Wkl<;RUql-e@ods{_)1uYe+g(}8ZAN(jcKX7$$3NuA? z(u^tDI0c(T;6_zru1vW3fpB7f&%wV-am7oI*FrC=l-3WRYuP;FTTtO9GdYsR1?=89 zYkd+;UR#6muFxqY=25Qh;jf~W@_mkVko^q!$NUem=V5|!YcbzA4DRI>&0*jIwSYWYo7V+==0+3B@?W!;sr|YP3Ks$e!J!w z4b>k*KNayokBuG#-YZ%(0u&;M_pSeh$KFI#A9yPe0mk<(s}YnnA9D;{C$US4MFYfV{$Qh@^BOm@ckA3JXxGJ55^%iuLzVRBy zxuk_opjY9M4}Ap_IOXqu57zFZyE8$UTBXxC^-8O{SgLj_^IcwG)_W&<2$iBZ5>1(X zFU2cWrcs@wE4Vg?XkSBNsy!5?ccW{v*-KP*Q+v=3ua0yR%)*{_>k&0NFW`F{!$v_$ zP$ACGX<>$2Pz}55ZzVrjCxilOkZy z30SQ&mAVC&dm}n2X^9qhVo~v|Lj~COMS*s^{5&Ffzx&gn=n3>*T9chP45IJG*59u% z(!=4^Yg9f+>A3IlRc?Q*(eb z%wUj29vf@G@%w&xa^>~=B=O}q&WGfA9mkI!$dxN!65Cj63Fkp-4GdTXHhRrlFzy&u*(=f11Ds=K8c?rPiRtE{Gny3g5XpS{=qum3RmY)Z09 z^dIKW)0{uWjjG|bRh)LPqLksHggJb#1+ zr$tj?HeeG-0A;Su{WI5b|Mb@qNUx|)0c~!!whADWg^XJ&$P{J)3f({bH3WG13Ga?< z38|FK6ABSfckOF`0P32I<2g8;+D?mir%(>=ooDwW!$^J-;iR8Cj%Od=MEdlV!)y1roM%9;ZJ z$NKz%`3!~b>WKt)WB{$hzALcZpG8HY$>V|+!91*we1#tNVpCyF(JAIcDFXKRRpF<* ztvs!K8Gq!|A7Q{B?lWqDDxyhQ^0zX_%dbU5`E)ss>kH_`<^TjxSViKqCjt zt&GAhJCa7S-Q&-|RKOdGv^>7Q@{^y`3@x7HWk35Iwrp*n9nxCU!T!rOzSl(&atzNO z!6>DnnkFyJaA|Q>iZ$GM)g9b-)onn7_>kkggvDzOwem_`gp20^w-k;u!5CsP;J&MF zLq&MyhtI;bjo?Rb@KhX^BE9Nstsm|9v0uDn+vfUj8AgsWXZzV*XXv~gPA;4|>Ihhj}X#7k`wUmgXE=$H@ul?*l zw&zcmGo&??EMc5txo;{L@BS&5?b#D-PK`5}ci=vC#R}9A6KN28OmV50DVOcpgGk}R zlYb_?x>FUQ1vSHqWG==!13uCLQ{I~cS>_DM-hJ3(kM^ntdH&D9<`ZJBic-BMLkMVW z^zfTF17i({hvz#vxA*PAANy&tg9Uy5&*H~#PFq|#j5z5NM>Kie1 zai~()0s6GQrO@X~N@ut139vhjOtEKvACJsEj#$Bp^OC{yc<$73Q4ciH$Y4-1i?Qkb z|BE!J8#X9VE7D}nfjax=pWsKs$3sP`l^1M!9w$w0X6W-{#K5ulQN}~=*Z%8RpFbUz z7xrCXlDf@YTX+26JM8%3O(VjTdAviJ@V4?Dwxf;~#M%t@h8;h=2@p>IM{kO!sqw7U z>1~!fwZxiZd}C|P!g@MMsS??bPds^$nSBRQT8xIRTQ>2WO<{c%?f|j&NeK(6(NB&s z4g5m;I>z03a_%6rd*}L}dBW!7c=mHP+7>|o=$gfoenc9+eaQP1{ z0+6K#07@E1$7x19Ge+k2QDz^ZdiersvDfT-{MUH)bHYN@G((=`5IY6wZ7S9t`#P5A zPgtlZ8P)E6QZpYb<sWz=f~d{A_5H#x--G4!z#> zvcifCoMU_bwAE1*%8=3)sw%>O9oui=o~w2e)?}kvxYkN(JQ}$x9OvpzX`r?>?fc`i zsw($vzZ12}ndiPHyzC8XGYrL1b;>$eATD=zlDQY|8rZGPGc%l_z_yB`*61Ggf9ymG z$MY;o5vmWPDcuU%Fvb!L7Q8oIZh#=wd5Qx}*ZpWMmzlO!9A<3h{AW*X!gYWo%W|nT zbiJ6N$NKz<5K)idcCnG&r5wknc0a_W(=$<{sidmEv(TN(e6Lk#u=zabrgT*^D3Mum z$@FeaDjz@j#oz}cU{wfT^??0W9HM%(d%#k2%(Gq(OIO1ldlXE*7&e^)vqyLT8qy%g zKbI4#?eg-lATU9eL^e4kT|NBYhxe0uiv_U_7`)2K5f@6376eL`E zI}4^%=r&rp^>1$G?jL-cs!H+9-YpH{;lZM;h6Syqm8;_=a$ek>Duug#@NG=s?0@_Q zT5llF>yoM$F`3x3kNUdM#du3=?A`Yij{nI}im6xKJNv}HX|^cGJ!_CQOeJd0tl7Ja zC-IuUSJE;${(SD>kiC1Kz(q$tbKg_{<~f@N3G{b9>`WvJg}CB>m_IApKPP?#1!Nvj zybQq`M1dTuYZQ&*RD!H zvx#d&rPxr#43M(lMa)jW_<}g2sy#w`~v34Vh_$icus((p+eB zEWJcPl)8kBTq+e~rWGEX8&cf1HD2tEH~!>;Xd^@ur8c&JnY`ed7G3w6j?XbZe?X}= zh)^saAbt?F%4K&4W$DT5@q7EI*;8;Z`;FVcTA&J z5kE-dajn$`lUY6%>fytem&^fS7@ho2UhsY?SQY&OGml~O`(ndNuS6}Lxiy+$;T}GZ z5_T!5#J`z&j4JvCDVTrqg7>3op(FX3%EAW1gfeiB`T3LA67NU>E!;Q#74Dh6KG@pY zsS2VnFXBCTz0&m~!omg=@sy9&5o1A|duFfazUi;TyXqwscy-;M_2RX4bPq8ngUv7n zV)_Rk{pRnvyQ=evJr6&@!6$~e%%|01*z}2b&;JnVe4|VLop}yEF=WrfPoT~x++F|R zqu=~J#I#{5k4!^E$|6o5;GmeTC_y@K@fdisf$U60IT)NRA2>gzsw|3zxGkz~B% z8lOGkuVa1w7{VYeShW_0jpH=zxZ)P>-M%yS4U2lp2>XgAd!5BrUVju*tU{ylvkj;k z7DZ~6d$;do#}&8WGz=R@Ggo3DnK3g_03a1KZvEPgp?~!7pI%@(XKJ=>y3Vqn0}%wB z_e)9Zw;K5{F%S`K9x4-KKL?nuv#8lN(>eR2hyU~fENr%2N~$+)GVA?<Ru9*YVtWK9nNH(<5g#wGEg20W-9-rn@yB`7>AQIOY z-~UUAHTu8(Q z4M&!huOHfzqdPpoWk5qHfbRa`P2B#!ZVp3aDSg*Ch+BhoEO>0m_X5IRvJ_!R1dRUa zpI!C)QVi4b$3J~yKTpjM^H~{Mf}C7LGoU_xU0l%O3D65q%@6tM6Z-o4)>+5kSosd#{fzEs zcAugBOID~iUcvkg+wsoBSezb%lKqG91O-gtn5(l%L6 zH(_-8#v32H$Wc@0;)f2*vA2yTfT|`q6F%`#w1g~NHCT>&TjQYvbEtE%qxQxdAG!#@ z8#Tdb8>0}+v)=L~udQc$=RK3BnSap{?pr!I8nJiVNVr)!sZJEDeJN3pZ`tIx` z=Z{F!7wM9Ld?FrmKBZuiUVi*X=|JI%bVi_8Uw+int;61(|sqKd?VtH)7#0eUM^oh;jT0Z(l#KADMX^#J(WnW}o=j2fJ27ccX_sII+>-=Y*`S(&kv)hB>(v16NuIJvFuLOHgM}aS%*E<5U zgGtqjXZDd|$$ERH--?grC>eba?)V(jCRlY+DIpEy56`{nUpEFy`I9{lA7E~;_TyMG zd!mYkWSq1k%ln?&tL%CB0806j#^Prs*ke^HjY~AS#;!vbjO)T{U&(hjhHZ{*FIn&A zN;0XsIcDPAJM$Ipo4J0>-e+?2hfW3xyUVl;?Gep&3bB}fz6#Gf%>df$*;k5-hypNkCU z|M58wUI5VeV7`*Uy17P;@;~z0x&nVy8DV8!8vnaEI)y;sppU%6rCPf4YR z)KshF-c=Cr@a*o_j70JKgQUh@p#)pM$SAmyvI=8dyjKAfiC=5hWI<*z?zwU&cWu9e z;t{MWz`RsS9rVwo13)?@bXTja^qcY8qGPx&I$&GZ%)rP%DE{c-PhJpvv2L5Kdw8NA z?7?64l36Sj(TZCrqdO4ziF%OPx(8ghAre0;ids_)txGVUGhavi(Cc35cQ=;m^Z-`( zE|fZ8USjR65?LH~ZNGziuH1?1qU)ZZB^$9Xgu!wFk4s!^W$m;tbKOof3GL z{27w;1zF*D{*3NtcAqo)Y`ApK443TwX@LKo;yLXuIt56Vr_`N)T_PyF+v=X_x8(ZX zuct{cLqhc#>d(%C*pUdn#@KdVtUroi{`@MhrF93!`td5hO zbdcB3z2}}Ps%Vn0Mq@m33rAzB3vAZo8B|FHy0i#|r@nMA2d>=}^Rv78HqwR0xbD2=+uZ(xZ=;Md^x`6i zv4`bZ-3Udb5Or{sm7cD~D&Dl5V&N$>{%b-jq3Rck0sQCx{<+@^)rS7@^xlI!ad0l` zQ3KZ|oMXI3W{$`2nMF@IXarK7~|$Q#L=MYZqQa zg+PL@$WcvD}QzS<7~V0;RrR-4(y(fEwMnGftcY39mU#eD%|>cHa6c}BK#Z% z6f=-b7`0#1>=WmIP<&u+_63>wDK@{qUyQ3%tVF?5WmI(7{C;HSr?}Y{#0O@dIRAsA zr&JZ$6raT)^F(Cf^IBy_q)CkB_}I1*V{WM=GWU2UG;F)`VgBm&$5FB{*#L8B$);{! zGAwT)Ad(h;6Z}@9Ver778@O-wdc-5>(Tbq8V{yhwy`W&ym$s{A52Ry^q0*0wkN&q0 zadouR1;Jv!|IzRKA5~3NFGz^!%mafS1)q3y8+H4kwX~g?+*BZ~lEyxu2&0fy~dv2h3fO(UiKg%&! z$LIc%YuniSKgn;+rh!dggYUZv>Y&faK*D;j_=tf-f&g&?%_^_`*3XF^fY&Bg{8aPQ zG8)6zo_EjhxR@5>;vYZk?0I4y(P1K~?dX^xZ4fqe$et(W`SHU}F)ns7eeHSo{7zpB z7U}I6tAc1V)(G%L*SK1HKoc&5?)~^i4VMo{TJR>GNgd$(uEM6T!D!;yO?dtsvcfM` zi;WS97oGr0P_{ z$wPV9_&}>;9jgZTj}QOp1>!A2bMZ`_WxqWc%>xhCYQKhRSY)~w`|U|)>MTNYv3SdW zeE3f<7}X+fS_4c{M*iQ6ujvqi_zJ#NVk|LBQ&HQsc7RoZpyVag`VE`6++#_~S_Rv=5GTzDU#0f9Y}_q+r&ftEiG)ZauYegLo5M zN3tIKjo*B~xS7*@kw+heeX~%)>pcqSL41?HS4#YyM<2y$z9?>Hzww*zA7OA7Yz&cw zpM8|q`iyEn@yHdE-r-?1|0R?k;agvk>iosyk8|;!pB^(atha7iP!-h;H2oD9=gI5t zyWx;?u1KuU`imMg_O&O!dJj)tcVCjzbmPqPMRVGYa(vc9 zL34O@jZ&qs^KWlv#}B?0mZk|DkE>dOmY24i)O;t_;B{PdeMOu`6_qCH7#XeqpZp)& z{~+LZ`{S9tPw?d2!N{l6ij`L{Pyvw1f8`LnUVbR%EfM!@ch0BWcR zPu=(#?7FL>2vH5MW18T;i$-CRtYJ%r&uYB{hsp~3O^G^H6Ri+L>w*t`(+v+_0JRZe z+mD|zX6ENGRfg)ZhZqdiF;!;f=lJnch6vlBHt}!AYk{iaw;G>0QaLPfeXF(jC2J(c z6qFJk^}+XyfOn0;(5}0Rr*8aAT$dU}HYEOgY<+3i8krU@xpjt1?tFw&9ZHi7sQIwc z5Q7pdrJ8;CkeS+wzLz-_^aJbeG+LuC`5Pb1zyCRA9)_o$905!HF*|{} zr=EnFhvV<6#J^pzSPo3gsoK(L85J-xVt*ZaKwH`UtEQ(k5)7~s8)A(4d_05FP^xpu zosV$Itus-W;GlzJVu~%^EIaUgBWzAZA|Jzbo(E>X%zZQ0hm^cJT1GZhqq!K3kdlma zO#$CC{T@G1FV$4g)F6fBjIwys`S&0B_P<8dwCX2zKlB8{{WUUSk_FN+szj9G{>tu$ zoN(~`$C%GGp3RBc2;tQN0;v`>b6%KxN7YDv_A4Nkgpc`QRj9x=I?3`bA zADHlWkW7Otcjphj#m*mmbByQ|xKCH>mM&u}|F^Ef_u+7W?%W;gtdDXr$G-mP&#w7B zmsU~vlif2qvsM=ySWJ(6K-F6|i;wFd!w!r_9KEJ>Pu<$kv)tTZ}5Bb1f zzTqbqeCypmcZoTl`q4rE_>T@gwczC)SrsV=pF+L)kyg%rhEz7hkx=n-!H#=>F0qjF!PgNW3Qt|FHsgZO!LEpFE~~GlfU);C9WkXg+;0D z5N`$%o<8<8O-7b1tD%62CX-RzBgnBv-CEU>`52q>U)=dqw%s{H|Du;t-fB%)VKl(JA*vw)+4s44HriRC407x?L~%cw%l#a$IX24& zF^;+0O|Jf@yWU`7-*d%Xh{G$-eI-LNN=$pacKg*Z{q+lCwrbaZ2)LAEqX;G%;mr=B zQ-`eo|KXAU>wpO2#Q6_n%8wBkHD%S}Gd(}k z@I#){YVO-&9@afxfi^PC+>sK!z$!-L%AHr<$vxZeLbRj>r)DKI*$H&`9=!E7Plvwq zx*^v8II9>Gr+UL*?%s_7A3yOVS~WCZV|S;K2Heo13>`{%1gvoB(}h_xhcq3c9uNyP zuG*oHhX2OL-dFzW)1Nn*FY2R@{ZoJJkpzGfyz+`r{rmH@dJ&q7y8O6eWTg{`1 zSKC8A^u6Etcfb3UU;dAubdmq^ql3HuKMx<+!+e1zGhAC0rfS&C7Los=?!5Oq|L%7W zePFFp3L?QkFXm%0j`^mq_L`N>9sxBu)xsLTSeL^(qy-Lq^?shb_Wl?P;ym9VJ#I14 z`Tq{T9~7g1J(P^wvtJz3$DBmSdfDc(oy=45&eu!l|nUf-7UqzeCpBw4f}5 zsJ|9{{pbJwx!?Q!|M#!|CrbIFeX~#e+kMd61;#owB65^c{s^!7pZ@#je*e&G5Tp#o z*7!r!%p(h^Zv9?``_2rTB2KNtQ2u2OtxJp1aQ6?t#m-y4O(`Yzi)=wm8c*ElG{1>A zKxFJ-6ovEAfd}jL)!Cp_9pX%dWzG$kbDRtE&U0{6(0P;yLT#l|d_b#1n!0iurp|I< zxuU^TXi$bE2v-K}Qa|U-*FJo~x8C`pzjT$02er_Ot5j`ckMX8)v0(u*(>GsxX!9cm zW6%mtD=h;Ws`!GJeety|zV>G{{swI^8XM5ckSPk4682)Q&_KQZY7X9bIg~*h&JxVn z2yfq#tO)lb&TU%+s7w$6PNVf?K2>Ae9eWTFE_l_?qCSV%CX|Xbj<$}M^hjJq26hjc zcg4hb_=YxtH334qs4VOVjwD{%`MJdNFU! z(NI~cGPdh2SnXHS`YTifk@cfBfG@3z`2b`NlTBQ5`=e~TV^1=&(|A*JKy>o+=dcVg zcgF0Ud(=S1lf}6K05C78)(lae;(@(iLB#p_t?!~3*#zH&`5Y>P1ngNg5O}0|h~`Il z&3ixh1jT%~P?fak>))R9&ENZvSH1E7QkOpsm7v;!wM9*xVy0F9@WYFhAEQG~lXfX8 zO`m}x-FnvNh;&UrRvZ>D?ucfiL*hP_O^D2aMey$fGuQFJ-mg+*3TGY_#at0-msF{& z`|>$PXVvlN*@3HlBV^;1i|Q73hfWW!Gkr}w=gl96rXs^`G4==r))uuvl>aNerNfL( zcZhLmlL_8t#?hf)uRHIa-}%9nr~IW?`IInasqPPJZ4<+%a7?{e^N&7q|3%BK1)|+& z8qh2_JT1ItA9matL6) zFjoa8E#mU@7uTw^5{&Enw%?8moN?}}Fg2Qa!ArrM5kOzt%o^}jT1V0b(-(s4H7#)v z$IKAXB_H^Ic=%5*`1e2e|GmUbFGDf$!cc=PU#zG{Ii#YM|M2i9E?8zQQ%{0@M{eoX z*RkloRc$`OO$br5-ljp4O$>Gb26R6c&<&qkeTf{J#3nM!5gWM0!MaFh-QBKU<3Xe_aAPPD94w35T zFV#5R2n5*fnhQZPee&A-K!j(#`&5ju&H-T{4XxKO$#7T|3TXbY4*YeYGn(rWQc^G&L95nSKs)5eo~5j!Vwy;Jyo#5@g~#g41Mo+{_uB~K?~cU0$37D$8?E_ z1@+hI-e3DlAz*h4D>!!s(&Rc|{kwMH+WX>}ltM{zn2bHUjaB|EKi4n? z7`)>=!k*b^gOWw{2pTk9Wei@%!Xn4Rl%!>oDYXt!UB2b_=Ieia(aH+>s@0rL-eB5> z)HYd6{h?J>w}3GzVTGawBDA%m`$WLb@cPRc-ngA9*~HKt^){xp7+t{oWarPAH~10R zpt^9}HUa|-$-rkz;6J=IFS|W_W-of>Nl;pv3T+ikGZs;VMk;j`DV!pUnjZ?!`%jbknBKHv zBX+|E0K68C$)SgW9yDk1+OYu`{0_*F-cQqp81UfC*AR@CZhbH6;eV~N2^;gq6$-ve z92i-&A9m^iQ3CW4#c2^;-g{-a#>P=!gSL&k(1=n!tOtDzobJM2WfkXLlykLLR4JQc z&+&qZ@ZjuMcyQ*%gnEZPTTEowp-K~;{=V!w=A@03FF#_FX28dq9~M|OH+hvpoxVEA zZJR$7F1yss6!u`@Y8waj6|*1@4|JR>!IV|M_why0pp1skSsBr zrU^n*X)&AP-YafL98Npu)zqfqKBUkc{EbqYASJDq4ep|e*1M~SM+m(Mjmlve=gT!V zj{dM{5o&DU5xO*{A~_V~S&gq&DudF{dW&cCqcTJqfm+zP{Wk91etW=pI!{v@C=JpE zFgfWQz@u@&@#TQhRRIuJ0k9)V%P2rwyluE_dYZ-yA3OQ^G_(xG7!a8hjh8;Ce#QG& z=YhT`{8)OsA%R*!HA7Zq*%!e6*~i|$vS(>#p5&HVBQu09s9nb3s?m9GrS~r$W7v4< zpU04vfeS4Sm+g6s%VwrSZP2v1mAH(uF%;CxF_^kJAKSpf%vWE7b!0{Bt|*~=cEk;p z!V}lthXBud&&$Cpt%O=%Tya9NZz`+i1GDTnxS-Xb5zHJ#m)&sQ^X-54yDNH>rfN8) z3ENrEJiep8)@QhY7K>(wxYCMaVhlV$-UDB~mnW{hk46fX@mE0@lohM5R&(F(;EDyA zu(EKTFDA$O22g;IIbSXsr&$q%!j4;R#stoM-J2pyObS8}&MX~ef*82E5OX&s4+?7Zb>q!gS= zamfZ?hS5)&|2jSvzK8(60UR1Olm(VaS837PUrqV|gcOFH`F2&C4i|l1PxvCGc+;@io}8#Hmcog zH!A*CWBUoVLkaeE+k_{!1sFN^wackDUYX%QLqwX8zN_chmx%+wVHYrVH>oIc4m~i& zg1NC6Fm&sbC_(ZH#=dF8B|G-u0_VT-MCP>tYjBy11G09_4_)yLIAk2g3IoA#@jM_I z#g=BktV$_hw6zbpO`unF49^+c41FBHd*)x&!&g~Ms0!u-=C#GF<>DRFY}>I1(S|Vp z@+=O**;^)$|1Qhu8s8AbHv~~(*?mbdOdPj(2Z|fwL++ow4uF@Q_^YTHDnrBzLPJ=* zSlD2#!b>Q4pSh%2P8(oeX=D@T^C%5wzGm~^t!Xvqb|X`?K8N%ym<`vI~&$m*tSA_r%x#MqpT|rKT!t zkkWTS_FNTerxQMmN?MN%9GUYB4;5D13AQVoyZTT{uwkVsh|VFdYxdB^O;Lm9*?49E zkv0qBYxAr^o#>(J*aR|ER7wD2vsWWCSLgfT6d&L+q#{UdV6f1yctRUMzh^Hu$5#p< zuk``0Db9QyM#g|OlmsR3zv527IQ`t$Au>eTicA?^VcwjgzA7XZU*I{N7I0n7Xaz5p zu&-dYc9I`6(f<8YM`|cfy1I2uJm7KW%_GLG7&1>ZKYYO5+keRYSKJkU=0>$9nz41r zR1vC8e*Qd@GuF`n$mr}t3>5xycABcj$4`7Ag@cjHSQ51M2#H-W$g#Me zk;E_`H$hBCAlE6(+qIkjh=v+Q`cU%znF$8x*HaS)uDb9gw@5jCJocEr^z~(}D z@5)eabSuO%@5a2 zJoS}3IC$NIkrPrKFHY&wt!$K0yAjTivdrAKvH5O24!UuaDy^gF( z9mU<5qUE+9-pswXd^gWom5!XN?zDt^(MGX>wp6&<*z?;686g`}0m24pe&mKmanxE& zgLxvZ)C^y1Z@L^87`*KxC}IB~rU-M0h8@aE$05R>WQic9IEW|_{#n&oedEamyOCDa zU?55`9l~o=4p}6+g?*(jpr{}=hotI6JtUCB8?I#jrpp6hltOVqWQcnJmS_p9AeroI zW&+I-H?!5VN?41spY*$R4EH9a*6DA3=^fLE2p64kB2W<@P-O@<=zaTF2S-`D(;nMx zDpQJ3&DU&At4b5zw15ZWR+c#M$F<5Tt%C(O8HN2a2L_kiHN&NMOs5^Jr{ulKm#$;x zRA3{5z{)}|gBY*A86u-~WYSk3jmbh1!Sa~|z$*d|?fn`B2_;DE^1bR~xvZaOfV?iS z#^@YJOO}A{^OT~97%FAW7Ccn|96q6-mj(An4}whI@2XfNqqxYD2(livOw%{Y#?)H22Jd*u24M`PU=bUnEhP5y<0wl zHxBcf;oNl;LbOG$^mfg zR6?b|Ja}VB>-gTQklD{+G@&+@Aue&~FAmm_j5y&RzE)Ph;l@BZhONb(9A1>{+P)Kj z)6RJf?VzGbD zb7k{StS|)(QM5JMfkQ3az5RzV_8OC2#3^2JR|XQq5feQo8X%q8d%?5TvEc7X?_fHG zno!+Q2DsP08FJa48N}iIlb%nJinbc0I1$WNuMSwQnII160An7gsIT4pR~Iv>gjv=U zVs&YNZxt`WO=v_gi@EH@sNS$`&ri5)dZvc~CGGdjJuSPZl1#c0=Fd`%QCU{$u^>lf z(heY0iZ+;8Sbn?WMKCQC;Hj@Y1S&lH-KXIm>dZn%Xl%yvRaaK}k2i$In+=jK7h$pI zh_9XIvoTkZad(Q5!^VPZ>OkUEAhyL`JETYu0Ao)sJaz4zJoUAQP#rxBb)|}d8>JM? zBco!XYx|O<$VFCI%j7_9gxbyBX$n|nEaO*DuQ;&tZ*K-y&iY5cOhv~YxJFL#S`eVd z|Lc+}`}KRyow8!|*=zT_gh7A)4O~ZQFmC(7_t<&M%_tWBAW}w+61r#R8@B%MEk7sx zHSq?BNqDwaDvgy9ecR{z$>q{XL3KfA-PBgWV&O;+swQwzdYC70F3WISq5Z~oM4)-c zhrtJ^4>6`PoU>!?7Q}~C1@(|H6*&r#UWR~&1lh1s5tl{as|5>6))w%T-1H(m)O#?{ zGVIQ@hEm0%0A3JadKf6Q=0;#rlgJX_O8k7om_lhW8DQGde(fsSZ)^|laT-@fvrN-6 zyd)#2uK6prU=C`x@#kFi(Oe!C5h3d@6k4g-F*cBfRxG^z17b=R?I@tK`?-B(WV#L} z+1Z?tQMfi4G6vy-cFCQ4aCa^|>u11+QKV^$d7&WTMX13ZC{8w|QpSEnihzv1RTjub zt+So#W@GiWmps&N-iOJNrvl1JNvnJxc^ZBFA)ORo*JmeF>nUFS9PK5J8XnHsux%w6OVHw~V*#o@!VHPfab48F zS)i1%F1vee=YLl}=mOAM``e?~jsj5o?TfX4hT*eP?a^w?U{-dxDXd~#nFZ*gXQzQGJD(ss5 z5)bUXe(br#r}tyCfOPI_ygEuZ&6o7{RV>2kT^8h`bZ(KcLuTW&w1~w^EkwQ-325}5 z%01|AAunI!27hO3*3Z8T-*jnvwVBLb6SdIh4+lHg!m>Qzs*Go2D9|3g$Je-$ zK%(A=@s5lV(SBc9vjH*G5DUg(es=#Z$XL^Rfw{jQ#r*HGJz{Le$EzDdyh0JAEwJw@ zWcC`I22qQ5W~9H(!-cI6``5#QHC_Pi_b%z~L&qyX9h>8ssgkV1LL2gaqKRKb!$QF_ ztVNaTZO=N5`e>Cx<_`z@=l>r${dK<%mU|Ur*A@5BAiUz-S4WVnM~$c6gjJM!KPKu* zi&GMuJQ|W$LHZiGp<}?015TqF!q?F9wFAAQu{$g!wX%H;m zsjze}&cJJ*=^~j?m@5e)CF(sdX>lg~J5~@{@o4tr!SnY~2EbZ^ zouhiU^yNzF5+tQ^@VZ@yE6;xS%W(;=R%p^nwu~Cc9a%*RPJ~>$AKEqQ z6rYmWlHCI?zV;T6v1T87mg?$^0^ED+chCZ7zUK9G=KSt8Ei#+PZy{78W>L=|-F|sw z^r@Q-i{BL;KR=GH*Vb?>Y(YIEhniP**EoLNN2;lcM;%>pR6#u4Ys@7quzZXR>Mc8N z`7Za~`klm&%OU6Rh0knlzsBca7kla*4l0L^i-=@SNi@;^-ZwysD3$@6wGV+SP^J>V zQ&i@G5-b!oB)!npbn+hA2@uSEV>{wPdFQXE|6s7;g*jX{;S4bqipN5(5)=Mt@oPE6 zOP`TPtV;iL)_wsPsZzSn9^VC*yw1bn$*CqWoI;Zgo|eJ@@j2W#;W`W;O)*XGuR1+DeEG3vtJ{ov)>%kuFuvFau3h(T-6G~B=Ui##;*_4vIB=R1)FU&qOax!FbId4EuF83Cw0>oNb1O3kc@ zZV$H+?CGIwtCq?ZjH+>HR#(t^6bW8Se#*<`HO0ce@eJ~X@Q2=z&fK{h|KsnsuO?ofsSmKH-=#h$zxnf+|q zUdhCDMA4)OAm7p+5Y;&3B#1p?=Oy6lL8wrP<{)^2UXk18r1HqaO0eLxt)l})TEn$a zs$;tL4ZtIAf3+YCxo7*GvK$eFlCqXR6+U2RJ#4c1nwN?OZ5Bu@~v4gc+IH@TA?%zwXKu{M7t)(z??g;+`+Ex zcOvd+ZIDSzJgh;jVnu0c#T%s#okl$Z<78VWAZPU}3D8IAy1gbb916rvxu2gGcpG)PhN@X5p$`@;>4|B#| zB2UAGiHF=TzJ_Q%m&`3W^2IgoF&2_d5O>5Y)f*axR*aIWn}G{|Hao**)6;>0_yCtl z8;K~Y1+zBlpOW=C4Mqz-2-1^yX4MBFs!1}7{2P!s<#VY@}lzXLGGx zDI7LhB7FnCYfuX%G81bZ!DqfP z{7EOT05PNZ06LbVv{@+D=rU_XE!gr>@?ep{*sV-H!9yigL0~1GZ({}50DxjH zw{iCI29<)kP%ZylYX;&f_*4J^DxiY|#B&s@LT;`#6)zLt0YxKxObeIXF%2lcea7=> zRS<80>|kSflPHOI9KB~K(O#4XVoUx0+U$M{n;yv0*Yq??Xz9XoMe)YNUd#odjRUlX za_BGadOXHh^Pr^b!2mq+3g{ACn<@orDpG{7$qnG&BqisojNR)M{BtnmQKysGfc*U%rt$!$5<#mWAq3Gpi0y4EnS01GGH-^%V>T) zIQtbI+IKx(Dq;;HH9|ip`TTPZYBwi)f7*6*Xw_hDNt%VbJ5u6cY*up4hnkd*1fm^? z0!2!O;Wd;@#j>0RlLi2ymPxkV?yE5qbjt^`D}gLt@GL zXflQLVL$r_*F6FdYd4VyhH0uwOpwxmwP^#Y*#2u^`s(<5M00uKA%`}`iuGt(h=#&7 zn!Isf?+c_1CRjCjRLLETntF}w0|I1Z-n@Zc49 zP$<0oBWI#&xCekA`&;Kxok6YDj|w14l%;>pnhhkAQAoU)M^ABGcKdGLdar&pJQ_61 zT=U`UXU(w)?x?Eb)lxwept(rJOu6^U9Xxo&9sOCOP$$3ti(y4Ztll>2l4OLS7J%)* zB+ofb?v()s3`}Tq&KC+TEha)EKxg@z2dZL16^Z)a+UP4zxC!FYv6`JvPd`pUxM1rE zz_17IMFT2rWk|z-p~IA9aJW3Z^%ju@HAQ#UTu&ar;?MLE0{655DR*H?VCXOq&oL@d z+a&WH4;n#j?hWsrnH z#G*-9njp1WOQ9nOj)^O^Gu25IgiPMxtBB)PXhb-0-MyjUdB@MwRLgo+FcE^gXjD?! zf7J8V#?Bf(au-OU>&SdI&sjk|TcfqkEiz_&^qKuM2-W|>hV+ro_tG=SmDX!CL{vi= z-I-rhV_0DLwFfwG-F-9?XQ!ez@f>B7Q0ci^X1k^au_FPXu}oVV_oV_g^GQsT?jgNh zsYs#LI;!ivWUZ9=ST}F7_M3bISP?=2w&RwY5fNT-_UmcQlHivb_l~%lz`pX#-`zu^ z0DNt2sFthu$N%?opL?|TXn^-~V5EG*l{SOj?z#0lF~%D9=Apuw^!`sa?MVe+W-|7; zN8rS@)?TsN&GpJZG(ghIrVU#ZSBh_n41o-|G*{YUsFeuBlgdCET5FR9GhrExC|)!+ za24jibwzAcZ~b+I0Wd@?K+Nhb152Bm3==vUfT7nzcYvvk3_|)WkbW|)Z3akJ^p1L< z$<)9XzKn8oo0BIaRK+MJ45f_*mvz<(!GfwcUd{Zswu7b@a~Z_4;S**6>S!(wy=5vb zf7&tvX*Qz*osY6@$IR$7kc^@Y z5hWl2$Egce@~q-Ql{T6j5!XGM+u1NC55bZEJ~(c*Z*Z%0Y{_I%N{h%K7?35KL=#WR z4I3J)K~>qc_e)fqQ%-mN2cUyxpLV8|L~fCK}+ zj$Mb1;kzTdw{bV1BNe2Q)?jg198zQ|)pTu+T?H-NKl5dNwD-%XOktMKy&L;Uzr)3_ zs@d=#28&;(`et1>MZ0^ER8M-k~ELa6}~OQl6;y3C-%gS6&Y#=Hw|YGF)9O;7V$PLL?)jSm7@@~>iwU&199WD zbINt8g40?wQA}&vgH87RSA<#u*hPc`*WMpzmUp~_f*=xVmzWC50A+~Lh(67X3R{4! zECzgyLvtq93>8%FAvs?PBGA93Ki`!nmRA}UEJ zo-lwa>Db{7Ls}a3GdjsTO-r=55ML>;P2Fe0U;dI`T&mkgA0oJ~j>(gITqFru5< z1x`)!tJ}gPy+NxO^IyLLywJSuL+SlDL?{$53=`0p!P}xl?n}BW#sut6o6_aY_A~YgAUqYJ`A9s8dlN-vUDM1 zlU_t>hNOGGx0Q?Uh;Y91&wM`WL-6A;sZgBKdRW)DQT#rg$7f@U=YqrddiMc(cKe~9 zZ_i-Byp)snxr5xQp*)^}PFt4P_zkN1C-MwFLq zeP@JH=E1~lh&EGU7oY{VBO7%F!=B#uktVZIl_| zdQ`S>qvl6Nb&A>!5o!7i0a4*cv)A(D{a>Z%CZx_ID(Rsv6K?=?FMZLpInzy;AH;nV zqQTn5+f=j!;Nz+GlJpD?J1dR(pgIb~^(N+d(|KJ7QNX>#-XW83{)Ez}4Yq#K0Jryi zAp(e>`@widH7%Ze9;uOyhEHXK{Ae&{@9f1FthFNtUS&O%a9u*j_-Fgr0Z4h8Xt2ka zNF8Kem_iNU7jx{%Ymhx(2uw`{tu-y+CU1e&`LkQv`dF9Y(SX;cw+HRsQ#T9cqFH9P zw0JiErz*6XwU37SqZqWMX3Uh)n1v};5u`GC1xz;KgWM7dzx%h}j#D}9oLAF|FlY%7 z&*T2oL9KR+#*sfmI0W$8Na5b&{?1EX^O4RJS|cMa#wg}O(;CAfG!8qjxRqVoqxs=p z88D#L0Lmu4{EG=z3e+(DF%3npl}b}J61mi=9_PfyV7_#8wy1F=8NhU;Nr*MFn;)qd zp|iw5X|;kiN56)yAp}BWm=&}!%vvs;c^sqi&$pZ$Ym_w+BXEz|13~swVil|d=J`q;$#{IrSP zKA~K5EtzL39K8NM5aU^IKQ+|KHEco$DDzVL9Lyq3pLKe~&(Tm$jxuGFHNI%Ztu+IF zsq^@F_0?Uc*wLMci!_P- z<-52zQlfUoHRr`-pT8wR#Z3Z}x6Yp2C?d>zvuqBi@ed7<1VI~&IZE9`E%RW`rg!`^ zR4T)7T#e`uZ;jG~Po%h0RZ!~F>L9Mo00tKm*I?_XeE+~rm$RuDgSVW6*dX#B)WRFn zQz&QUX%(;?;4yx>LzZriOQopbts%`2432xtuQPc2Kf~%=1R~}fm$He*HBwjI;B7h+G<9&r~B+l9$1L7EI|mUuo1N^iS;57m`_e&$J-4wLz>5gcm) zrLH8z)R+48S_9%LhyVO%2q2j%V%D==JGF#b;V&&DWHDEdgNGg@aeTq9~%u(E5*hOWKyAEP6B@Q?b&3=^!XTKJV;5wgKIFh*u zHt_>czXpmE7Dfldz)LDr<3(HF!%I&5HQWv$45&U&qsL)31TAO{pu=m6G)k>O`e-(P zC>Xzcub~(e5==ugE1}C^nS2u@`dkfO!8C*XravER!|@-&HT{33%K-5VN9V`@hWo<* zt`Klqb?|T5Yd#WC*1bVp4vYs-Bqc3=N^Fn&uR&%$AIet|q)PfJS2n_zWSu55vbzWk zS`G2vmJiV!|G~6B5K2+Jt%!!*Ng5xawK8lJ9SThYr+)agfO7v8x5qw_qE|~x1xvQs z#53T;u@=0^yeetI8t%RF4shia=e-)&`G`oBK_A$vrBJ;+;{3Iv$kOQimSr94!7k(D zXhdBr)e;?xhH9hrr#FdPWlM(#k9 zGj!QsCeA<$^Hv#15dXZkkss!f2cjZOz3VidE6%~|9*Dow8cieA^ib#nq$m8WGwBJp z4vPvaswc1Cg_<(;?w`-S&}nO`=F||2F*_20x0^qU=aFrs`M$(8A8jr}OW3BNPI0Bp zu_`rk!RD^t#gjMeqGWbN?Q^i2V8>7T`F9pxUXh@w;w?y1z$?#v*UOlC=V=sg`&^T- z!3r>26{2nmKPrx6X{KFUGB>7THp*TL}767FgpsB}X&=kv8%lMUV_a zmu3n#LveQA`h9lZ`n~8UTh0$s0lWdof8k&*iFG_|JeJwWkLYpl z*5`hxIkgOd0YYK;^~*p6u0K6!~3PQh)MG{Z>)072A3l&Tec6QzOb&eYpJ%-}5_ zrP^FdHXCYb!J?7V1z&pt8d3|Wrv%Qp=**K*SGL{t({TFI3bl!S(pUtjPHF*UBttG~ zc_faP0hir1gQ#=C87HO3eW9iel1dG?(x>YIyrA&*Rp>yh(l;Ay3pgNv0g91ze*o?Tk;)Qi^J|{!ddS@zhF;z2Kz~5 z1qoO?YKZ87pUixbhi0!2mbn|E!5j*2Y)klP(qEdnWfqF3x(U&WRO7`byqA}3eJ|8G zV335!<8bDY?(8CtORC~b^PmT917+(611j2k4Fhi}63RhooED>T5Awx?!5%SBzxuF& zflx8Z%oS93%9am6QOs(DAhunA!BK87WB-kS>CtQ(Uw1{;wjI{x@r+wd^q$<~Al=yS z9sMafItO79(jc``_kE5syFDA-APi7#qXBAV(O67s18AutG&tT0rHLHBp$LO5AHuhO zkXE6o5*b3Kc+)j6!#ZW4*$Ao*je-fPbG-bVS0N7fU49#AD1%Eoh>Q_+tWG`z5_g)S zv~95WoUpbMYuL4Y2SUp$&ils*2Pw5uOR)XDI#QmVWr^hH$r69Co=ylo*6E8+Bu~E` zAtKZoYoMye7^wlraqs1S!>;Z3gyzAG)}!fbbx2b>-}FhNf5t!^cf+kvn_)NtSmo67 zUd^fJyb56sY!ft@ccM+`6Ri7qmvN|RZLL-a_UjlQ-SS;a)tby3Zc zq0%mEcL45wb{}%S;GI}_P2F`L>2ge+>VpUg_hI-4WESRM%s$Sg`}PFJAYmiBBDer8RV;nx?vw2hgfJQnC)Scpqy7L-6Dc_hD)r_s-KObuO?ASB4U_ z&C=PwKHVB*QM17o)?;f{5@#Ig0u)H(=o&c7o}Wb122L1wkb9&Wrkgl;{oNe6VOJ>V zO!K(sk&T8?t54nnF{lmw8eUOksvz|so8EOg$G!9C5gSr77ix&pRHaBmYhzYcxqo)c zxp~8xXa53t<<48a&nAsbAoDc7?6S8eJpUt*a9EGC@8U+xkv{KeuSHYI;qJMV7tD+)TJF5{``q=z?_e4=CAnUd&JJ@U zgrE~@Bvuf3b59m)<^$7g8OP0l8hsh6wKS z6JNre06)bB@&0DE#|39RFXnC+jB6Dup?XjetQuhwAHZH@C|N(2nsCaCPIz}TL1w>- zX@;UkG-Uc;PB;V=O&{>Ef2rD1JZ$ewogeSL4uF@O@K3V&!Pw-{r#bHz031=xrjY4=@2nf)BdrpU*WVFrL_@VEwJcG5Ahl@i|69^TY$f@@*0`NR0uUrWV6 zT&ELtVW<2+S_Vu}Ya6w2jl2+*2BBaAr=I&NIweSBQ;~__O7*${@=w4us+dv=)h+E! zw4c|zw%>z@@UnAXODz`pCMuM)usHJjwR~7^SB8WYYOl=DwR_i5AIqe2mREv^AKitx zhjl`mR%!DE@F{j(@dI{kzlUzOG*Q$uM7RWr!nI611QromkFZ-WPE*6$@09ai!>Q-K zGIHHIPw#wNTnn`t1DT@nu#NQ$3NK0YsuGrI=bv~y@De_~=TWLCp1$#BnUOVN3V@@T z$s7cpKEuT09Q;?)dk~BZPCPkkhpMQ@J6@mRR6WFMd7bP3rQXG7zV9dlz$}%-#c@~u zeD*Q^YI>%Vy@52TGU~>qqy;#C%uI8Pkc^hR%*I71l!p?a-bRt z&@xOSpQgf{+*4Yw9QTfwVqy%he*htxE1u*x$usk0U;iYgVQ8M!tQ1-rv{Vk<@DKn~ z?|fNUT8biG$IgpKQa~j*x`fq{k14|gXV9@M*tG$FRrC<6LpkIu9O{R-$0IjLg8lA& zevFATfBoGtc7@PK6-UhyJIQlmV@ItZSj#a9+$I{cC36c0?|KEtz5S)x^eb5P9t)}( zxej8Z=PF$zF$1r|8c8|*HE%*hxcipxMow;8L^?H3!IM4!2zUf?m+sw^La}&1@4n@` zxCv*z_Vu~m+t?g|rwdmun0wEZbh--9{FyX6mVN=6B(m0iKWH%S_}l-*J-2-~adFSa zH~riYYShdV-UA|rJ+e;KQ{91b)@y%>)6RZlIDd#E*{Ci3nynkcy?WvZs+B@_TnHRt z1P*xuV$EC6MH~)(>nco#5d>Dke=NG_Q4G5~jVneA6in8>L+oQOboWkoykN@%?(kbz zVk%7i%DFfVDlP7Z(@l*3{3h9@mW+pB5LGJ-q*D7&>NbzH^MLPub^wp@nFV9$B|Y$E z#LCE!zX*ps-2IUq!5a4}F#q-K)NfrGUhkzlWR)?vtmNEzni7I%@_fAmxGG9Rn?Cnq z6-f|ERd6dYH&LeE@?pwb&mB9QFgImP10{HwjLh&1A2doj-@;1@92%O?XFpH<-#*h?m63{L#hR%pHvX^ zNb30Sbxk7AzpI`Hzw}C{vtU}^L+|J_lL5yRE^PwDCBdq;54>LP{%Yo1bbh`j11{dN zn{7L1!{^sEZN)|s^Zw0|!P+1EdJk$%)~EIMbR%EtDZGisE>=1JtdlwajIESB{D6h* z*OTdzp77nK-xa~5+C9DG-5EH%c*}bL_|d-W`+uY2ktZT;hOtI5Y@I!j)fHK+J&jed zXJIRC)_0|U%vIo_yd&i^iO0*k?yfa4j@@ zKa2YS+5A4VG~h$fP(dx1CAI+c)yUZqslfo32-%K?tELjE-&xlX5mbvcI(D5nh*}a7 z9CZt(E*kkn>4SZ^`wInJsAg0eXbs=@1)6=I#WWjZQb*&Q2M2N1rTG!2L!nR{_xA4Q zoT%hnEV#9?_ig?lzV$;0^HBqK`vqiP5q zJ5wO(f3H8}=X%%K|8;Y)LqSz!?K1##ed#i-x?HMY0d{M^D5FZ!2I#Q&CxmZ$jnL%A z3-?@cdyd(m8oz?4-N-uX|5VT_y?R-sBw-`w*pxKAZIMgMDd)a2=WJ&O7k6B;7SS5D zTvy8oWrPEDU}_%Y#FdLqcn;1Av*8!L8+rzfmnNSwEW;xkq!9~iOAnVffS+H+)YfWM+ zh~wS{fr-dDbrF8!#FMz_gy*Cxnw-m{T3i=E6pC2hkB?W?-sb@w|MpWjfbhiEcA?r} z)>0IPVl*}EQYFtQof^p0)@hF%oxvRGA9E9Yeh}lS8+U;S&wAS_xz9)aTr&Gg{ZOSu zWSoE{;~PtYkOt6h8icuCX(V9}hOQwaNX4qvjG-K5IEGzw6K7s2S$}4>L1teqcYh&% zjr$zegAg8Lo=C^uV%=DFQs_OM~V4 zd#&rAl52&Ges3(R=APSbM$|du>^H=^sA2!9UEU`)!T`qcfbQK@L28`y``XzTwqb)A zq_Eb6IM;=rnGlJjGhx(pj+bVv{yfb6Nt_XjHem;fao4RkNAsh@kjJo*evB#W;(Suv zXwh7EyjT20!#b`_eQRAVkpjWZ$2lz-Sr6f7eCh$w6||; zXZX!4!}HE%;tHRFV2y(nDz#^GQ5q^v<6!1tgT(;(l@C$ga!xMBNA`G@BOrLKD=N-~ zXZ{RY2V8RZV=09OshOYR!Ta-m6D(noQ7n`=6Z{IRH@Nh!-H19Dp8mX)v3EiDk`0^| zmsA9JjbB^EnW73@dgtR@wsU$EerI7RBi<>b`b~FD6;R_1kO-|Th$Z{Ug-dr#<0kyp zStnC`Dw~(f-=Ab?W`N?(B|9JI(!2IVW<;`JC%S&6Z52v3nj`Cl*aw4+T*!PE=YrE; z!1-sM5YWAbr|}9`f5eR!Z+RDj^U&g{|RBCcVj`{d{FeOLF4{z)^oPEg_H=biyI=E-62&mu>WQW#j_uI;z5Yx_=MV}w442+TV^fX0kg z8l<)~CH(6f8PIx*GKEt)<=j{1Tn$o&ueAQoOqq{wJ()(}Q?s){f}&DvDo7AwBWo0? z2~NcIOgbYklGQc=p?0ikhHBX}ulQ(JG5_4Z2Wx zMQY)x8}H%3*YAs|E;8!o4o9nS2j{ld6NfWlO7ze(74`4j!ZLdH}4aMVO?yrh7 zkU`pBIZxg2AWwb$!I)niPB7UWARG%i^+ncejfPrdkd0?4;d=4hcf5?}yyFzygd(-~6K4QYxa*diQHPhm=8aTu8Hh4; zdK0X0eaL^)-$&X!x0M~Y{x5di_WeY9J12z(#?H@O_T<{m{l)5!(KUz*x8M4Gs!Lcu zX<6`Zm%6_eVIacLTa?1xw|twsZoL_mL0DW)_^V0@QqwrO!a+rGk0x`ife9;c>Z@MQ zX=lG4t#wULVt;=cARYLIGWEufGH*`%?d_nE38Kk@cMoeJB@2fPC7-lMT5L&1qcHc) z%NYQJx15*tQv{*Lc~}>25S_J?HypU>a@w1&1~D3mnolH@ATp*SNssEawZK}i7=(AP zB*@t)v>3yiuEqtX-hAGOp|ITjSw*swKm5k!48M7K9B7%iy=^X0j(8b$-65@PqV%Xz zps7@h=8Yd_>Wv>Ac_G&_rf6EGKsv$!T|I(POLZ{_WsP<-eVKiPL(+~?+Z_O@2b-XGBrgocOr zew82X`!bTjR@$-XCJus;p>0_*NwAPZm8fCKVspH7>p$Ve$G;cM1LXHH&zR*W$l?Fk zw9mUKTR(&`!1rE5u~Y)qw8u;P2+?lE7%XJQP6_}><(G)So-bhT=#~!xZOEfaiA*dV zsaQR&&d{jqWae|ozQ2xHqeHL(YThd&{Ad!H*I*y$l$L6dVWX+!)4hKk3g4|CNGsRn z?~iIoX``|K#5KtDUn3=+U5wpi*MIY=tSi&n%$jI|lMV4kkv6lvHh+Y&^?kS(dQqON zcmgHBAiVs%SECraw(m$aZse%BlXd_#7?1AAAeB%PUOQaV!o-vxUA_}gPCfTkh?bnb zosWO0*7KzYnkePn+4Vnnvg?XF@uCzjN%|^bJ;$(D!>u2vZMipt=>Wy35|%bqVAub= zlhO(=JMWb_cb30DF~>`&2JhK^8$Y^yXJo4NO6y5KK*t9oUvt5rMCh@IWVm+&GSAD- zIg?Y)dv#?`_+?|U~+!~6x!`xq?L?(*Br)H+PbnpJyFTLFm!SAtsrCp_k9cfJk zvzlX4Q^h>w{1Z;#V_Qz{jg5uD5$C_ik*ZUlvM`!`xqFKvk>=2XENL!5i*Jy-BiQ zyQKBkdVjUz(eOz7;yBaSKEq42K^-=|{UvOA=P9&ap$XNXtPqe;3@;68!kMr6WkiH~ zZo8RM0_XHajir)}$?9!lKof2Ny5h7HQFh+;{Zt72B5j6X`vTS15@%sCcHI6q+a3Db*IuM=zlZ? zpd0~oY^WZ5c1QWxSz9n|xn$=|EW%#VR3K0!Sg~ROSZnxdPr8Cutzlc@&ZRpe82!T2 zo{uvZ3JQt*kWLNL{krqF9;VVGoMb$e=#qAL&4Q-KdW0a3gJ7Q5pkyPbiD}1*dQ2V`pwjc4rjn zr8Gwd@Q%2_hc!SW4d(N_aPxZs;YWMF9LgFo#HM0R^01|AN`{j9Mh&IDOuQ2vluj;Z?_(O8hDJhcQNC+A6HsgmD#9U-+5X zrw%}jDMaTZpi{PzejIC$5gMDFrJPsb#_aP3o&=@Pm+ScCEN5RtrsOGKhJI zZ2kyr{WbcYn+!*Q_ll}#kA|-i*$N*$3vuP1?RPRTp_R0Wv9JTIWq{hSZ-(f^%byxV z4ISc4@!)6fqEI;H+*e{6-pRpY*O6s{YR_!9;-U6Xpr*xFT4Ojv7Wcc?k^r(eizF0E zbCJmvXAeqVw~JvV?PCvje;Ppct}E{3!Oz^4fqC=M;LXghNdx%B!q(1oK&eAK8*hl^ z9IU+JBWLllkDeL#CgW?X4#Qux(~ZM&OVB<|FYosw06KAR4tgdpoQXkNQQ#117mLV z89G+qHB<%n7PO&cb4;paQ2Fxr2TtRKKi{_}#s&qQ58KQQAOUnCLU%)QLsds4R5%n% zg@5Jz6HbV^=}z@RBgSx*LV8P$(BH=4S?_oSxNz|6KMG6fBoYZu!D-zPZD^{eLVv>R zfA@bHZXoktzaJ6dIdA=W+?-ZAHMOK&9{n2M;uI-K<_b&5*fXMRY9#dIlFc|@Crh+0 zd&IMe(Rwsw9H&?l>RwflLK`jFW$#Z7M1=!4?qdGy_eVX{{Uw<+{V(>s#saB!YiT5~ zpSU(dGzdJK-ue=r^^TWQEG&bH9o^CWNV}U6R-+}~qtjpedYsDrw|#%q{7sdKh)1?& zA^i_F!1#&xb448P`P=V+7_WHs>%&s1tKGeh86;bOUMv=w7=eL~8gFjeI}eUyY3rqc z8h;g=rU<`GLQo=60vv@juMSX+=l0}oL%m=%a!i8r& z4@bFl$L>(2lxPIf8rCSZ3XLPRCVP021w?oQVuBaNt#a`lGl273r$3L9p?E4IbTt|V z0cic@&OLnk&fUp|4CYZZ&MGp-Mm2ox^G?RRm9^W{)BDuDjDdbbK7HqI3c^LFpLE#! zt0G*w^HDCoV>aeYDPW!rBb)s5t2LS+tzeBnYfz-0b7Ga>I`d>MJnN*OGI>qlV=BC= zk2JrJ0s>Qw&|A?d+*)3^`8|O1VO|V z@g)FWvgKXWWRBpYNKo_4hH&`FzOVAg-s=znm68qCF8gTYxvp;O5-KK=!PouM>wIiI zqARnodt~o*DCDzR{{B>qAMd@6A3yOWRHwoRTLic4Bu@DG#T=@1p6%Tn)6RNIoEL3= zZ#F+#M5iL4SwkYc(yNa{?I3K=a<7-I@57`;_k9tn(GLx?oHpn(wd8UQOBe1uWGdO6PxXc+*FX92JX0gtJ=ORIu)uP~ zN?}k7RfeDg?*Ghfn9uX_^IjVOo=PfuvxXS^y$3#X7rQRMD^zG2fMPMFH3SvEz$O~Q;qEmd!YU68F(+-9`9GCfL5i+e!PRJh2}q^&pv--I^Yc)Ii)Z&HKGG)m zqR}ifU64pK*#i`*1{3%73N!p$cmUKx4>gPX_PJre)!hzIk@2C6t+ZsL(GsMile2#d6#17Euzcjx%Gy(}6=BB7$|A`d(gN7bDtzJ4zU zZoD_z94b-!)Rs~_*M&}(Au=1x&haJ0d6h`aN|jdxQqp7Yk19rpfI zg#9<}V*Z9*3ccpVA-*MU{Cs23{DdQe3IDJp1jZ@~pR?idv|@|%-?i%c2R5EPB*yDhi52~9rIXl*UbWJ>@&MyB046v zv|&poFn80{OeG6;x%+d0`J1ndAi)|LF76%U$I%HlK_r0|PdkMoP~GvyC??3Se3+>> zo{NcPv!Vnz?#j{FS01qdG;nGAfcWB(A$#GOKNE+boiouOQJ~3Hv&4esvJOpwBQBs3 z09+iZ<%zk#wmYZOQ$L>X$Im#q@7@dWmpgX@u z;LMXa|IFv1!&slHbj;;8G75ZU3Mev6vP!TfN-2m5FWmAr5aZ!}*I~rj)9O5`X{|t_ zqb`$QKg6L7ptfP>LgCRTz83eMES48;ei!3r4nNsmLHa#SqZyGT z!w6KCwavh>PHx{36m`@H@nC~=K+MDYuI+Q9mb*WU7z?7&(1`Xxf{e@rC-?xvb6+y_ z#(bXA1fJI*{M_bu^1{t;i$-oKeTf@Ep-0hxJCZ=kg9%!FNYMtV;hnErJ{Wt<{?DQo z{`z4W)}#~2pi_iSc>XsT*j%vMVyZME`1I!kNXbSp$G^XC_KF*_|MPK}*!$NxyMhJj z(&BayWD}*e1@?y{BFLInbPEnZr7aQu=LbV^>4Rwc=e74Lj%Dr-b(r}gs_E!m9nIVy z>1lK2N1yG1}UpHkfFpn@`*A+X{G9<3|W#^nVmId<5Z>8!E^-hy0)frKPQ?1)-vLsg>X1{ z6?2~Twx1uvI*hp+?#ER)c;k;y3A;nFu!V}u)Pk2T_o>T)m34WaM;1U5WL0YdsK5|5 z;iX00IC$faBAfOw_Xi$hp(R7R8L5RggoU4A*{Da9fd>O#30u==|H`Qx|F)MgWQeAl zMWJ9_7TJ+3o{y%6aLHz(q82~%w6h}^{qEbok7OXV_07V_qY#y`AnwT_2qF@S0D}0S z2s>{3evrBminpA4_AigdO5mPbze|;dyKnz4Mbpl=&tXjKvCfWoowGh8yI6V%z2-HI zh#^W5<<8r`ORLRc?@w{=y6yXsZ3SVi?2KjROnCj$L0CHX4OUCHlgM#A?bW{+bFqe9 zmWfhCXf3UyH+Xwt!#6;r16jOAu(@}BYew_tb7@ihoBt0|rf^qkX(?_C*wzz${Z%l_ z!>kOTF@`lV8u-?BS|P&f7Ie#$_NFTk3aXvai6As#2jPPV8J7MC72oUO8Li_RU??IQ zcboxMD#ZpMEfo)cyKiql?ERJOQ4P%kT=fA$Fs)omc&JYD`K9HT7Nd$%a z(Y*O15k~Jy$3~*0?M|#e%gnws|~^qD^Mpk zgoe~ZI*klN-s50exa97=fh1;E*>bQ{oNagQ$qbApfnUIeVYwugOdft3WyI=&VBI_p z)W1!-ipDi&w?MpM+s-|Qy+1_bK$ntjbV&7PeF9C6@_moF)Y)DQlXYiYc>2$9!RcFZ zAI1SU?XN=Y;`#hmzJa?$UJSIDNj8KBym-s6A~Za__se)yR3#5X^BGRo1tCsy{PJD2 zVMs!qPy|}#;r(C9QaXV4?toxoJhJcli1iW8hH^@YQ)$sxQj#hV(LSJTEnnrn(Vm}K z#ynU%-}dnMiEDpk@3n`$KPQ3$ih3$#!oD*0v&maPNOq{4mcmr9u&bj~es0UJ@}e#8 z!acmO-8^mXN;EH5XVNsq}h> zLQOlMfzI>Nb6(3S=ba87_HbG}!aqwiqRUa#|3|auHa1|$FvdxO*KT6`_LeQEDHrd5 zjB1yAs4*>}RW*?qYNmb3)SdR|&CncW|52d;Q#yqOPr5XL>J zxMQ|g>lcD9i;enEUHg?Qwri?)9BT;^fr}hNaSM{2fqS=eY3r z=X24Pbw2+N#lBzIwBW!w;5QzKbv-#WjetoTb$1i$VkfL+#l{;GwuS^K zH|Xqs;@NrTbBRcv$=kTrD1({%`U8i*Kd-0?CA~`vl4m#D5Ef4A&}hLkq`j6+!iFuZyrS7tQOr;Gsz=U)<=h)3^yP#@lR-I$Kod+e}K5vIa1R~l4mpZ7!tD~qSk@EYH2&sdZ0^Aey> zRfvmX6vSIp21p(R4tIYp(a;ItH1>FvP)k-Xs7{{2lt&IkELxjlyzuyc!V5OPJEKr) zG;xu#zKZ7&G1kQzAGi5~Y(l9|d={-nDH@F!X|P%+KL0zbKXHvC zng^H_%t*;=1=;)g1=GXP{I_$6H%Y$r%(V*Z%r@(fNq)721%%WfY;=rYaRHf&yr;w7 z-yi_uw0>|T=aS&I0oJdYHgGn~=7(WL*!0{F;+x-(cpI4rN%|nQ$>EQ^azakz#MEd8 zmjGE*rB|Vx^3gMKfd{tVg1S-(o0b6XHinNti!;yxHA!6VLW}nYN)zLOD|Q@;oB?Vz zY(C9nd@VADLfk&gy>4NRvR?I1D9&5l2dGSe%_A~E(&9?2CM$6H`>Xk0HwoHD^J+j# z-4M^t)fuLu@1)gdoA=e3-2-kF(q6Pg^ahL?`H8KjVvg4phPj*#d)hRI%>i@XXK zZQTMYT)c009OpBy&AK$mNgsj7&mSe~<;e3HuXmko`}Qsf^Nm`*WZsj8)v0;rKm|zZ z%*C0av*lU0YG4d-E5l&DQxOS8qiFz_k{K+AyT2d`m1tJwS*LfhmJ-Czi6X!Of+hNr zYW$W9H~%abZQhKV<0b8|u?)5@y&c|4YtqsRZAtP^5@ZZ$Bv$(8yzQlk2nTPxzoX&A zHKzi_CX63c6{HnZohnZ3kZnA3^&m+q%zb^=SV(yC89gwr+9+NfE6})NHPkIdrl{0x zL}a^a4Yxe&>~Cdsuo^HG1UL(;;#NGl9!jZE&m8XlOiR={5;<=%MuM482TWYSpk7ja z8g#9gea3Nbe>u;7>q{_JsSE6R5BbdRxw|@VS#*ZXK-C2AUFSuH&%Q9ag&!ntl2F|zw zq-)Zd8AU>+6^eBmUHjqgPdqclWMMm{)(oug?C*p#U;PW5_NrgPT&NP{ z>(0>!_iW&7j2iBkZh*wWIS1aQFF|U)+%B-`P3JOn7=C+u`0j~@4<(W$(oUeQ6bjyN z)$1_1as##uj_P8;Rea1xokiEO)bDA^+(mI)jhs33Wy(fxYt_gsB+B<|#aT}N8S^EcKo1iky&T1G%t=Zl)xT6NJe zX^DGT_5cLHwO|^moN$Y$fxAwtff&M1#RR0g43Oi{iERhVD{8pZh_4>xU59U@ud822LCd z+XX@KM^hgk^*d60R7;5ACY*BKX$UP3Tz)$Zh1Q*cm#D##ZQlErck_+_7uR}!jX>9A zF?Mr53_Xv!Ih4k;(O5w9zbu$D-TJ$xv~dr<_V@?5DKNG#<+Y8j`3M%6{X5|a0*uB= zp2iqG^YdkZG<|jHV}Yg`wZp&*ZNKMLUUu%Qc-eWUjV$cCHNPw|Usnjg_U}|vlu54#^;Ty%kE5Y+*?lp zgahBWKd}eR?4A~-!K_V7nLO)z{=FbvxC*+483?Lc`w(ggi+Q8XIV5R7Ds)^R(-8r7x%*3lydGQXPkUvgIA7Za zhxQpQot>{pKdPaW1j00`|i;`*AZ4|T@QAwmhSDK`!oI;TR^A7 z#prC9|2s)<3klnHR3o&M(TB+TuosG0oKsbUj2RNfm_t#?hh=fT_XeDP_Al}BSN&4@ z`uM^*xeo8_->C-3$~Va<<~F_goUmcJX?p}D*N`ZfG=W{<6f0DQ0Rl@0`WeUamya#l zus#;3vCufKx|We6>(=~mskj%+hZF{pJwo_w3N2!Sm+75%#~-zR2sH_6XlJpe4#8Y-gz_65LVm%SAX<)7R9UVe7-+xy0WPI&$A!SpR3 zh=$aYpGVpNq(fa%sMgYmMzL$@i|7&x75;9l|D!r`Em;$4U8cd`m3^QvmXl->(sh(- zMkB!}7gcBlO2wY@ess$R61JFpR->qc7hZAht5H|(+kOWnj;YzRtY{I26&h(GP*jyV zUnz|o^Rs_7Sk}klXRjhcLv1TM1!@*Klio5Y34&1~lMtsWoO;gLoOi(R2BJJzh@$&T%VrsdhC8xF^UNDVoZ7DvpAt;jzDeA5#CX z?`IwB<7X&Z2Gm-^TD-H~(jY!HqT$ek;{vC>`t_W4)-T~6nK#G!SF;fw!O9lpVCkD^ zuLSXLUqRbASTL7^xi1l}#tfk%LIv$`yw(Mfz<0mz{ z%$89ziZ_*kfxPit25&l-wwH3QLIY@p8>n`mojK>fato+)@y^{n6U=?kd(BE!Tx;*i zOO=U-jIFpRlfR#zy=wEnMple>?5bA7c1#VoK{Se!>2Tp`&*S_vwjkBR7R$zbjVD$B z2GdtfdBNuQ0`SQGzs8Ax%*ajfv=WnGby}q<8g3DKYy+8sW&n2Am|p7)1kVhXWVOpN zz6Y343RJ5h?CO*s()P^pIA+ZAg5%%E3pT$u1D50PY!gNRM*K}jPy9dxFYf*8VDl6Q z8=@Nd0hplU0RG>B1#A-bpBv$`S8Wd)lisUaPtR1x{{eLC`x6*mrMa`h z`p43dxT^5;A3Y1`?3M(hMJY%MSj53xk=AGi4PNco2LLA6g&K1*Jcj4L(+m`E+q6xF zMir?k`Xe)!5KcYkOn&~OXHheQ!d)j00J;lOgi6Z=&wVaNW!vm*S`~Flv?-ucqy$@8 z1XJ(g`TkCTUn8r@wY;HD#-d3MI`*63k}kc`7z=-l>IO{p3fEwdSI*yh0v9~@xm0a? z#92tl*{60>{1e=W!F}zWt-HVWBf%O}jx+jIeVVn$e)g{QU1|n7)ogR2R!2 z@ME6;gt{=qD2Zfzx003t-NDJN_5N zJoAVOmM^Mic(|%kYeiEb{tsV&kH5OPkRdISVgcOI%DQTh^Lf1ujasD6PMiQE1vf!8 zyp}IGeJkQ{@jZ`+Pp(9cglhm|OBmreeO&H}MdiAQ;uimO^8|=2bx~l7y zyZu~XS9x_+SFN{R8%Y>5+Eo~d!Pqrf8;io4XdX!_g?m!?aX}Ac626YE_nC_3J}!YVUtUqq2dSU~2Ul z0}1RJ#;oF_e|!lqE|Ia7`V?VB00_ht@hXogO?X(DhS!GGX87FekkvQFyJ8O78;a_; z8c51`5t1})zI7WS!goIKm5_=hSkmH#xS`q_P8zlX(2t8*cnQIlnE|W5NU~vt%wI_2 zq-d5|>F=3VG}-8J#?9xm>6UXzW)#b4^6L9G;P=;sju^!vm%U@vDoo(rd-jHOQ8lB- zC0Hw>ed!z|tq2Bx%WOe(*_#p~y5Rj+eN0CC1*k9%agZF%4^dn)Zigek1a4ouhCAj~ zg~XL*k~Z{Q2X0d>-k$HFjyUzIGZ7IE{N+Q7B*SZ*;K2;ZE+K_30UjFtGc4o-m)`?$ z0W8se=I9TlQyT+~IGrjjj!1P|iZ^`f<(rs%LQo^{b>0DR~E z&-G2%!>>`Rgm2_+Nvp5Uh~MGuI)pdJ@}9>n7!IwHb3?KRmYhFn$m93rd#eOi%lN|K zjIEc&-ZJ_&6K?k7GS?$E@~9tQt>&0oD@au6zWg@k#c4kEN2nO?ooc2FofOJtLZ-CT zwh=!7j>XSDTBAroD~i373XMzk>I?ZOL&z`t`*dG+8+e1c^nF(t1_V_NLR}iXCs>Bt zx30lOx%1mkga)cMVWwV;CQ~Jk3^Bu30FABcvW4m7G8TYcJqp16wO;`R01p#AOlh*A z#W7VpHK=Ed!mgK`%>30iMA_KL*+izH56buA~) zUW55ON#dOlNt7d9X$E%wyMUxH2lwRYnj6BmWdFTk8lA$J&pe~mtWIe#UjZFJ7BxQt zvbUTWP+x0wr6@;=L#Rb-ZGPln!zKyukEAg3`nsnoV=#qh!Z5_nfq-lvYk-@qVdG8P z0Oh;y|LZV{l^z`zdg^2|3=J2Kl~DY8UJR#AY`keJ$(%+rDg|k*7MKP*0Ua@{fTsdQ@g(e?T}}4HyY@T-n!yhPDSRirM?x#g zUswq!5UDu-s9P?#27F7p(!K}e=ob(?_5{5Eceuo!(Ttn1d-YmwpPj`;@lvG_3v`nG zTs~*ZJ(7j_wrezJr~cj+RF!>y@mwEH^%t)V|xfjkzoCGO2H+V zaV05Q1k=LoD^6$PzuN>3r51;?$@2Th{9HeOs_d;OOyh}{T<}sPDGz-0v(@*b0v2nt zv-LRX$IK(WelRE$riiQr3T$kH>XGCqZk7Gy0g^uR{3|$f+vW9ZBkPU&=U4)3@au;n z7Id!Gl+H_G>dKp$N9q05he86#jHE%8H42_3%zIbB4cPBQYO7DR`~`rO(EV)B|B@ZC zkTgl^)Y}A1n7C>?-7B}#cnJg0)=;w;u1CQ`W{JyXRnAIKq+_I#z@6K-uEnI`?r-jC zuL(@U_>*eX#YzeP2BAZuD1B$Nmj!DLo_6SG<;50 zgogj(WaLHstd-&c;_jF%+7klFLk_VdM`mw8SG_*uAxt3`%%Wiu=&vQ3Jo{3Ae!&xX z(?gO|Jb^ZxvHe`Y_}&M;ij;&SbZ96w>@f=2(ohsJmb@Q*aGy8oIe>a-ylXWm?vyA8 z3yy1#({DMSGq#^gPYT5{LW4C8k}?z-I0>c*lpG!{Xq@JX;r~%gKr$vqHlb8?j9qKivSV&FE=?4?QiF)o z)IB%o6w(D63MqAHtXDxm#`NFWgbN({^Y4*7m^)tO!p%zLGDDTWyx`L~Y-#FqFMDiS zl@|J+Ir1ieMnW+wh*tjt39lH`nfW`XGyRH9lqwNzI5~A_O893C{{B($2 z>}^+o7aq9(3nA$)9%@$#<`y0gE5HM}U&Qkl_njN{#?ivvnLsUSB+@oN+UA&Y=C(^Y zds`Tui+gy6s8Wi(Xh!YJIYz$$q7HPb)_W64oJR33y?i^SLhmm>fTV<5!Zgre)*juX z-T|%Xcf?;b4S2ND>hRI0(8UpeiqI2Bt%IZzJ^`<|nRL~gu!{B%*_;Nm3>pFAQZK-z z7H*0rQYpdY@QjO-Qc&97de-p>9q#(}6LC<9fmKfsOL&sLq}S+%e`#PLSnIPg+UIAA zJ4_2$4rvn)()iA^PT-ESR$&;LonjJlYGUAqX(HQT_rESG;Dc`+-o^y z?rKCFGw*ASOErSjqtQTEask+@R(-BNo1t_7Lso4^MVa4s4_youH@|ux$(!(U z5UC0XZN9v6&a!xx)GXikkMG^)e=A|Md!XGD)e3|nnX}Kkh%?W-BI+fcu_~Eq1}U|^ zTVoH90T(bl5_*pUhT&DB2#PopS8b1L@-IJ#&>-X*_{odkI9!hBr-i*pTg+Qt50FKN z_QGe6_WU`5NuZg9!(dA1GB*Bs@)&-inbx8IPrGz!I8{UJcK^gS)fytmC=;oSC=`tACPK6g*Zy zQ{8(@YXB|v_)wyl+vWjoiKJkqK_qd?+^Yci;ogs7cxeCj&8VC5of8PmfEx7>>6f2-m z$dLy~1xC2D`Q~#Fj7L87Rq#xaUPX+9Xju_jW*QKM8qY3gtbF8Wu7nmyG=shG=$^d; z+OT2!1#G(coZ93IV_bKqNO&kwQRIV;AY6jkt=oV?3v5*Z&60#cF3(0{Y9;r&1&`P&i1AX6@0thBugo0bbld<*b`(V|WtOg4W;H^H+(pg7AYF1(Vz; z$~Tw_c^LyX6`@fH)7a{jG5lvk_`Nu}215&Ltq76thnb<7At@uX*Td}Vk;;8$C5Ba}qr1+6c&xYAJi&4geG+VeOM z!&t!dK9X77Fv-iim%Ig7YW?ito*%_=QHpziZ8Hn`i@A{qv+#saq{o(<&STRpTcbGU z0j`t9`?WrE8G-_MG~)|`w$WUD4Pu|;!X2wtAtKzp_ZdXm=0~c{4+VkbLWypFl?F;j z+;zkI0z?6`T_9!o;va1-kSoiWR#JGlD+B!)vCR_~);hotLW(^>#=UU++*)?e&Ec)% zN%aYdXehKFV$TiF{lEAQkh&&P@2!bftjE?iTaUv zA*l~NNLJiyZr3GK=+RlW{U7=;;S-6^M}9cu4L}v6m{hM{L;6xzvE~L96z8CdSJ|sG z&$}YLKHUDsGjPg~{|As)>S52*i;P&|KD z0wkCeMC0%h5&P6Fr@Z@Uf6k|FIpy6!fz(<+FC)?YH;J`$lZtScSnCAE3$7vMpehJT z=c+d`an&19b2=*k9AW~fv-8X~>^$QnNKGv|1Y<;4B%7lWNs$0WqHsR+6`tC#v9LcE zlF2{)z(FiMWXbj98$y1GfraXnQK6O zMHu}?l5d={`f5&|yP8xle^o%5KtPCLMWab77J02ptZ)6jVg5%YN5j6}=I^@ahgDC(m8YDXXsrY(=1BJp~$=*&AWzwF`S& z1u0J0fGQ$kl8c4Ct9V*4#~$K;L{dGglw^ualkfZ3)_-@j=kdOeZT)vHO-`nfNUK-c z_;AmUR=|o<*H#vOZo`q{_1>@V$jobD_D0-$QRo=?1gAkv*nHDAPTziB$i&eJ4-ija z!IUcAkn5e;5wJ>yY2^-v_8$+=7R5lq>*04!{H6CC?Ros26MyMF2?yz*gn_U)Lq9*Q zMtVo0C6Ez{H<8#|?13nEc5oL?-+msOZ`y{K)bnro^S9;vr)_HQo?FcwtBw7v)0 zscRc+EmG>*%Yux!z#XfPXZPIdxD$jI;r(3x1X#Sw?3J6Ce#MrEc9Kvih;#z@m~s?; zMM>2MtD}OC0L9r;_?C(*mZF*UXK#4tuOIEt`Lj2?^VfwGpW#YU4+-sIpC9qMmH`Gu zDnlscSbOPEC}@gG$n-0=Fni@D#Jekk9U4u7!Wr9M%IW7_S?`><*}?+I7$vp z-4g((pLZo^Y_<(twLHe;?Akb!Su>%y2yKtHJe-p_;6UDH*zO{$D zzWsDHLr;MoR10K-OEgBb{@PoKm0>P$Yxq|nuzwHo$#7@{(CD6z!sP>t;dNRX^uV$O(3aej?e5Z zeD|>)9kG9Jp6ucqzWV<>8sGm*_n!A}Rf_gp|H0|&I;@?GJv0gokOjTx>e=JgM?Wt7 zUKD+pxdB;qeQ;z&@X{=Mk?M&row~dUARe0U6ddKz4}67(Kk#+TBaszJ{rF$3vU|i( z&5;8PyT-AUST9%h`W~Ka_E1v#eRcTdAO6x15kyGbgJ<8iZ0= z)k9nWz)@Aqnktv0xGu#1?j<~Aq_FYkt*pQKd;$xe`g>Jx{}9-zSm&xH#EgcjFC5Ezd2X3Eh~bu^5$f>muYQ*AeEkckdB4Hwl|_+6!%JC|Vk|Uy zhdRLvFk5kF{?H+wd}cp}|C*}WKY7RR{mY~A5x?>FJATE?RFU62VeJgv$w`t(|FegE ze%!sXJnGuIEdV6kYbi)LW9y~7MV43s#Q#PD2;PZ396@L5nr0Fv?3vgdh-X;$pj^12cL$g z9|P;&BQ$3J{H8Z7DS-NCAN;VB6`jA4?3@Sl3WQkm_?DH1QmM zFeZ?kou{v6*V)HmD7r`+dbtZ=7a#Y)GVgyuTUMVKqFsLY+$VT^?NU8{hvBU{=4sg*V5@w7d5=eGQ`<7GAqnSu{uuUu zxW8|jqT~d4_0vgVcic8chPwc;;G^XN&pzAm&|?jS^6y22ORxXh|6?iN{|g^I_usiY ziS!RPt;?)gllzSD#h*RA7l2f0SdTupI!K}^kdrOE$1`t0R=+-qMW&!p{9JAcoF~6@ z^720ZB6$>*LX(U~|KNTe`p~!Hy!Vi_#JnoUNtgn+5=ldUzJ(lHqQQWD9N@`jFYe`i zSQsB3GL6`{o=&y&Qa z?Psz6&D+RDa82;+9^~;Kki7hHBPILwzp$hxhKSef=dQJTzw&7$LuV3%*|D2>x5U}+;SIyU-r=c<$wG|g+A0d^yd$8;4dF0 z3sus~`fR#+j7%^lgY7@$@lQ3rZcRX*nSYKS?t2n*`CkO%?|%60|Ho3k|9^eMJAU0! zRQ!KGdG-X>c2~6@9AJTA_rcLt=2d7Ybcu$qdn<(LG!D}*-xz)|CPy>|mU}FB1EdAJ zB&RP8{p~M*jt9T~g(JSkB?Twgz50pBNMv^wZTtE^&VhqHp4hVo;8(@rpZxZ_med6K zjbGmVD>cUdtrJ(TW_qgASJ61)vxmAm5H+9H@Z4AcgSTVL)=PQG1(!!0Oq2#&P~38k zaRcN*AJ$pOsE3AhAcGQOvh2a{(c9z|IZd(Snf zbGM4{LYW|+xn5CtpuWTlMHDp;t>mg_+_~yaq$_Vl zDHK!r$81GKa~X`RWidHhb%CC9kTkyU_zOOHo}WE zp8CQ`%YXJGG%5Cf#wnsa^1i?3p$~ndN&q-XBI!$I!5<}lf4J{}C|-orlUl(A_S*q| zXnS$7KgcfpqbJ_+f|?+|d*a*Q(}*LkZ$4S)n9=Eq7HsvTeduLyi+go4iUMd!)fdeP zIV^!q+s|RctrwEqXu=SKTq-JjnV;_~mz=Q7^*=|7Ft3ifqH37I-TU`)=bq;ld@Nj} z=v!GYCczvSb`J!KK~lsLXfMvNXP<)~{0O)CkAmYj{{0u!1d)6Go|kA%}vnXMR7A?Ee9H_t%m) z`u9Hk%P*)2@?YNY+rM5U8#4c!8)i;nb$2GbG&G_Lv5-R_?)j0Zfnfaxm=|iTFMxj2 zuh>H8WgAJNG(>!yExu;CbHJyk_bhkytLCy!67K^#zVo#&@}2uXhqT@g?)`#(G=JK4 z9d-tkQzZ34*@$sq{~?}uc0VHX|BI8G|Mi_OtO@cj-nRQ!geJRp|MwHu%rHGOS?eeP zHcwuL-UFoXizh$6#+czEoU!e4&N%myx?7Cm3-X~XbAxBx09ob+NF+5C&5l#5gMAn0 z@TdQX<})9lh|)2uX4$EK=w*B;jP8E=3WkYaQ{|{!KsEF9fx|pZDRVe_dWi% zqQn2yt*5?QUCop2*f5Fb}iro+`S-b9^(chA>w%}Z``gd4fFiG^zobQ`kE5Xlm?Tpy zjEdEia`0K?sUP6d+#{atZ`%aXfBr`wc4<^R-{{AmLYi8Gso@4m6UCd6n3ui;N}Psq zM!5Iae8)>xvHQ&91MeXV$?%Ki@pJL&@4N_e(8}N~ybq}JqrHF16Z<|{6a8N60^Kiw zkAeiENW#2Vy{!~8Knl-2+wjBh9|X_;(kZ&@Zz+d$=SN@m4j~!R{L0CvO|fcC22V9f zwxE$qXZRa{izE>H`(7Np12mjCdkrVeT^(A{b-%ZJ<;7V0H!KjrD?4)M@q4TAl9liXZ#{g?k=f17Xn#gAU_ zf2udx(SNXMUFNt|lhGt1fFCBUbl7M#N!<&QD!SK7AK~gVH;`7nA<$v9KoC@sPTx3s zSqlJPJbBrly-=c&-{~Md1(`?b@X!ao%p)K88VyQz!L?AT6pERVTc4w$E&zm#2St$_ zXR`qZ`~Xik&(Vnd0T{pZ#5@01O_1L?@onz`CA+`*xV(yK3Fe2Y25u;YXX4Of1YBvn ziJu!IA&4a!aWck+o6lv_%@<(wz`JP=W%w2mA zaOeJK5ficty?(LRsu{G7#_?uNy|5)3nFu_)2OfJErE`x_)NlCP$zjR8_uLz%=e-+Q zw-MH?CgBvXFP$0a@aw><*FE4)3ufq;&`2ma?3!7_&bet!8WIx}dL$C10!MY3^ZR9Q zfH(PwrC10WaJ_o?r3_^%!c&j)FPG-&Ibg;lIKv?92)x%7J|c`O%)eh{&(H7yVz~dDq`c4(?yPZRh_ilFZ$I>!j6lOwUf? zZm1@#1h8PF=I429>k`euGtax2mu$N{$N_b4sDd|+Ype3Gd}G`IS>^_ah+u_CWRfEm zDVbpClHjnMtJTt+X*#u25m=skX-@V|Y;*lf*UTE;DZEA=W@>MsHuehnd7Xm16(KU0e zhOx`L2bQ}5V)gmOz3TlcqJi#};{4tNd%5d@Cu{M~5YL!eB-A6IZWA5&vQV`|`^7%p z|19>z3k{Rtdd@jJ&pd%U z&YY`ec7|IgG-WlA0fC-f-f_vA?=ExU&leTHtK@@+jFX7)!+n3kkM{n_ky`oH6K538 z|0DEjX$Xw-Ja~t_&&~6L#||Ol?{pV-zVF3~kkIh4||4UMCE`IG_|D&Jhdw%I- z7yho7CX@7k+`O*KajU?|gd=-{J=!x{t;tBK}eDTcVA^Xtmh;UMEsf z-mdJky*yF&;3|J0=K7DHeCKUH&-eV-C%o;wu3}>T<`dIuW_1n~t1Jpx^jX7C5ICX` zrc@~)CF@~M*?tk5Z#fIdm>5|UFBYDFo@u0zeY6=MB7!tfI-n&GvZjK11}psDzWv;N z@HwO*BvEw|>~K9dI>QbCj$RF=O8l1gq2t`zyB8jL4A75)@$)u8vo!|TP^xkFu1g$d9^nD*f;iM=Kq!(p z;*M3Rw-#hdOtQ!&N`S z6Xa9300cq%zMXcL2e5I+nR6XhcS8yw62m|Q<>K^mXy}T_2+WZz=+@UFmtJub6IZ;E zBEj--g8G{lU6zaY&T@@EUv>WSzTlQ=q!;>*(y7{i9t9j1iZ;CaoBO%zfv0OiZGrTr zR}r422JY4y%CkK^{UXGoSS8nT2Rf+WOy7)tgIuFK1GS#}19 z*z;IwdPHH+rQwNvf5sF0|D3=V;UMbK2%#kP*R&&dCjZd7pmJ?@Rjds-( zDwbIS%RFSgCB@lqwJH$M(2zjc^AY^uM|-_ry8T*_t9Ctw>)Earj?=f)XB(?Og4eS;fw|>HZv=DC&W1jtn{W%yQTF zmb(FRWZZA{Jg8S*WyKu&)Wh^X^*ul-?o~Cy1LZyB3K!w=GmmNNvt2SN3jH+fIlPa@ zo_m_293X|MI4H{z?%nS$fC1RmZV}gc#;g z3v1UFjLub?nY?NvV5r2IxKQp}e(9ffJTtTJMb3X0e$PcorN;x`_!8f`|4Sq+b-tJb1tT&0KNXSeX^Y62HdY}0a2?>q->X{Je;g&qKKzkAow1AI50QB@cJiPZHc)GhI!sYMz z$(|se`^9y4_1rIz`X5FSJpzpuRIb+Gc)`;^-6%Mnmu@G&bo)@GZ+|g+ z{$S@%1RCRA5ANZv2cCs`fyBXAYM`%`=@1?vHG?8GLP^7Z1!UylkMJKo32={KX8&ya zPh^7VKmX8&qxa2?a?%O-)JX&?c6diBO3B_|lkn`&V8-;R??D%M3qI1i<*27{rNAo333?s@=nC{_Uk_N6OGZ| z{qd`Q8y6EvZ#((4iD-U|gvWvQ4c=luJJKTaT|=+CAJiv~pL%t8e!Pf@&fhfVm>=-& zFkk}P_aETEN0Aa9U$9U(j^r@p^Gpb&C=Dfb0#!WZ3Gh?TH9Y+2JnHG+STeojHDCRS zO^`2s;=F&WMa`uA!;R~^9KR|LeF4OhkV+5871f=x!%{W59WuAMw45tU=k`838Q!|@@rX;w5m;;owIA$Ju_Y9 zo(B7TFMs&Cp_s!%fAt6lKlNb5ID{lzk?INOCGy@H3uvu5h=-~Cu*W~o96rF~dw)a` zeS7l4-~G@p|HLBjf8GAuZ!3~WZtpmC?j+VuOb>nh0|}Qxa_jqBgnwxmdpm{X9U5_z z@PM4UY73Ju+b|rpx#_(F{rqVB7ryhgFY@5mz7+Yc86rv(Fro^Ka$MRuR@5y7lZHM1 zF=79qgFN-@Ua<0OPHz6mJO6(_asU6u+y48v2~9@RZyvv9j+x1+p=WrAJ5H)idaGVH z8cbJp3R1zXt**1O<=l(I^FvcKKL$9C`36Y&&Zh@D0V&je5brVnng57==0Akdw>bn$ zn5+c7%Hwb?9#nd1YC(9Y6CfqK^W-7pk-a^V`|o>7&6U6Z=;wqf zMrhjv5s|*8w3mV=C?;f2ai>b6DZ}r79PxiN2@Y_OA2!bd_CAr0{i7#->xd@E@1FRp z?{V)b=&dK`HB2*ArBjFh8H+(q(WJ#g4koE%1tcwKcDpY$Kl~Vzod)%`64c8yh1d)3`dar0> zPWMLEoeFE_g89nuzW~XNqO};`U!#z^43wV){z;tObF0}gJ^f>AKd3S221wL@L(cNR zrypkDUp_>tOyNYLNCk;_c*y3ymyY!1l!kjK&SCZ(KExvjet=qfyNU9u5B}pLiopNr zrhol5b;Gp0W5e_*te%)en1CV2xVN%p0rW`0+#$e!j*`53fQe8HW?#OE=_@zVkkC{Z zba`vg4G>V2c_8!cuYHm4e(m!FcPPY^`yh}-z_LCtoZVW)tr6UI;4<*CCx z9^QMHV%^_M(&Ve&6LMIe`o+`kDxRC9^LK2Vo8b6~4sP>N1RwhPuj7_ct;OyXiBHC& zu~igHPBMj;{(ZVv+}dC3cI^i_{^CV2LI0_<*P<9pqNs8Ax1Zsz?>^U77wH##-D@yy zRad^!gNNJ%4Oh?xZ3GVQ#h!W;yn7Gc!~f~_*8#}?`$Hc=Iw12m>hbGgVh+m=mPh0H zer!!x)SR+@gJkFFtJv|9wec>b()W%StT{IUJu@=nBg%WI+u^8257**hwQ?ro>8n_+Hs9vT0ub`7FI z<#kVMpp&YxxtXJ>aNN{&oH+ZMIQeVgbI>M^s|KA!c&QrThPvT<{{%m9Pc8g=pG_bZ ziICNTYW%qjeGk0gwGp5^_3U9D{eA=3|5X%PCdd~*ao)d;{=WW?>rcxZzh(k=tMV~J z4sfaKWD@VVdaRGD^jSN!ES~8bk-2ND+({t+1}$^*)E7?}=;v3U9IXt@WAFVc-+zA? zqnj3zhcrxpq$0+&6lH_r);9|s>iEA(6+R~i_+j%bCj3D%^dCJHo*=(_{M+7J6jSHT zC+9V+^6CEH8TRod<`k3Why_lOAPwb#84 zAbsrPA8~hFxKU4CkF8zB0=swUDNxbi5XCJ-i(Re$*l}nHN-D;iSI@F@dJZJ8-JzL3 z*!bt=5APf7^vU9>bb6n9h=ZScq*fL*ypF2&N61YrVwO1ztb<`a{{c^md*SJW`*?i+ zk1*uz>hSkI^h@sq_%GXk=WQmS_&ZLWIf>(@W)Vq98U6yWV*S`BQ14Rx?P_5duPkSn zx@rTRt2Q0M+8lHPYw!(_BYE)O{rX??-TOZuvS8L=6#y!}&oL_%O$YK2-Z-49CLLOh#9Uqn&UnOwA%1R=2zeCdf+<;0;O&NwVTt zu5v&w;ospIv|;y_wd_1|P2l4#&`iV7+_`k^gM$x{bYY#{geUiXlBW**X~=4bV5RzM zRI{)n=55$1;8USJ?Dd#*lX80VeQ=P{RrvcM<}KwQJMld8+f63M%6Kk z=EtxzB#@A+NEQj((|Zo{(4&P!@89D&CSRId==_6C>l4SVo`6m^R{b} zqyb4Zjgk`-HUGH6>uOR|QPKTWXmDfD4UoP+h-Z*_iooOV{Th#a;A;Voaql-j z)Wc9W^v`Q-G2|I?!4Wmwl#VFRvY#i)GpO@EBi9|!V8X2@rnRhLhMrsh?+kkbkm_}U z5jyx*;+?2X5D~#KHr#wJr`~oh$pP=;(!6LsA3tpjz5$X#`(1LJ30}B!|3U8Dw=d#m zYd|M(??q8v6}+kQ8onu`Fp@%X;Mr%8$G?x5+_TvC%hhl6Q%{36YeVkK7>%LfZ4^>) zIp~}MA|0^9xW@18nw@3W%v6;)OW+MfQZ)@8+!%NR#0AyZ$0CBMap*6;$H7lOS|#%e zNj3aJOd>8YNFo#&kxfz?0|3v=Kgaj?J&8NN+_pCqMTFlzZT1A#c30KE<0BB<)py&& zyQN(lG(0?JGW!Snj89MRAC5DmG`I*Z%6ISoA`gE3a|jDE zhpHL(5_6{YU0LM4F|_p&iw0(^2C)BNkEfn~4&ayDm9G)NZy$f$DrTlS3#t#Kp_jmF z*TCIFs#O({gjustAEmHm>*buj?UL}mbH`I2io5&d^_vGAJ|5!@5OE80Fi)UD@}HaL0T33?snrN-kYmsckRnQI0@Y$J zSaQVS?r-ho&Ig~40*M?3%VCbF9vXwGsfe&q8PyBJ9S%MVPkx_7w-yQJ;e^v*YEA71 z7DmC`v%S1s4JjEHLrvm5(*`^!%)7Q6$Bwh+!o03X$U&G;vP6+@fMd`eAZ?SQ4VFZ` zHbFkY(+B@^1W%GNZ=#W^1-BX)jRXTKVSW(RZXdn#?9+$&;r9<#=_n8}PCjjlHOEc# zQ6y&bs7x&?ln(3j#Tvxg#o8d&Uo#I&)*c5fqdd9SU&spc^2O1JpUO4$x4t@c8fF&m$lF zDjMy9D0sP(92`L)Oux1wEu_X8oxEtuxaLG=BDPt*VdgzjqDwUUINP< zliH~F5*}y8Xb`&L*22`wHqpIuL-j-xQq6-c$-qtAhoJ$|`eV75U<+8ogWvcv-@X5f zs1&T8lWh|Ou?67w2ms^^tt{|p2JAaRr_QP;tx?r*FH2E$3X&Ut5vXU-LnaaRX$)9w3$djwZp1_oYrdG|YeQ!!)1!AP#gK zdKgIV%LXMM{scKBTrzGwBn8sJ!zZ~0Pec%Ft>Tg3#iGe$&Cp-)>QJgIhe#k>Iw(Df zx=z0QCc2lufgZUpjkZ$MHl>SDgyTI@9g332lj-{zEsQjpb7>H%4FaY zGCw=Om1=fbi`-t&>Xl(Nxlxy@@ml(lP_dtU=owz(3hL3w3+e~pk@&f=1doyN^T4 zSS-Nu(ZPcpU%m9ifye)N4o^5YvSb=RL}G$>?cdMc`=71* zMi&t8b=xPGDh@Q%rz27k-ypd4!u<7l@2=xu0d9mahIbi$iPP|+@I}Q8`fDW^J7(6f zduE2hVX{opcte)(h(ely$Nw*TXzvgllC7j+Y4Ow~goB@cn8TlbB#P!$O0C`Rsr8u{ z0fdCBpjPVX7>zG6r=%#9rjkQ4)8ZKgt8BUvi0>*8?TB?jE4$B`xN-wiS8j}kRXiC< zQn)(|LFr=94G<9z(paqxiifee0uOxsOMK_+U#k9pt(ry@(Upaw`%v%w`t~+du%}pG z($}@-gjV{JvA9x1$yNS$&;YrgC&6*|5Ny;8i)yyTg)_EZ%$Zv+#;AtrlKM4XRR->1 zI_L(-@I&~PJv;(YrI;b9A$x~HNL}d_Zz8MH`|Jm4L=id|4IObx)fPubfFf=sP&;iQ zSg3So>wirIg;7Jz62)N8!%y)yb3}#gPLG00ho%<6@)b9sm%S+@BI;4rq#ngGNvp=~ zpnv`WOHc$D)S`=o1npht=}6+Or>`R6yz7DI>YnK#J`wX)1(b#1N5BM1P5NfnCIXH0 z<^gl_^?NQj-OBBEatdSUVb`!- z{uj`Zv|x4~_}&ZxC(K-pI6QgalL(y}EE<}u8mkJ7!2TC$Y9l;VZC3|R{l-VwnG{lz ziu5mt3V0egMf~Rp;N5$nfm*auox>3Hgz0NIe&*^n3&d$^Gc?xQi!u24cChD*ki!Q= zaz8E*=|r-#>IPJt`Gfb+t=>YV5mK%_4UlK>VBIx1=w z?;v>u7_bs5*VHXo%`a*t-?#qaaXauZl!n;`Yha z?3|qfheQXnc`}Jcgia|mdGL4lFuZ@}VQk)Up^@Yni6TxHj%a!e z{rMq=kpdT?R`Cy^_>iqr-w&(mzO}J$Df~~g8GZ!(qQ-})Gmn$p$WrKBzKMw|*JGl= z4#DWS(4zpUs=FN9@xQx9jl(=*WX&P*iE;YYOA(B3e*MdI+c>AjlG1+Jnjv6%Ll`fWsegmn6(Q8Q(g)R+r zi?X2ktt3oJP3nY_>erYKJ;EQY%^H;|M-Yd1zWnC?+SPM{d2v#ei11_l#b1bzGEHjG zTrf{am1MDM|Mr$M=Ky%uclUx%;HiKmL>o+X_!WSpvbO9n$|SCbBB;x@aChfQiP8q~ z35-Kk_qZ_h40vtvF1fDF1OU6woZ~HL&f%sty(>UNleAB3&6Xqh9pwHS^!%y^8bTxx zf1WB;HtvHHW?l`zQwRSf%*Ip~71~DtAyp+R7MM*E=I+cdd`$wO(|?}$TC0C|*b^W{ zRj`U^F>7!YPMEru6J}l=MQ*7D;OgHZ-m)B>5z_EmrqN(Yz(VW?G?E-88Y8ne&~?WS z-2-N%tbOkTk>PKi2FoFeUtVLoLP0$(`Wi4P)l4}gAVsV%5jWKDw}V1gcG||CL0-V`NALEzPmM`4JHs3aK(cN=@)vcEI{u&%wm_!TY`%cWn4&MENus zBj6H?n9z7c0p^7)7A%Q+_h(C}HZ;`>uKij@AwN!rdHB->93dk#oN~(rtiR=)u&p3r z;uLRC&8Qa|84U){@}G|d&s~Iq3pkzX`xuPCx6Vuh!n+UdtFn2ABAzC^GkwSlz)}Gp zA>UG^TNHdz?h@$tme~j*Ie;!I!`}by)`0z}zqif2e4ZD~eYzln?xT8g%tD z&VUM_>@(jwAaKUkOA!(eeB-Z4G&lhqHk72p&jJ?>OM?!MS;4e}WT)fSx4`HKl$=8P z)_SOFFh-;dy~K}5%fhUlB^ZUwIa@E}^sN_RDtIepXW@+#7hhYuKDJ|^aRcP}@pM$a zYETi?p>)}H5Tp6*A4SlIlB6sOjGmqs)UKu1wH>xG*f}n0L3(iM8{QigF(F`N zcAdT&6XmY&JQK|iH%v0ng!Gc6iYRUR8j7AA8XXQJwTf`IR_3KX=aJ;5kODA59);TZ zA2^x&FySB_RPepflD-IE!N3qsWbX)+7AgPrN zYxhAL7Bt`;PME$Hb$I&Fe+KW7v?j}*ah(q&wR_)$+tGRl_z+c)Y*ErzD`Q85!DT4V zr(m#zKCLV^p|9_PSQlvOnh2_0j+=ZX$4y^bHBp<| zwHw1=?hS|vcJQOPIi@LgPmOQfG)$9S`ns}Sk%wx-u>ZAREOMf_{o`MeLP79(e`nxt zttv|CGi{8D-l}tsNg&rqs5zb#ow^=oULQzpp*E`)KWj5Ixz8{F400`<;|t&?$J?o6 z<850>;ym)c`$;J7Q7mXMv^D{y_1>z;av=&&1J9pZl6O7)!XrQ{d$)}NYYtPtrv2Js zxVoaqp6mS-bE_UQE^!1I+3T8!QfOFz+cwtSy0xze+ODM_HOJARNqh&*z!kzkm_>HB zwpi*D<*hR_hzNHdcn+5g9@eWaA+>5Xy0j{vMiromhRL82&awGJ%1st7y+!z^`1Qh{ zg`v3A0@;9H;5vs=QR|MP9#VXYL{s0x>judP&W`Ch?wFolw8!$1`^~Ft9G!u`;)5@s zdcF6(zaK&_YN3ESbLA!us&eR4-$OOkCP>D;R~10QW1whA>_lH&kC0v-Y>_lkq&;a; zctI{=KnYRw77`**YB3d}IXLM3A>!fYp@1vNwBDrmolkQu@b_ zw)wpKqP2GXmD&hZxKMNtEwFDK3N@7Enr@Q#or{28MeqMWhyLN=d! zX_dXQMdyICaO;f$;1Tm zgM;VFCWuVaMW9q|MF%>C@d7MybUfr)6tIG)D$C;4rfhG_PPkZ58X?uMK7t2t15zkLs()v-jIx=}ZGJ9PxK9W~m@9}uS323d9Zn$|H0FS-*eq1u* z4IN2=DyL91d_r3Pq$oJaF^;c3Dhq%~jb-ZGHd;s?MY<#@-VMp%4I6IT#)g}>VQx{- zV0`{8>HM$kxgFC}h`^l(o+D`v)Tv7_klm`xOrXZGL=p>C-SPdq#Qkq1jN++Q<$3`? z=+AkqK_XMUuycA9w@*z~;FgW||I%Lo+=a=@Hv-1tPd`T1MBy+=x)>!I9!aWKPO2b< zXimxa1z6(r3xZ;d9uf(V6i0=CrfCr8{bq2>@uzM=Wy7#$HB6S5@C8&2PL z8K<9p5$eqmjqmaJ$zwc2KVw)$gcV81r8fr&{tF*Kt4_97L+HpeBN*45D5b$iL`QVE zFTgOT)0{%PRpO{s9IrAoDuVkw`O=$_OK+x#ME81p0Um_{OcTL$5q6w012o+A-RDpX z_um3+DOFe+3p9p!CszC%ajGmK~D&Yb{m&_5@zVy_1EV=#_bLp+#z9JR99CNP}1JNF9 zCa(+ThsD0~Az)zs>L3s5vf*gXm}H#1M3^K3QXL9&R&OkC)S}bPC%FZdIo;5h;hoT+W_YW@BKQBYL!V5 zlH~q0iwCwgRpzmdr+>-ePimzZJ>)#I3o1(3QW&O6w!$g5oy#e=Zlm;3k2(qtbwi&2 zYCY2nx6e#tIPclFHyYa#63bSlgG4&G1v|4)nbu>f<&saJLatg@j%X+LJQ{PamC9m; z9kX-XJ~Lfe$O$(c{`SX^d#GBNq9SH=Ub+#0!=HJGL>E&-O@jI1kTj&>M71)O$JK|W z$NygEw0c*GV%Ag%GQreH*2U>Dapk7EMi#Z9Qb9W7v7{ToJ>+msKkGuogztXii)5*L zTtX(W;3R2Tw86P7ecg%ic){scwOvTG5{*(Bo7A~?vIIlq^sSe(<*WFd59&8p>8Vo$*-0^fyRKV1*)yBn^Vn z3leI74f3ToBUju;@+b&v(&y2h$K!>jXoiL%EQLGHSOdUa-+Q*oN%cr2Q<8-iS<`0y z7QwBJL%<~`2(65aNu1bbq@tA6qiA>>?A*MDJI+``gX3AN9L?}wfWuy&6Qm+cL*C(p z>1#;>PapadtQeitp;u~AUL3cCXz2$lV+7vO2*AU%aba%3P3a_|XFW72$4y?x+No=! zQCKDXw3Q|sk0m9b5T<}8iq5?*yuuFOi<&@EN~2^gL3#IJzM_!~jZKD^TK@`WO-O(W zqM_&BSR!T60+t+^xE`6g5tD*?!;vPxmX{oEkJ$nn3G~ ztJRaG)sY{MC4@h94#g!JN`#9|BT|`Y@iiyivX#?rIhSOCmQU2eliPKXu+VtCu=}^ly?KBP#KZ4WBttn&%Q$|^+$wfY zO$Owtbi(OseD@xe@|0M}&~(I+D{B+v^N%4Gc(mMls9IYPw#oppzI5eyyuk3M&f!9_ z-OvQ;iKfald2%K$+eG)uja3d&5Gz9uu50TnqfmoTFPI3YZ@UD5?|tL*Rr7gZI33i>a1}Ag(_nrpNlr$f5SdC*@Dr&fD z@5?vY<*ine~{7u+;NE%3NNh-;5Kc zuL0oMLw|-@kKE~E7XC7tqClSzaIL!Vje^S6^Stha*4-(xHVN7 zIL9qQ_AFqHgDN_C1I)Yzqx9bwJdF`xM`M^{+90kJ?~o|0zwJVV#P{ESe{gTis~lxh zB~Zc@urO{xEq(th3GJUIMVdhV8hv@mQ*Swsb+?^IYI80rSZiQ9^hMy|en-OuIbm8* z3kk{{lT#?dod@?KWUTZEZ-Hp~xn$fM+-rw+JeHLILJuKF^Fu1ro*pV05og!*9B-MN zjJL&Nt&%C?Wz4`i3IULtBgrWS$%XvVjfe<`KmQoXlzA;=Cm7+h%-6B}-ciZ`!m~sa zr;sF?-t+2oEn~@;xNIHiiVY-_1y*ul=-EXha|XFbP1C|B@bs-0f+`Pw{Yzw=Vn$L$ zQU|l9GN8PLgN!F|NxMJd162(_6Ad|Bt8?ChReQK}tb+w;rwuE0LIHacmrbENLW#1`XZoB&hXJg+>G^B@E9m z*^VQ9!#fqDSPF#du!mPezdxFg6q5wmP|JuFcAv2dmBO75?gQXG9BWJ&L*g}kAA4MH3mgA-<6 z1ui^u=;OEB+=hJw>Es>Ma^Mba%fJ45&hCM}bk+?%0 ziWahGH1*gq9dcNAAKV9`VT$erQ@|TYN-7Oy9RDmW|CNT46faFMKWZFmIEJ%hYL*?- zA$uj(q0uH<<|(`@#s0HOKHUrAx&pu4Hi1*DM5v`163HHYrgs`;x z7sbV*3AJdBv&Ee}aoI*DuGkp9g z#<&6Uvo65ExX_p&%;VMjLj=;LH$}q#h4)jm+Yh!oxxq+d^`E1ZAS3}*qwyTtjv|Qn zkSlIMFMShuO{4|zd5Y)gOxM6=JeG3(DM=kGj(DP^C^F*4t}Uwo<<1A60TEmqQt49E zs&~S8{*KBSWPlpUQe}Q*Fk{!2wd~q58|9fCrA93Y7b7Jw8()4)KYt?lGqZZWJF1D| z&f1w*qXJJI{3LD}4dNduL8)~3@i+?m-wR0vD}p46eJybO)OD<$el?|SPSMon)54k! z{}}Rjv_)JaXshodj+cbaydJ@spZ_S`o`EWEaaU9IfX5}6qY!~gTmt4A+oc%u9iiL3 z4xf2_-|)OOgR;s>j^@X3@2_D$Bi$XLi^@EWH)QS7xKn62?Urr0C4TrvUt+$eXbXID zp@)r#1jmr?{wgn)QF@|SaTLF4Ho#2@2{c%`2a12 zk`md$nJ2t1on13ifN`G;{#~P``?@*0p;t8P$=Q8BErNK>q8*)OAliO8d180|C~7E^Z#hAfwzq) zp(kMrtr_yg8=1IbeJ%KcQRs@$!*Oxaxc77v?x%!^)q=W!X2co0s3jl^o zhmw0>T~J}y>8seic^acOJRFLI`CGzk^CJVpjQ}3{CV@v$w?zWuIT9O*+u^wBs}T{N zJ@g5%LdqS?oTRM<{rLP@$_UhNWnN~%tcRw=ag(oM?bNF&8n=Wyh-Z+hLu(QmwZo3U z^HEp>N2?4LCeaR2!)+d>-$2I&D<4D5P}O*6N+hjg0K(EEP$?iPs0vl)vs;n8GJV#+95sLQ^LRzo!63HlrIc&W3ED+-d@Ba!^&!K`>^qq`7=$9P- zg#S%(t1L7@DV+SK3)y(fSu`H;XfWrIsFr+wFvCQ3z1<0me^IKuUg9+HV zbOW8sHlkwS7BP@Pqalr$#ujKt?feHt!~p3xLY#yfoVoR4M1=2s>#JyLaEs<_fW*g( zaI_Lc5s5P=g|5Vwmz>KP=UhZ%V3Nc8vaU_|1-41SI1Bh$XZv{k)a_Tb#A`7u)!!}s z_gd*(dNYlJf8hft39DN05xs{lxm16O@D!2S92uj;La{*?8QlshRdcW!V8!p}s z%WfuLd~^SM#9DaO-Isb~__+CTR7O*aU=d-6vmkSVQAF9jaRxB%{O+DGM)#(!MtcBj zeSgY=EJ1Q8sT!sq!@~qpfwD-lL0aJ?i{^)?kQI<9@b22On%x^`LYmBfd`+ys@0;=V zUGf2CN2H^O#oE+^+aQ#WT=g@z~y+KtlYe?FuhKP~0f>dCcM(7$5mnKHOSQKW9}t^ zKVRzID*A2|cGvKa)K0DmY0*!f1R6=KyY*ZY=dt(QU!@-$u|y-$05|akDW@voVL~+) zJ+@<1b;BeDh{*$FlaPfub0d4IQepveT6gPtoOuWDN>Xk~xunhpEx4!=iX z#!8iq=^J%zFf?E2hputGWVOy~;jQNS-JaNl?_7xO4-Pmv1DX zIT2&F&GAtK9E?VT*cSdPZAm_4h6@@j1Q8zm=2t)s@j{YJ&ms4{aIEh2YEm!JxHZzT zz5nYRv~#i$yT_b02ptj38(b4kV$0d*v+10R!(&ctp~Wh`NOIVo_uujO$4=>woF`d z3wr5xXgkqkhQZ)V7;5a?yb5>Wu7{qACWwH02RIDgjV6`=C8ScY1i1{q2=cO@zy>8( zxSTBr`r30B~=ceP?xp{6;`DlE>4K{$C$5GZ!zY2F@@8M5|Ur{xJ3wm}z zH3|dqd#NwgbgVZ)+NMXVAsdLmROhUk>1lXCi3)QQuVU@=D`VHod^PAE=?NI|<6of^ zbozDCggtZ*;-SAx)up8}2VJe+4UT9B@p+KWvAzH4A!$KA6)jaeJc@eJ*B-kC+Z+KXZ7h?u%^V>@W5*U-0ZDiuI zO_+ov^r$n;bmSQlAxFRY>wImYu}G9nc;BYhRy z{+xB7&Sl2k*|_y0HlKAK>J2U(#tfS!#_!`PSYiQ;L=hvoV3*uXqTpZpAf|zwaSg1C z;Yd>43Z#Tv50iAvZ(s-9d-$TcG50DtCRjBAN!}or+=N|nbCqE7inbdUfCn1@TIfBR zv-9*B#ErWjdagob45JIu;I4=zT$~s3Wi;xVEHeAf>xvF zwxKQJq#V9OszkF?3u`9B^P>?DlUtK<{ddsI=arR!q0_I4falQ15KEXAq+jgK!C+`1 zdc{%c9`h#A>fNgGUhf0z^czM<#6W759WrqPI(pB;7Tt=n*M zo_Oy!Xe8JTkVujPoh?!Fu-Y8yH@J@J__4~2iAUkEGC)+cHa!ZBBswmfc-vM^y=5Cs zTlDgA@pteSfRbq_s_dBP;6BH@_wPqNVQPqhiG!tnENiY5vGA5U#@A4>K)1VAo_u(m z8KpA*s{Ew)*f}%Dj)@K;MslN!%Qu7H{#D__#7LK}V+P^S=N?A2L*quLHn-F*&N(#H z56r95#jy^6szsor;6g{dG6Ct&UDgg}4KtT-LM}Zm;vd(syxx#Ra4reQ*>cu-DDd5H ze34FVVYT_KyOT(`IVwtVry$3C|GRj^fr*f}RY_GswJJ<_p%YbQPTzV7o6b59m#90B zYoALWgTFyX{17Vy&C4)42<6f@hgRel|7a1SqZ8~8cT6(LN`3L|nBT%$X?0>28m1oZ z9i|y6J)}iRTyhiXk~fpQU^qb>w$Okaj{ygPifI&Nc5hi5o*)lB4c-BPY+V`}JOfP* zUkj~hfMXp2U-dG*m2b;&sARe{8am@hk6oLNWA~;tn1g8qf8z$oaGYQvZxv+L)zhy6 zX?XU~pMr;Bx;GK%1*kh@4DhO}daNUWMOu^qkitOQz?+0738cFkYbLK@_0+2lkF#rsd%3}2hg|&brN)c2Q zHHS10-5X){dMtEj(A0p*SYdqNu@7YLRJXZ?({4Q%0UrN@uc1|*tPw{Y6s1S#nTN4d z+#ARC`5))KO5{?V5DTsiBtc2I87IB@Tu#09+>i(IOhRa+j6GI{VE>n*s45N4&gm|$ z!rlA#0SS?UGXWgNU2*M#93~3=a?Ar*%_WWiaf}JX<}3JV0+GWw38S!MZkC;s9o#h7 zGZy66@%|t1`iY~ZAStl?e)&4OI0wJ*2pxo;LIaG2r}HAbWVzZ93;d03QD4eW7~eK+2d^pezPh z_}RIS70{)g0aek)B+e04h0=sPD8lJyU(BX+E)3wG2cx)^JRgr2J_gLJ~0TkgP#8K`EFD=@?I84MEM3lt^yn3OhEPz>Y1mH0~q=*M?+T^~1*(;9&2s2;xMX#)P8A>Z#Y@?(8}I zpK+Tfr3uU%uwaFF)%6!oA#Zj}zW}L9BS|!bEOf7vW{Mp~w9D#=SF(EQH53dtC2KW3 zA7}qVasEdEv((0vBQviJ39LgO!;6!03b`5*lEX+HjsHK^8{jSy1uqlGj$8OYrL0(K z;(DCC0hxMjB#cnMK8?5DFr5Dm4fA1EOeR^wDK~E;p*;59`va&`rCfX7qeI5}E_LJB z)fb6?bP#&<=t!V}Bg%Kyzxg~)ym>3hoFbXf#x8Mxj>lk6e=BIpG=veo8|4+~^zC>w3teOdNFXh>{?nfQVIUvH zU}s*OOs0{Bnaei9W$O^6$_E>gf+<)=J_i`>7$6MM!-q($K{d1a>O_m7;={; z7|SA9KpMgi*7cZg0IFADn54>xsj}Fm>C1(!Kl?&9pM7Dly{)OrL9J}`IEGxx7<>a{ z#Lq7mFi#|PL^I+>63~l&0r!I6_aP8PG0d9?YTO|wl9yxN!y<`Ma-u@r!5dVZB7yQv z7jLI?(JzFTiYuauh*K=kMdKRSps(-HGIbSHjpP|A4ZF6iB8l*>hxSyuUNtDQmKK@D z@-_7c)_M?notp)UqqBR{aooOnj#LVs5}q4OBGF7f`V6vBM}U|To-OWllG0eBpsbm> z1`%P;{3oLbECt#?QA0b}rFYCrU^xv+r#3-Ar2#R_6PgpNyRTyP^wkuLGo+IotGfFp zGWz|a6>tU`rOJ0`UlL0vug5*3^B;v$2-C#8Aa!Qpg>bAVKrs*6Pb7mC*#vtmC%k(- zGI?z@yRDrsBb4_?|Lj-^>6>a|zBFXXI9){NIqjzNFyM*zeie5?Q92Tm2A~v$WQ_N} zJ4GW7a0(q!)I%ZzF;2bhJWjjmJQ{6q>!LI?-q1}M8)H8PfA&k2L980)*`hbQYodcQ z!`+7tRW;nI@2}OZTNN$kn9l*!3YNlP9<4^`o-05Gc1%vzx%99Lti|?HYY*cTYOtf{ zM$(WkE8?gTz|2e6Glg*Y^AD3mP?2DM2o$&Q1hlaPqPlbIJNQ6&pImQ9tNy6~F z5Yk}bd0AQElGyT+ZEQO0Jc!Bx4H|piowx%~Y)ZQL zCK{A{-v?;Cn&KuQSrf=tA8VMaw=9@K(To?T5haVkMK_Z!ep8hPa!dj1Q9PqkXgra| z9gqPRzcdqSA@1z188OS)N2qCo;mnuh)*Ee8i5w9 z>VA$jY=lAyDMM3KGj3rPymsPRR!v?T$&VJqDtiV&RcL&i01Z5Ti&_>|5-Pz2F)~yp z2pCQ8W8?-9up*=sNmDQY#}W`ySs+#tsVd|(S;(F1Vh*jTS49Y}nkO_FV+F)vxW5D| ziH?SLxllFXwc)f|&cRH1@`GQZS90~ZsPe7F0?c!aGoTPbi;-1nP%xo~lT*X-H(ktW zx15F1gk&U!V{|lOB_mqu88RM&yS)?Q1x=l}$<@dxjS9P_rvbQY{!m4_6htO*KLk{h z?_)iG5~4Ebb#6EWnm}O3#3Z|>r!n_nL#aiPOcGLhAY%s9phwau#G^`f51=MFnz@&) z2X_wM_b_Hk5$KXA8opWKnXM9X9*&SNy@`2&^ra8rNib_L zO>wBJjMIMsa}QZCZ%A1YGwkA<>0WYEz5JY7T12uUR&dXx72y9d>Igt{1vj!d4YeO_ zLZeO+xMR~4%5l8wp}pWnQ3En6P1OKC=0$)}F^o*nCeU9fyEo6VYts~_PJ@$70vRCT zIn=lSijEtA1Al)Dapt=lQkz%N@Jpe)43JE(@hrGuzr7S!Lh zQ`fO-;#HxRgdwJgXn&4Ndv=beaKJBsRpa^uG;u(=<0?Rb>Fddd1pHpS7%2zZRjAtM z$Gitf^?oAMP`ntDlmN;=HNQM@JwEx`m_wBXhOAU3O-0C$ji3jAf1A!nGLK^#GL|Yr z5oP0TTTwTjeE(Mi1z!!nlSq}jJjSR#v8YtcaG zNv5OUKOONL#>K!g&U`efG*bwFI(KE))C2~+`|zQVER#bBoxXYWSi&{-u($$;Dl-^v z?@qF7YNF=9MiHs!e!*oPB;(rDzc(HOTfNr9C9Z;Cc(jsNZsf~1F$Em@;v;0w^eE8) zS4UiqdHl8!9$DFho*S8j(=c_>M)KvG5Ni;GB89vt3`#1f%Q4R&7={&$*gsl-A#+s? ziV#je`$9y7?|tj5q+BSAd~amT06$_5+?|w#;)yLUIhQSGT|jZ6kRtA{r$tCVw{t!| z|Cchx4UnT2#41wRy@)MXw7M{H@pc+<>`NaE3K)i{M4iklmDLTGpi+9J1-5kg6>&hC zBNEoN?X$Khh@gDg0tM`no0zz0JLW=bcZ*oRxZV~5R>t));up9CI<={KwJoSOBn?8d zdH3d73Wd8L+84)Q}Fz>%@%cnoR;g0(%TE2BfCO11_l4SCHoVn8YmG(QIC-RZ|DsqQj3OGI&sFQ)#ZV2|R2QWYSbxhl zPI~h>G=#sFA%T+#ouGO==*nmw`KYgNJ)f+W68fyZ7Tl-2b!r-s#Jdmg3m+(P)CEh9 zn8Z6|V37z`6L78X)2KIy+9pryS}v$rl}-g$M~mR<{khpOG0Pp3ZSy1MFs{KWm-zfS zAL;yPrR499Yr8_NvWcKRPv`OtAi|;h9;IW_FZh?l0u#LE5K?0yt2y+j$G7b>s8^{x zmA>q8A@0gtgrZKz!$YxUeu&TGn%Xy@8l=;Y2~B(~0XO&+e%^l<6y)O`FMs-4fje7;H;Xt^>EKs{z@s*W9P=>*|lYsVg*wl zd5?^rc|NRgA@5)U!m7z@Fi-5C|2W#3Sz2pk7XBb;vrrK69L>d1Z-R(bR#UhZpiP*3 zdTVItp^a~jt25obhE)NB zPrmOPAQ>7%b1-?_3x<*jMyyMKqq3xtXE+Fn0we`-3G_3LdO~W7N;Tj5thOx*kzD@Wn?1=&6tklq7x7M@XbcER@<-u=$ ziA2I&A`p!5^=|J&HX9{g+(M<6|B2mP`;B~|=z%Z^d5=xPR zO0E(Z)$0K8PNG}p;i5OgMcXL|NQ3&y-=4a{F${|J6+Cuto(5^S`=RF$*YHZ9Hb2}! zI(=Q|Kz^kaPyh?6qN`U4p9Eea8KP5B0g8#SbJJ>eZ*<~@f6tbLug!C zGkqN_|yeo3B`Zc2=>}Q))kS8X!iz{4q^qPFxS0~Rnynf z7*!%nR=h^+iZ5`O^xy3QrrnAbsQV z%5v0HWv>!4aXn1D3N+*NkP?m3@fhLduSZxTh0|_34-t6cz2CsKO1UCrQ3_!aE!EsI zld8e!XzM(?7qTSGOZeJW`L9IPw06TaAvh=Ab`GcBdLE4gAY|P9SQ+u1R@vvbbcIHy zc=y3WIMAeseO-bDr51%!*UElv*{~x$0VP0uVsYfFRxit7MK!6aM~HCy)Ff}|NS%u& zJW|H>-_Z_#>KT>*z2r0|frDRogrrK*Fij67Xd!z@0aCp!LRNRQH-JiD*u6eW7R4l* zJ!($TTJ$z!>e3D9C8trvQ^#XvyaA|maWyuabv^*!`_`9(1*=dz*s|_IuAr!nCK|WO zCLiq}!0Z0+NW!c^RcSmLAcBO2f;lG2ma{Hk!&&FYpLt#(3P8hOof(g1E&yarG}4eo zuuE>nw21z>n_8$HOSQx06 zMo2l3z-|joKuxXb_b5NVV?`qovV>?4kwj^flpV7kmYh`+uVHTTT8cCzX*EytF>pSv z^!;C(+1^B~j5qfA^6 zldp|uwx<7eW08l^KmYM)aEltJ-n&rqvT*SvF=OdrrC?+B1VVc?16~u+R4(|_kU}=B}+NaJ zT)@)kYb3c;c~5XnSZV5>?;sowi63j&F*(D|ZU>PRb0sl%GVXwk`1v2QR)~^a=v=ZM z5DtFn5t2mVQ>&@B5llJ5u$ud>1b~=ndUau1i25j>h7z-^eF)1m^bawIr8{7ud-Ls(1AdA)x5`=YJv`%`^^st z5R7|&?#5&J#t<|>R`vp`CW<#GiH1T)=J5+}C1Ldb`VUbRiWer_DcVKtP-TMDhQX+t zQI36Rr|68*rEm%=dxc!XP zkSDn7d(T9Ir1OXbBg(UaE3Q4TQc=O9y#Gu19D0UqNC||G>3n^^ot>Lb;Py?ExPzOZ zsYK#LYQut+T_9S~1%T>-q=powq-cV;2?u(g#J$i-DbTT=G3|k8L>tsQ3(Sd8eg8eh zyX+a!9_k@=qRA;mH8ft3qDTt8?3lY1UI1R{30`G!Mqxh%&wb+B06`qQ zx84!e*ULMIl&X6Z>knF)RFi9h~q6JV2pV6d-TYn5$6~bbxyfu zE2rKT$j5mTvKj?nqY2!FrZXN9{}@n+>k5${0|m{2`HID zp>xSPlEA_H9zm-!BO_RX>SL4m<-eWB2f(t9MhvwuH_IqRK%|f_yaf}*zx+WGic3@F zqEcw2N(ZH3)G1IR1*3yupb7OJu7yMg5koJ$iOvN#QM6Fdx*;7%G#b7kD?CG3*^lQ9 zJqML2Y$nUNH|*Fjg?o>?9y)-FfIFHr_I_1?L{|Vqrkc3LGYOIua|7*wD?2t#vtz>) zG=(IYl7jYc-p~;!y0VJ^D;?n}^%>o$QdfyaVDM^XN$d&vc~V#ZWyq z691K+-h}g)lF@z)j3j=sBlL8Z-#>V;0(~kLJS$f30I}Z4OJE5-TqT}KwVGz9;5~_P z`_wGIm^vW`?IDMqNi_?yaRF@9-*2j%lUsE(O%dN;ypFCrz55;|yAoG~S3lSq|GKPz z(?2diCu)6G{Z4WPxpXgFPr7(rNacCxe~3G!a-YV#fAnvFR?f1RkR@c#Hl2Ac?uCcG zeLsRl*k23&?vN!afn~%2po#EtEB$A4R09}pD4SlgE#^WX;WRFw;T;z;>0=Pca*nYC z){BtukQKZ|Rag6GnuNexP6|Ez!n zKuMVN$R$zIJZShH?A*ADJ2uYHU}%D{e9s{nlc0Z>jys3y#Nqi+KL zv*u@|7dW(lJ1&6)SB++{kfD16UJOg0B+bWd@21fh(OUc+eG{nK)baXk@j{nwLggBy zdjnw=T2QU*N6~1Kq?K=it1F!XWdbsR%i*elE;tEOIQbXPrMU3qhwkHW(}_lj3dx{p zV;>)V4+Pvvo@g{0Jcf~SkK?vq#L2(7HKbqKqHtdVWdgicyGP?Oy6<-;iPK<6HAG0> z;F7r`bxFlQq*??T@mGKn5?Im!IUHVq+ORWEvnzFR5t26)5}06O zWD&vydYlE1^!^tp7HSuX5_1UJa}$4;Mm>t4eY(4&;+P-Ce4?76ujm7E#Xp{i zKuNV35-dMbL5d+$uR{+gq>n>sP0tNXF&+I#$Pm=(+1{S>DWkjwnYsb!;VJa)+ozS1 zAlcXecO`896cVsTLM=d0?oKu+BCP+#ttiHm@Bdl=CEP1ZJiI_g{q)n?{4O;YQc;Y; z3EMB=v|rqcnULIRlxh^+zW3EDVWl%fS9ts*6p93^BYW^c8p&VV$ z-HeL5C*M@))1<-_02y-Ycv6{8nsp5EHpHWkTk z^$igm!QD{JOm$w(?8Iv*H1!a;u>GKi%-nz<1`dA$ zu`mGD{;}$)wNgORXH!t6HFdxqAts8_tM^v@+3L^Q|JjpZo=|r@DNMWunYbaIorKu) zq#kOc=vWvlUgDni3~c`uO}X7tcime)zs`pb_2UB;1=&g>xvf5N`)VNH8q} z_sOs-@ryXJC?83cycMz*If}U`4bI88p36yZK9@!m6>Ei&;=R!$SwTK7fQ|P1&7%F# zHh7&1Zi;okV1Lko)wmHF|V+3Cm>stb?(p^&jOoII$ zS6JjNZ|P2P$3$KTdFouW^OgL_xf_oWKK)x(^CHmS;#gO09=&8eF2dn2KOE<|I2~6S zl_TOChZ_5Yr${y%xKEV0(P+)*>(3_7i;p@cxEhM%YIHByNWOR-*nGVdD=W6j|For_ zar0wk#QzZkq$6_zKyX}?%`Z8hB+f(M`Z}s{_JdMHNp=5=2!&Ds1MNN1!v&y^bl4$N2d#1$Sd^>KfdI!@WNNcTA2%e+V6* zN2-lxQN?`-Jffr_iQ--n>tYCw)qi1rl8V9GlcrHYpvN4zovUF(!G}OJXrw{ z|0Netj_vp_c}QKIdfWMc@Z|fyLGeVg0;=Hy-~}b2NciIQ!B9E`uWv;yi&MnN9u77} zNEoFsb)rZj37mY(Ih=aic_Hm%C5pe}amd;}qa6PpJY0josZDcH~q6VZCFf(LEkN?fi7|MW-R^ z9Qf-;NR=g&t)bCH4Y6t_9z|AJXgmxu`>j7;>)){0yuAoyYcR=(B#QKyzHkHSg3}1U zLmf9c#sj2b{TbUZl!w1{ACfY~43!cX*UAJ5-z0F8*kjTeI77tg;BAvf<7YIgs)rcr zg+_!d8MlUwXPwXbGqzT6>p1rv^ceUG9P0<5c|x_?!=1Msbw|GPK8kijE7#+dYCJTe z3x!0&Dl%AP@CbMpi=b6XE&LWT9e5AW|I!H|hC4R?>iYKksfcn!cL-2b=@FPa>uP40Hi4xV46u(J+j6BMm$Oa!EiS)*~nt+tU{aBB9El*2&b#h?u`I5GgX^#EE^@UVE;2`TuKlLNOp4kHy&gm2aU! z6hWp!pbL0Gid_{rR@Sc*6_YFyPS^Xb{qazX`0Obu(Fd9~j zPh8kVaQ^=5ui#pGk$6Bwus#c}Ucrr`MA3Qe4Mawf0_LdHc#jB01arZBf$EIv#_eA^ z%N-YXS*W4rXcj*bAAp9G!gB&6$NAkW??eNg#6IucNVcFfi?NZ0AnL4n01#1+&h`FY z!{gI?5xkFYS?D1=w{e{3hSHl?TL0bi3~;35{|F7j@%6ziHeI;#y*I)Dy$EViNGN?z z9hp3m=+aSZUjKc{&$?_;7463F;o;y#LeW%=&GV-z51#Cu|D?N35;+j5pvLL@c5!!J zd-Z!=1#3UP3G?u17!9d3$5mOkQ?U0Ar!pxvieTnfY5PTP)M%W#??F!Aw;R8gFTWwz zzaP)>qU?l6l1569jb2d*i5wfk*xEZ`!*@9NZhnZ+aAa z8?G$A6P;cvEJmSBhDfexX;Bz~^-Dl>(JL)sV2wlvSZmHu!OYPjYz&Wb{P?4|HN+$7 z?W$-_Kpknq5M3}cv?_A!b1_J?_`~o_&1n>~qMm&w)BNj&Z->YwuuQ`{#ee@Bb!Hymp1SkvpE*1`+<-@4m#)3krs#4MbyJ zyb@Ct(mgZQ`vA9o8-{N|MMB1|gbdt3Wo#oKdv=#Qo<0lS&{h#(6kB#TCr32?lbGo6 z{^zgE3Zff)^~%q?gwzN!10OLns58XIF0ZC*kAK`J`8V)Vv2h+}0j=O&;zx}yZye+K z8by(?Hqr2g$oMDkfv%tiPI>Sos><8n{TqrYt}q}pGe)IPTklVTtUdDacrG~+_b=Qi z27@Z2IO2kp#_SZvikWq# zL5~=sgcR1gZvhpDV$sM;c>alis^VkAwIbHI>;7M3>%LvYEu^oPlTvvntdlH&teGMW zGhr-_n=nXYasEk)2#fE3BP6eAY`8O)8PevcDq}ZMmo-mNxJOq)k=UeKnNe-Q6>%!@ zkgn&x1m~UzIV_K^8Et}UqmdQR3;-J>=D+jQ4B&&Lt23 ziBAPI!Di;(j{cgj6r(iyvWjPb#2eDDaRwu!knTSQjJ7$yQy*f!BcSl zj;`VW3vo09pQNK21@MB=+&Fb_7^A=TUoJy&%*OCY)$kD3=oTbAVb?za8#h9{x0nF2 zFnuqIc;VCo=Q(v|Cnk4AFcg(+{<#szEZmxDT^m}x(qxW_Qr+=${}vIaegB(OFSw3W zThO%hhO0_(TYLSmNElh0J7}TW0#~S3P-&F&Polg37Qwp`kfA=qwbAn9&kd*-#k_>+ zXR(SRTsn0e#rZ#9`)PF4nnS7JZ7G2@8LO}N0HLziUg~R<0ANU z->moa60)~=crI9XdKnRWSHYke6fHMM0U@NHn^~w?xp#R|!BMvEJIK|rB2)@~?g<1(zyAj~g@rnUC~6~(8{_a0R&PeZF|Ew|7`#eD&OL#g zdjiE7fnrXjbc5gh-#t0Hj0j$xGRD!q2~>e*&huM0VF)k2_D`T1iB+57wIMb{m({vW z5T$#Q)Damgu5-`xc7M|Za&e$J{qk~vMaax73W%1*vwkHlSsU{oe(&Fw*$=(+}V-{KGfD%ebhKR4P!+x)j8X z@C(>7mbcQo-`&w+R_cKPLhmKq-$G9{bLK@T;U_w=8K}ZKx_Z#jp zmi(&se?wHjqZsZUr34iie(e+{ioNs$Tq}k%Gi8*9iZA^K){2HlZO9)gbB#g>(kQ#9 z8M^0(dG~La4lF7$#gz?!N1X6OlI{m)4(icJ_sRRuQ$+ZiSN|ORO2j;+h7@AoL)Yyg zt=@;fMNm~}V>dzH;I1?GbLvy)!oAJo{*8ifdDriptTFz`OR(k}$Qq{QDs9Ayh%;K; zAj9q#nY$yG|A0XRvp6(F6U>eA@DLB}JF^9YMn^omPcZC$F~lI;5UrS3l>GyfTEj8{ zcBC;X+C~sVWuVbQ*{W2UJC{yvA`UOS{xk3yuJJH&t{_rw2ops2D_6a@8332IZe{P( zCJl|`KpUZ07=QW#Z5qFOmr6;FCc=zS8kqFMLC71bhT-S2jYj}@d;T5F8l`lTO?=sP zwN6@p7r0W2VAgO|Zk|2Lv5iM)eJp;o7*|$e0%TM}d`5ae9r+9ZB0}*R#;~!PVlOp8 zj{ooYI|B8Ode`8%FMrazs@D4UHQs~M`g;rMALL==*uTM9fO=2h#pr%v=*5rx_~nRS z0~hVZk68DpholI?LWHfSA3)sr@z-ApQ}LcK_TtD5(m>(G5sMCfbw|ay?TK@oeEI?A zB2;%qk0QA^n0x=7^~itzM}GSkL;8fr0zkDVi59pkdqV||@uFSnvCaad7elv@37N+uUI0Am1t76#A$6DD{XY3hIw;f!w@`=i z`>#{HPuumxuQtbZy%$iLV!sj6U_qPI>`day6^w#riZ0OR3rsTzrhA(=bmCzW%1HCDY`#$Zp6bUo*^pqU>oUIu?qs9BpjCaPBGU&J(y4mg8RG{I)-^@1DgE zas;^0h&lGK!7502Y7h?SNjDo8`w#F&Q}mPH4d^m(N2mK8}SU9G^d zd<_e!is@&lN3z1)QQ5>~5xyR!acS!op5MAD?m_SOOVK{7Vj!je#?$Y9q<6q0z5!hA zqY>9b`nbD_3?lU4*u1QS*(xlN6{wsyxzSmDT0`2Ulz9Pj+*w}_``^7{u`KA znExTt9Lj)O94K7(ZylfRC0AU=No--o-AND{;x!It@}8e({a~*HG{cL+>~UoFxp?nh zmRp=q`gU(Q`H{q$@GfmK#R0t#(h$^PA;QO=JxdYzyRW^Bx?{!qS{f1GU*WETc*G$> z=&zR*saUsY$~P=Z6VQe`!hRy#kqF-r$lPvdt z7r#mh%Dc45{{FZ(R1El?#m{>zVZBHm-g~AN_rY|QR$ETUu3BH4);Qg)9g#@filL^s z8q&M4ruX*TaI6<@uKFFliK=ULxk7UfcUKN*%_bptisYh&zU}v3r90>nCU| zBL3;W%k+%X=@*uA1l0B zpRizL^%VDrQ}vi}~4obBks=`&|Jb!KP(tZ?=3wEP|W@0<-FYb6UHH#p7$ z7Z}cd0f5Cz-{=~Op&MyTag<^h)nSzI;AraCAOWD=h^zJ2jB`4cIV!G zGE&6DkAnuPn9eD_+9TfTJPOzra&yXvyHKPMwsqDMZw{p~8y@A@?6a6J(5{7=yx#_s z8^!zY{f1bB;o&HX&;O_=xuQ!_d^-Ju&>}(GeRV|I%KN|2rb-7cim(7mKhRH|XkE&) zfXp6);o*2z^u%0}{POG15Qp0@>@vFX*6+ST^V0n`3JVGOT%DSfM0-pw)TX`5e3b-P z?MbWnDb*sXHyThFtb{Bhh2qACo_&DZFYNXtMaKUb|E&6WYzQ-+9|YCP3-g~L6ifs$ z3)wZo7eQ={raKQW1ruXcjrCad5+0WV;$!c+j|M<7#Z}Sn>$Eq!nY|+20cV~vC%?ei zF8P-!7BaW>!7W6UpMC!aRGHy8gBgn=(UdA(da(DC6of^MBE>2!>b_5n^oGCbXN^S| z%xE&8B8<$r>D+0`xf6&(am_xDWHrnYZJfSu2UX>-|I2?yH9Ut4ErRf#i*#?O$W{No z7K=}>dd={mlI7G=ya(%FV>a^1PyHHOXU>AOm}1H2`wh+73m_Q)eoz3``^IaboO=?0 z@$&B@8j=cXF*4RXH0YW)R4Sv5RMXyRvdRNk7-dAY(0oLt(99^}sA~@f3+5xk&X*|X zo_tqNcYeCb$_F3`Q_YK~H*s%#_06A!&aN*&Hses@ih99|g*cFSbV9DUzqo4@J;V_- zI?nKrzLHJM7fT<5y%RTa@$_cj*ScwAnp`C-tv~4vRLb#ZQOa`JnHZdUw;KCjEo41isBxV7I?%bF%iD{^0TSi9>BFvb2z2{%u!lD zMj9V}<}7zyI3JULCSlZ@pKr2KexL#iL<<+iX|lux~=M-KUY=Cs4O;XzIQDB|qQfm#0t|Q8daAJb(I@@C5nc&q8ua#*j-X7AtL3 zv`R>%TmyYY=?N|^1sk1cs28LaDBX`l8kg?8iA$$%Vd~2tyG&h@T#Gd*&2fd}n~xz5 z^YM@SsYF;br&LF*VXdM9WjeU8y#0r9p}1ovh>o~AZ4`zgy~)?vsE=@L^D*2PA(7JM z5tC%4^;ZBlyg5=7W}giik}LmDBxDte6x_$&Enm8-mR+0OcPgkz4`rm`C?b`{NU<)t zvhf%Uk49m1`qA_)=wuQ1u^5J7q+?m!gkD|`z+)rNQuK=yxjN z`LATv_$Q`|Kq=Cw51v9qc<1}Cp{|&~fMV{9I4be=(hGB|HUPf&wZ?8-K1iH#)s?0r zo99k3JHLf9LYE$uqIm{LR(w7x=1?)3I4AFo_~&o_>-W*gJGnPy1L!2HFM?Z_TVCbo zyCBL^zO!}t&-mGKHa9cwy6+q(&TJ#%6ptLx)pEJXjY;|K-~R32Uh4vX>$Ut8-uDJH z3I#9FT&Otq@$K*c`TIYkgv}-e!=+LQ!|~R8wM16?2ciqCXkGpcrLhp9isM?C?K}xP zPf&421SvvsjiO9W_`EMa81BrA@ctnfQFHH89x9x>wV+=4?oZzVD(E~qCC#Bq*MOf4 zbyt+YqV=a(IK4^hBfz=0=Zrn8kaY-gS0>y+5Zm{~<5J2d=^BBv%jb zk6O<}^4DL*8cK=(6yd0@-{fltrjbnKc-Y)@$F{)9DU{Ou<#boL^T3DSX%FeXoxOK`9E&P%T{s^cp-}H5_?VYBW{Vef{?^pc>g5 zj`4ggfZ(M7zI@Ng`*ZrOD|r##Z~6BvvPT^ z!10?uwAP=W9w0aR1|SlC8m7^GD2ljHw*LL??I)<)ze$_M-Q932F&dfeP05Nh7N{$#1(Sw*1(b`Yk7Hu|hu43OO}f7| z3WiRXCPA-34l26L+5zO^VEW{NXe6%TD|lc^)6 zaBSlv_OQu8 znZ2U8Z}QbP@6w!#TLX<`F%rd+)iqEYRAZJ&9XAIrh#HP@v23zeboss}L-g?Gk#xXG zR(wE414i*l3acU*zI%dW=3Ke_`eZGRSTwCh)+Y)Vs}~^rU9TzK09r5*(PHvLO7{%O!1f@J1&{-91afm!gsu{@|@JeP%>$2=iGAc*9l<0M!90xU}&9D2vd0H{-d}H}mgL+|)IJJ>DA? zw}z>O{6sznlT~(JF{%ioHCzg+k>qL!$2R^o#gw=0Pbht%y9rWTco+D{>L$=*n7+w~ zkGhnVYw8@=hna1Bj%Fjp8{Tscc%v$eqzUvd65J>6w*j|URHcG}XzK@%ifnwoC%OIv z=5xXfw;(cSa^GBi0(CN4G@Mx!0Hwif2L3R*@p_rk|00wy@ZFpS*x|E`4P54khb-b=+2Hx1;=M7%T__U85+%&3v%w)*E%OrVS}mq3+?|G?;?xJX zFo7$VUt9VuRaX`vz_XOdTJ`*E67tdm%BbG=tj4f&ih6zvCp>72hwQUEm`aa}l4QmB z&_7nGO+S>8X_>ON#?h8_wa1E)TDU%UqvR3D*Ra39Jt~AlA@y*WOR1F@D(k zNbYaksyH*g`_FOg@Z!J_2Nh9#CH z{k+m}Eh&Te0sJr}us&ezMd!JRTQORE-GZQAck zG=q4YaWB>xUl}4cgN9I-o$@YG0EzdW`~UlK`kzw*>wV9^5|ez^O_)vkWcL&s-SHvR z1^>IZDCkmt%8G;$^Q!Tw2xDQ{Oi*8n0UK zw)}I9*$PJGD<`AS@Z#$~jmalpfNWqam=eZO(1^(pcaMY8G$qyl9EsZ&-NPOQz&PM+ z#A`ADBYRuN`O1l7J^9O05=grgkxpIjGUn%(thoQT|4CB7!(+o?l)~o5-+0Corod|YE$WG0h^!4N5$uVh#I(7goc`8YVV3onD%RFUDAq}l=5=b zfytJ!mzs7X^om*wCDPgBNPQf#6v=_fzeu3&Z$I9RT=hd#A_rJ%%4ZM(KWl z8vFe;!RN5we$Y2?FJWrtBa`ow4^HS`wTPp1)dHD_0W9irCEF`>Wnl3XlNHa`@CNM1J+TuK|=6KP5=7nM* zus<(fBkKB$h=$;jVjk z5fNU0^_9rK^!VLFkEVMyg>03%cV&)7>F3kd_kH)aFJINaXFC7J>&0Gw>daYApV^6G zOax?cq*ykb_g2M{0!ueKH^3*9LGo%lM2peK?Joc@zx)l90hbXmivznx)zW23SPAN7 zY0{SQId>ij|B3mFQB(rvhCRKO&vA zh(s8@>#^S}>Y*>M!((`T2zr_zxBq0F6mdp#KKkXeG;x0XyO(L|%uT30(SY=ASw4OxvnBF#lN};*M>efg+&n@JHiV3$qyTeDHJ&T#g#ChHU*I)-re(B?{$5i0+ zr6O_@FOEM)r>WU-+RDSn51WUA0vgld9*HfH8uD@i?(?3MEU~|j(}Z`$WMr@2#HFkK zK2pLjS^N3dsk@WcLMBv&<{_o-4ueZb8UlkwdC$}_AG_?3(^M$t zy}&IrMmBd(Qnyd!WOs67?EgeF>#2LT5h=X>7vEzl!O2w0lZaBxMx@J9iFaQo=#3t| znZw4evSa=AqX;sU-?#4FW$W(yK}N)DKD`e(S)w}V55E$fyA46MpJWEKSH1y0VA}ev z8{I2KYWO5b_$8En&~M$i*=g}L9yh*FFm;pxbYyn+DP;ReTCb+Mg0$QMl64ZY5V&yh z^akR$@WPMYM!aA?f^0+wm`ij+R!7X^K(w3y>AJ$DASRf0`8VH)B1ku&zVwM(c<%H@ zbUH32PIAI2Sz`d$3Z{bkj9Nb(cf|ZVSaXW>ga1+xb?688>ARVyO0;f_9@@Ff zLWdC2D%Mi~DpSEvqd7|A-f)X9-YS3#w_Vugjtjet{S47eGXJ~k{*~8n*M2{-nio%{bv z@oR1%D-pgpjub=ApJYRn#rNJsCH$bo!8P`C6=Cd>=-1L_M(_bPzs@-kZgyU?u@nbCaSUt_^=_DityB;p~*Z)~D!=ffx1+!zbF@{ggoZE;r~<8B^#E*86h>c4`DhcY%)w{4G%kJO zIM1KHWhv_xMq4?(maG>OmfbB{VUUNzC~@(v{&*j|8Di_f-v;~2z>~q}6iq756%bJG z#S=!tiMP#o`b9BuI$~KwU&r$0T*-S9N)L z0cqj&pIY{?yVQqC%t*&!_Vw+`?F^eal|%2Q@cF5LDs%&OkDLeyHkdLA2du1bU^x~w_BHMQ@|Y8id&b>l?px&$y}Vh*}zv+LK-@ZL9+Cn+z2Ot zIQzOH)+oCt5r-?^dkrZ{6KCcz{V}?u+9j@*$zkHp-o?%>np>*~b9D-ewULeUr>MIp zp)L9pl`rpuBw1(vhpAw#!pZy20`S^jy#!5B2`PVf$Go8u66hixzRFB;o$MQ^OF>n_ zDxk%^a{8WgoV@RB$Ya?w`<-k5ppz3I2R-=HIJjGva3~nI^F?L?izir^@-ohM-Xizr4DMa9E-OIrqk$$Hm6g#sbf<1zaC z++D|U8F=xHx4u9POM`B_yLacUJa;;zgv10`P-VdS z)Ks!U_>vpQN<{LiKvASQ?Oj(?Q$e>5z4zX$fFLD+NRvnh=|urSiYP^;gY=Gc2ptq5 zR1pik*H8jP=_&})2~q+Hy(hVGt>6FUzTc;N)_K@x&)##+>@{oF>~FrA^N|XVugI`D z^_;&Nc|@SioF8+QE9R+Zdmm#MsZhf&ThdfnYh>Z9;6Eqf9>lfJ$Ydq>#l+$Uyu%Z4 zT9x-XMxo#?H!Ka-YLxxOR4<-7&)#I|df!L7=W98sQNoH1t>TIlv zwlk#TbePn?jfCBLDYkI1OUr+acp?2dJ^=EA-QALkqGYH47nShO*9@g^VY7)P-3`1j z@MBcaD=zJ}Y0Ap6~s>(hW2{dpT9QKSkijyS1+!&3Om>|gKoh*YN6~Dc8&3R zhJziFfcjRWYunk?jAm_}?0h-nD?j zLykZeJQE}=!`vuUKTu6SSEP?p*w`gQb58UOerCJ-S`7f9jCIM8byPTw;V%#qo!Ir= zT!bXo3Wa5L(-k0yH~U=nNa)WDOFoBSb<0wGw&AN9N>?PDj?$5_8p59z*cNwn#bo&x zD{R<99yCQs(*u*OxOH10iL;07LMdkT8imxJN9(p8L=(Vi77ib#uDHHZ3x>c`V?HvE zuJfVa;bXBmTg2qu!__G_)MB6Axo4&^-x@_3Dhh6F4N$eW?I&iao_v(5>q1`eInxc1 ztT8A|Qf2;&T`g8tHa#*qP12C^hO$+d?0L@3#MIax!}p%3w%D0|7mWPC{u@2gAS!)w zs=4+h#XR8`)KQf0S3N{zUya2lQ-gZICmG%@)KBhsNO;Ekrb3s^Ip z{OMLU-+IHJvWM1h8%5!d)^trRMs=URRuF$L1Zk@?Ai=I8^MT(p`gbh&M9}ulLIOwS zp49U+(>#`GV72aVdu*>b+}l{5do<0MR{Ojk0rRipn*Y!VkB&U<6!^j~XeUnF15fct zKeh4jNKSHMbm_2u=cIkcQ`EF=ezG_?CsAl8{=HG4Of-;YPHQ$N%3!7wJJ3d21)SA5 zU`$%sQ<>AU?mAX3p~jS@Rj2;G1deHuG2p(%+jLV(HO|l~&y7}NZf8`QMk+m9**TCEDKd3&v4QO! zr*ivn`>o~I9~9_J=0X~rG9&S2)zn4e>-@fHrmAJKX}UxE)3kM$TtSG7f@->Tib!aZ z*_BAz6ROE966jApKrqciWlWRa(_G52tK;~%Yy5^ichVD;I`*q&8pWf)T3a7(r1{M$ z4D7QYmi))?I<)r~W+p}``P34h^x24xmA9=5t{z))7BplGCG>=`YMvk5=^0jxCyKdg z8OZurnMCly)=Y=Q$JJkxY`vvw{HRnK1ns{f_HYN1NcfyJ83II+OIXQqfRORtBJ^(2 zx1-zU+|n&Gt_ilN) zS4N(IGHV|D&!o&$R%%m2@X!_?uj?^~-unl@G9I(HT=PZ~&bTvg)rWg9EjROaWVWkf z@Wdnu^d0;+g0P2>XNQshi@Z>r%&3k1J7OnGE|@J>x5Nj>ef= z*nrb9FBlcoAL^wPF;~cYR2Yyq3)4I}z&vjB!Q6*0UwJ^kA@9VC#LSIT2q|vtM`rd% zYPV?q-t|NKprfipt4ADtu2AkhuMvR+h_@KFW^Hw4R zVVd=H3<w(Z17Z(@ZfJ$;MF7Xakxhvh+S@jXjD9O-MIH+0dtLDp>Vex;` z%(?5Qt7wKZbf>IwSt2FyM<(~2JoS*@*=v9srIM-7@9-rA0x%CDSleSE18G)`{6_qi zMiMQO>&$ce-s#(MRMUkz6}e05?_Pjx)F_e)TP0z|jsvk8hgs zfu)9|z+3Z19-TQgACFc=Ck_s%ROA!ZhQ#7S)NOy8T;gYdpAWCcU(`*XeBVcAuPydV zzg2vqp&8Uei$@zym)+c{kDEX{VWr*o@e;tOoJgWQJ zD7lH9BOcpprcxwchvB;IKCy$Ai{=2F~bl+aN5WekEDO4Sv#iIhGjFxs9Eu-Y0g(oefaJ0G-!oNzQeQYPu%dy*dl^y|I$-t^|ALhLNZZ8 z`g#u({a|!6aV$jd4q0_ux?RWm!&Bp>AF(41UOB~xOHkshRnD3zp7B`rYYlwx-c7Oq zhONb)xt+|Zta_h^S4UOe^acomxK|sg`BpPrm{uvpOM7 zBdDLnJ+iM$ywHaEwkZ=0xgOt0d{I$~Ip1vBr}tlP*?iTGne$6kd-Wz~0hb+Xz(7=M zXReN5m%g=Bs#hwoN^={g_gLY~{O*vwTcv5m$w3C917!ja7%)v%JXz4M5JPueyC6a; zBwx&pm72QAHnfMwG=z(Ooa}lUtKnOB#zwb2|D_YHTY-;i&kxs1dCqr$3Ik9|W59%z zC@5HZq*Ne!~o)02U9muZErSP6ohWp0`FH}T;St4Nl-E= zA6Dwpn85Bc1cSuEgQYz?Rmw~gbU!pEcvlNt{CUfhK6`cXj$#PeiS?MV?Ne|J5~h_; z@f!C3Y*+bAlF@>1Kod%u!%#ohIfTeYlmJCfFETU1pvDyC>veQDah!nsBuxbuU+}B^ z-;lXyIbso`l5~l1bzL9UHr8T4w*e?xO6ORdju_^1r z7K2{uqjo)*rpqj|hP-`HZO!#&Zz&1A6dl<6O{{qHh9T{xB)_S+C<@CA_{;ibabAXw z%CNPJ?|QGHOawmaarr^l$ukc21ge56f$@D`z$4=pfYiuS8j%2qh|tNd+}5~-OnRH; zJDr2%OrCwXx*C>wp`U$`L8_>O!z}1P7c{Ufl+m!V1~2@j67097x0WjM!ElLO-`AV& z9>67rRoxYArd5AnYd~>}MK@u1a@EX^YvvZ>OB@QEVb=;4RiUmqBJm9WI+|Ig2p(*A zy)F;GFecf-V@$+1S3C$j6W_y}d?)FGO4ELK2|oEtLNiQljX<+hyZ|IA^L5mX=@u(- zU73A4Fa*dF<#D^IelGl}xwO}sEGWDG)2IHp);~360NQJ{eb>w)!5f8z6M%3bp#JA0 zr@zManODC`fEFO0EUwOH#2tQwMTSY2XTtEl9s|lW1E(!;FpA2uyQ9Nd@?pGx zVn7^~*8Rn{KpAk_;@LkIO{gp=J1{D9>js{9%;D&;*}a@A$ZF3^xpc3|6j_yzRcMaj z%qR5FYWl{T>{zo%EZ-hM7uD4>dj=2=a$k{r9z4cSL_i0m0hsd=7O5AaLu1MHB%ZP= zDotMX4l*as={=|n?(;{SN<+$z7f>E-8!6J) z?;;}TADRc+w*IYg+a{Xt865AtBUCd=3F3~acp8IMKEm+Jdc9U@G|q4o|-^XE2r z10GxuGa-#>3I?}W9}W^Kv6iMcUe302P&=$=dV#r6BJkZ>2kA}~>_GeX@9RM8iWhUI z$LOo&`52g($JTUx_h);>1Xrdn)m;ZKBO%FGQ#_9Re)oKUag54P4nq6o6=Ax9*|SRp z_2+K3;D!=YL7oztB4JvRK}u8hXVHX@Ncc$ZN2tvP#(p*M4zKmv#aWYZtY@sxh!%wq zC32!}tO+N@0WHqFq;Lp;v!$i3Axmop0b}4`=?S5uPs%_K`53jCHphA>Tu{%~+kK6h z&Cbccsw57&Nf<&j@-ztb`1HOdJ#x8_E(*b48`-=c;;X(muns2)bYSg=3D2}^9sIt6 z{jQ8v%G$)i&nywi2#w#00XY2uR zh84V{PzV-|0V#cbN*3l@p-N*V`|_g6&l#mFFRTj=|e|N8wClq@UA^!`2kr-50*3F)_@{@2@m mw?+v6-}L_@@P8KpoEm^*?PT3ucI!O=f9Y!*Yt?8t#{3Vd1r&$? literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/tex/color4.png b/NoteSkins/dance/midi-note-3d/tex/color4.png new file mode 100644 index 0000000000000000000000000000000000000000..7f20b92d8495362107dc7eb03fc440547355f701 GIT binary patch literal 160604 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
8S?rSP)5H{5aTGFK-o3DY+6{#Y1gzXJie`&go<8 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�HwuBv|*J7NXb*Wwzm&2%&iT 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 P!?MZF+4ior59@ybXOxAN literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/tex/color7.png b/NoteSkins/dance/midi-note-3d/tex/color7.png new file mode 100644 index 0000000000000000000000000000000000000000..c789887d455efccfcfc9eafb81334521693e5c87 GIT binary patch literal 30480 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

&(?l`sAdT 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 GCjSrEp_$15 literal 0 HcmV?d00001 diff --git a/Docs/Devdocs/negbpmtut/screen00221.jpg b/Docs/Devdocs/negbpmtut/screen00221.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35876856b48269e2acc823731de7e13e22a9c816 GIT binary patch literal 55593 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 literal 0 HcmV?d00001 From 9af2e9620437e249699c1dcfb26c5bd237c0613a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 21:14:24 -0400 Subject: [PATCH 069/241] [warps] Already added. --- src/NoteField.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 241c782310..958866b0a5 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -843,8 +843,6 @@ void NoteField::DrawPrimitives() } } - // todo: add warp text -aj - // Course mods text const Course *pCourse = GAMESTATE->m_pCurCourse; if( pCourse ) From 0692da91c6c3451eb248dfcc6496ae0450ad5d7a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 21:31:33 -0400 Subject: [PATCH 070/241] [warps] Be consistent, include Row and Beat. --- src/TimingData.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/TimingData.h b/src/TimingData.h index a43021acf8..6f43a3b818 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -929,6 +929,12 @@ public: * @return true if the row is inside a warp, false otherwise. */ bool IsWarpAtRow( int iRow ) const; + /** + * @brief Checks if the beat is inside a warp. + * @param fBeat the beat to focus on. + * @return true if the row is inside a warp, false otherwise. + */ + bool IsWarpAtBeat( float fBeat ) const { return IsWarpAtRow( BeatToNoteRow( fBeat ) ); } /** * @brief Add the WarpSegment to the TimingData. * @param seg the new WarpSegment. From 7e59c6094475044818f5a91b0c163665807f34a1 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 25 Mar 2011 21:31:47 -0400 Subject: [PATCH 071/241] [warps] Ignore all mines during a warp. --- src/Player.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Player.cpp b/src/Player.cpp index 194676330c..8f727a35d7 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2040,7 +2040,9 @@ void Player::StepStrumHopo( int col, int row, const RageTimer &tm, bool bHeld, b { case TapNote::mine: // Stepped too close to mine? - if( !bRelease && ( REQUIRE_STEP_ON_MINES == !bHeld ) && fSecondsFromExact <= GetWindowSeconds(TW_Mine) ) + if( !bRelease && ( REQUIRE_STEP_ON_MINES == !bHeld ) && + fSecondsFromExact <= GetWindowSeconds(TW_Mine) && + !GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow(iSongRow) ) score = TNS_HitMine; break; From fff2c5948e7dc340eb1d205f929f59ad062fff0c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 22:46:45 -0500 Subject: [PATCH 072/241] [br:warps] still doesn't do anything, but latest work on negstops (does not make WarpSegments yet) --- src/NotesLoaderSM.cpp | 162 ++++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 76 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index e95c725a32..74f119b403 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -117,82 +117,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) { out.m_fBeat0OffsetInSeconds = StringToFloat( sParams[1] ); } - else if( sValueName=="STOPS" || sValueName=="FREEZES" ) - { - vector arrayFreezeExpressions; - split( sParams[1], ",", arrayFreezeExpressions ); - - for( unsigned f=0; f arrayFreezeValues; - split( arrayFreezeExpressions[f], "=", arrayFreezeValues ); - if( arrayFreezeValues.size() != 2 ) - { - // XXX: Hard to tell which file caused this. - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", - sValueName.c_str(), arrayFreezeExpressions[f].c_str() ); - continue; - } - - const float fFreezeBeat = StringToFloat( arrayFreezeValues[0] ); - const float fFreezeSeconds = StringToFloat( arrayFreezeValues[1] ); - StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds ); - // XXX: Remove Negatives Bug? - new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); - new_seg.m_fStopSeconds = fFreezeSeconds; - - if(fFreezeSeconds < 0.0f) - { - // negative stops (hi JS!) -aj - if( PREFSMAN->m_bQuirksMode ) - { - // LOG->Trace( "Adding a negative freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - out.AddStopSegment( new_seg ); - } - else - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid stop at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); - } - else - { - // LOG->Trace( "Adding a freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - out.AddStopSegment( new_seg ); - } - } - } - else if( sValueName=="DELAYS" ) - { - vector arrayDelayExpressions; - split( sParams[1], ",", arrayDelayExpressions ); - - for( unsigned f=0; f arrayDelayValues; - split( arrayDelayExpressions[f], "=", arrayDelayValues ); - if( arrayDelayValues.size() != 2 ) - { - // XXX: Hard to tell which file caused this. - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", - sValueName.c_str(), arrayDelayExpressions[f].c_str() ); - continue; - } - - const float fFreezeBeat = StringToFloat( arrayDelayValues[0] ); - const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] ); - - StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true ); - // XXX: Remove Negatives Bug? - new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); - new_seg.m_fStopSeconds = fFreezeSeconds; - - // LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - - if(fFreezeSeconds > 0.0f) - out.AddStopSegment( new_seg ); - else - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid delay at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); - } - } - else if( sValueName=="BPMS" ) { vector arrayBPMChangeExpressions; @@ -282,6 +206,92 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) } } + else if( sValueName=="STOPS" || sValueName=="FREEZES" ) + { + vector arrayFreezeExpressions; + split( sParams[1], ",", arrayFreezeExpressions ); + + for( unsigned f=0; f arrayFreezeValues; + split( arrayFreezeExpressions[f], "=", arrayFreezeValues ); + if( arrayFreezeValues.size() != 2 ) + { + // XXX: Hard to tell which file caused this. + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", + sValueName.c_str(), arrayFreezeExpressions[f].c_str() ); + continue; + } + + const float fFreezeBeat = StringToFloat( arrayFreezeValues[0] ); + const float fFreezeSeconds = StringToFloat( arrayFreezeValues[1] ); + StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds ); + // XXX: Remove Negatives Bug? + new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); + new_seg.m_fStopSeconds = fFreezeSeconds; + + if(fFreezeSeconds < 0.0f) + { + // Convert negative Stops into Warps. + // 60/BPM = quarter note value (in seconds) + // quarter note value * 4 = number of measures to skip + // (WinDEU's guide says 8, but this may not be right.) + + // get BPM at current row: + BPMSegment curBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(fFreezeBeat)); + float fQuarterNoteVal = 60 / curBPM.m_fBPS; + float fSkipToSeconds = fQuarterNoteVal * 4; + + if( PREFSMAN->m_bQuirksMode ) + { + // LOG->Trace( "Adding a negative freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); + out.AddStopSegment( new_seg ); + } + else + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid stop at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); + } + else + { + // LOG->Trace( "Adding a freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); + out.AddStopSegment( new_seg ); + } + } + } + + else if( sValueName=="DELAYS" ) + { + vector arrayDelayExpressions; + split( sParams[1], ",", arrayDelayExpressions ); + + for( unsigned f=0; f arrayDelayValues; + split( arrayDelayExpressions[f], "=", arrayDelayValues ); + if( arrayDelayValues.size() != 2 ) + { + // XXX: Hard to tell which file caused this. + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", + sValueName.c_str(), arrayDelayExpressions[f].c_str() ); + continue; + } + + const float fFreezeBeat = StringToFloat( arrayDelayValues[0] ); + const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] ); + + StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true ); + // XXX: Remove Negatives Bug? + new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); + new_seg.m_fStopSeconds = fFreezeSeconds; + + // LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); + + if(fFreezeSeconds > 0.0f) + out.AddStopSegment( new_seg ); + else + LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid delay at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); + } + } + else if( sValueName=="TIMESIGNATURES" ) { vector vs1; From 3447567a61598640c6bb98436a375e0da94625b2 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 23:04:41 -0500 Subject: [PATCH 073/241] [br:warps] ignore mines if they are within a warp section; untested but should work in theory --- src/Player.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Player.cpp b/src/Player.cpp index 8f727a35d7..fdf02b8fc6 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2639,6 +2639,10 @@ void Player::UpdateJudgedRows() int iRow = iter.Row(); TapNote &tn = *iter; + // if row is within a warp section, ignore it. -aj + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow(iRow) ) + continue; + if( iRow != iLastSeenRow ) { iLastSeenRow = iRow; From 97e9e63d5c9aeb88debb6e9bcabb81327e77edfd Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 25 Mar 2011 23:07:13 -0500 Subject: [PATCH 074/241] revert unneeded code --- src/Player.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Player.cpp b/src/Player.cpp index fdf02b8fc6..8f727a35d7 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2639,10 +2639,6 @@ void Player::UpdateJudgedRows() int iRow = iter.Row(); TapNote &tn = *iter; - // if row is within a warp section, ignore it. -aj - if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow(iRow) ) - continue; - if( iRow != iLastSeenRow ) { iLastSeenRow = iRow; From 53421eea4ffaa28f11a856eb050b77576b699b33 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 00:17:42 -0500 Subject: [PATCH 075/241] [br:warps] more work on NotesLoaderSM, re: warps from Negative Stops --- src/NotesLoaderSM.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 74f119b403..f01caa1198 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -105,7 +105,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) out.m_vTimeSignatureSegments.clear(); vector arrayWarpsFromNegativeBPMs; - //vector arrayWarpsFromNegativeStops; + vector arrayWarpsFromNegativeStops; for( unsigned i=0; im_bQuirksMode ) { From 417848ce4e6a84399df1340651f1bbc28c0e131a Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 00:19:30 -0500 Subject: [PATCH 076/241] [br:warps] better variable name for FreezeSeconds/SecondsPerBeat --- src/NotesLoaderSM.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index f01caa1198..8d4cbe7ed9 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -238,7 +238,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) BPMSegment curBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(fFreezeBeat)); float fSecondsPerBeat = 60 / curBPM.m_fBPS; // stop length (# measures to skip) = secsPerBeat * 8 - float fSkipToSeconds = fFreezeSeconds/fSecondsPerBeat; + float fSkipBeats = fFreezeSeconds/fSecondsPerBeat; // location - stoplength = time to subtract from current. // WarpSegment wsTemp( BeatToNoteRow(fFreezeBeat), [unknown] ); From 784dcb5f607689414305f15ba926c4a6e6dd3168 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 00:25:56 -0500 Subject: [PATCH 077/241] [br:warps] just come cleanups --- src/NotesLoaderSM.cpp | 55 ++++--------------------------------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 8d4cbe7ed9..6232593e7f 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -239,7 +239,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) float fSecondsPerBeat = 60 / curBPM.m_fBPS; // stop length (# measures to skip) = secsPerBeat * 8 float fSkipBeats = fFreezeSeconds/fSecondsPerBeat; - // location - stoplength = time to subtract from current. // WarpSegment wsTemp( BeatToNoteRow(fFreezeBeat), [unknown] ); // arrayWarpsFromNegativeStops.push_back( wsTemp ); @@ -284,7 +283,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // XXX: Remove Negatives Bug? new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); new_seg.m_fStopSeconds = fFreezeSeconds; - + // LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); if(fFreezeSeconds > 0.0f) @@ -338,12 +337,12 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) out.AddTimeSignatureSegment( seg ); } } - + else if( sValueName=="TICKCOUNTS" ) { vector arrayTickcountExpressions; split( sParams[1], ",", arrayTickcountExpressions ); - + for( unsigned f=0; f arrayTickcountValues; @@ -355,7 +354,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) sValueName.c_str(), arrayTickcountExpressions[f].c_str() ); continue; } - + const float fTickcountBeat = StringToFloat( arrayTickcountValues[0] ); int iTicks = atoi( arrayTickcountValues[1] ); // you're lazy, let SM do the work for you... -DaisuMaster @@ -379,53 +378,9 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) } } - // warps (replacement for Negative BPM and Negative Stops) - /* - else if( sValueName=="WARPS" ) - { - vector arrayWarpExpressions; - split( sParams[1], ",", arrayWarpExpressions ); - - for( unsigned f=0; f arrayWarpValues; - split( arrayWarpExpressions[f], "=", arrayWarpValues ); - if( arrayWarpValues.size() != 2 ) - { - // XXX: Hard to tell which file caused this. - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid #%s value \"%s\" (must have exactly one '='), ignored.", - sValueName.c_str(), arrayWarpExpressions[f].c_str() ); - continue; - } - - const float fWarpStart = StringToFloat( arrayWarpValues[0] ); - const float fWarpBeats = StringToFloat( arrayWarpValues[1] ); - - if( fWarpStart > 0.0f && fWarpBeats > 0.0f ) - { - WarpSegment new_seg( BeatToNoteRow(fWarpStart), fWarpBeats ); - out.AddWarpSegment( new_seg ); - } - else - { - // Currently disallow negative warps, to prevent the same - // kind of problem that happened when Negative/Subtractive - // BPMs arrived on the StepMania scene. -aj - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid warp at beat %f lasting %f beats.", fWarpStart, fWarpBeats ); - } - } - } - */ - - // Note: Even though it is possible to have Negative BPMs and Stops in - // a song along with Warps, we should not support files that contain - // both styles of warp tricks (Negatives vs. #WARPS). - // If Warps have been populated from Negative BPMs, then go through that - // instead of using the data in the Warps tag. This should be above, - // but it breaks compiling so... + // Convert Negative BPMs and Negative Stops to WarpSegments. if(arrayWarpsFromNegativeBPMs.size() > 0) { - // zomg we already have some warps... for( unsigned j=0; j Date: Sat, 26 Mar 2011 01:07:14 -0500 Subject: [PATCH 078/241] [br:warps] ignore .lnk; should be in default --- .hgignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgignore b/.hgignore index ea6889df61..aac27be6ce 100644 --- a/.hgignore +++ b/.hgignore @@ -72,6 +72,7 @@ Data/SpeedMods.txt Program/StepMania*.lib crashinfo.txt Utils/temp* +*.lnk syntax: regexp .*\#.*\#$ From aac5710fb482e3a3f957ee63932e50e7a74e4a5c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 01:08:05 -0500 Subject: [PATCH 079/241] [br:warps] my changes to NotesLoaderSM for Negative Stops -> Warps. (still not working, sadly) --- src/NotesLoaderSM.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 6232593e7f..65fdaaab86 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -236,12 +236,11 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // get BPM at current row: BPMSegment curBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(fFreezeBeat)); - float fSecondsPerBeat = 60 / curBPM.m_fBPS; - // stop length (# measures to skip) = secsPerBeat * 8 + float fSecondsPerBeat = 60 / curBPM.GetBPM(); float fSkipBeats = fFreezeSeconds/fSecondsPerBeat; - // WarpSegment wsTemp( BeatToNoteRow(fFreezeBeat), [unknown] ); - // arrayWarpsFromNegativeStops.push_back( wsTemp ); + WarpSegment wsTemp( BeatToNoteRow(fFreezeBeat), BeatToNoteRow(fFreezeBeat+fSkipBeats) ); + arrayWarpsFromNegativeStops.push_back( wsTemp ); if( PREFSMAN->m_bQuirksMode ) { @@ -386,8 +385,17 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) out.AddWarpSegment( arrayWarpsFromNegativeBPMs[j] ); } } - // warp sorting will need to take place. - //sort(out.m_WarpSegments.begin(), out.m_WarpSegments.end()); + // do the same for Warps from Negative Stops. + /* + if(arrayWarpsFromNegativeStops.size() > 0) + { + for( unsigned j=0; j Date: Sat, 26 Mar 2011 02:36:44 -0400 Subject: [PATCH 080/241] [warps] Negative BPMs converted to Warps. --- src/NotesLoaderSM.cpp | 98 ++++++++++++------------------------------- 1 file changed, 27 insertions(+), 71 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 65fdaaab86..05a71f7621 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -104,7 +104,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) out.m_WarpSegments.clear(); out.m_vTimeSignatureSegments.clear(); - vector arrayWarpsFromNegativeBPMs; vector arrayWarpsFromNegativeStops; for( unsigned i=0; i arrayBPMChangeExpressions; split( sParams[1], ",", arrayBPMChangeExpressions ); + // prepare storage variables for negative BPMs -> Warps. + float negBeat = -1; + float negBPM = 1; + for( unsigned b=0; b arrayBPMChangeValues; @@ -136,72 +139,33 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) const float fBeat = StringToFloat( arrayBPMChangeValues[0] ); const float fNewBPM = StringToFloat( arrayBPMChangeValues[1] ); - // XXX: Remove Negatives Bug? - BPMSegment new_seg; - new_seg.m_iStartRow = BeatToNoteRow(fBeat); - new_seg.SetBPM( fNewBPM ); - - // convert negative BPMs into Warp segments + if( fNewBPM < 0.0f ) - { - vector arrayNextBPMChangeValues; - // get next bpm in sequence - if((b+1) < arrayBPMChangeExpressions.size()) - { - split( arrayBPMChangeExpressions[b+1], "=", arrayNextBPMChangeValues ); - const float fNextPositiveBeat = StringToFloat( arrayNextBPMChangeValues[0] ); - const float fNextPositiveBPM = StringToFloat( arrayNextBPMChangeValues[1] ); - - // tJumpPos = (tPosBPS-abs(negBPS)) + (gPosBPMPosition - fNegPosition) - float fDeltaBeat = ((fNextPositiveBPM/60.0f)-abs(fNewBPM/60.0f)) + (fNextPositiveBeat-fBeat); - //float fWarpLengthBeats = fNextPositiveBeat + fDeltaBeat; - WarpSegment wsTemp( BeatToNoteRow(fBeat), BeatToNoteRow(fNextPositiveBeat+fDeltaBeat) ); - arrayWarpsFromNegativeBPMs.push_back(wsTemp); - - /* - LOG->Trace( ssprintf("==NotesLoSM negbpm==\nfnextposbeat = %f, fnextposbpm = %f,\nfdelta = %f, fwarpto = %f", - fNextPositiveBeat, - fNextPositiveBPM, - fDeltaBeat, - fWarpToBeat - ) ); - */ - /* - LOG->Trace( ssprintf("==Negative/Subtractive BPM in NotesLoader==\nNegBPM has noterow = %i, BPM = %f\nNextBPM @ noterow %i\nDelta value = %i noterows\nThis warp will have us end up at noterow %i", - BeatToNoteRow(fBeat), fNewBPM, - BeatToNoteRow(fNextPositiveBeat), - BeatToNoteRow(fDeltaBeat), - BeatToNoteRow(fWarpToBeat)) - ); - */ - //float fDeltaBeat = ((fNextPositiveBPM/60.0f)-abs(fNewBPM/60.0f)) + (fNextPositiveBeat-fBeat); - /* - LOG->Trace( ssprintf("==NotesLoader Delta as NoteRows==\nfDeltaBeat = %f (beat)\nfDeltaBeat = (NextBPMSeg %f - abs(fBPS %f)) + (nextStartRow %i - thisRow %i)", - fDeltaBeat,(fNextPositiveBPM/60.0f),abs(fNewBPM/60.0f),BeatToNoteRow(fNextPositiveBeat),BeatToNoteRow(fBeat)) - ); - */ - - out.AddBPMSegment( new_seg ); - - continue; - } - else - { - // last BPM is a negative one? ugh. -aj (MAX_NOTE_ROW exists btw) - out.AddBPMSegment( new_seg ); - } - } - - if(fNewBPM > 0.0f) - out.AddBPMSegment( new_seg ); - else { out.m_bHasNegativeBpms = true; - // only add Negative BPMs in quirks mode -aj - if( PREFSMAN->m_bQuirksMode ) - out.AddBPMSegment( new_seg ); + negBeat = fBeat; + negBPM = fNewBPM; + } + else if( fNewBPM > 0.0f ) + { + // add in a warp. + if( negBPM < 0 ) + { + WarpSegment new_seg; + new_seg.m_iStartRow = BeatToNoteRow(negBeat); + new_seg.m_fEndBeat = fBeat + (fNewBPM / -negBPM) * (fBeat - negBeat); + out.AddWarpSegment( new_seg ); + + negBeat = -1; + negBPM = 1; + } else - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid BPM change at beat %f, BPM %f.", fBeat, fNewBPM ); + { + BPMSegment new_seg; + new_seg.m_iStartRow = BeatToNoteRow(fBeat); + new_seg.SetBPM( fNewBPM ); + out.AddBPMSegment( new_seg ); + } } } } @@ -377,14 +341,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) } } - // Convert Negative BPMs and Negative Stops to WarpSegments. - if(arrayWarpsFromNegativeBPMs.size() > 0) - { - for( unsigned j=0; j 0) From e66b0cbf39bb1f96d0980559f9dec5b115e21df1 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 26 Mar 2011 13:42:41 +0700 Subject: [PATCH 081/241] [warps] judgement fix + iStepSearchRows is now seconds-based. + GetClosestNonEmptyRowDirectional and GetClosestNoteDirectional no longer return row in warps. --- src/Player.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Player.cpp b/src/Player.cpp index 8f727a35d7..102652e074 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1520,6 +1520,8 @@ int Player::GetClosestNoteDirectional( int col, int iStartRow, int iEndRow, bool // Is this the row we want? do { const TapNote &tn = begin->second; + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( begin->first ) ) + break; if( tn.type == TapNote::empty ) break; if( !bAllowGraded && tn.result.tns != TNS_None ) @@ -1569,6 +1571,11 @@ int Player::GetClosestNonEmptyRowDirectional( int iStartRow, int iEndRow, bool b ++iter; continue; } + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iter.Row() ) ) + { + ++iter; + continue; + } return iter.Row(); } } @@ -1966,7 +1973,7 @@ void Player::StepStrumHopo( int col, int row, const RageTimer &tm, bool bHeld, b * Either option would fundamentally change the grading of two quick notes * "jack hammers." Hmm. */ - const int iStepSearchRows = BeatToNoteRow( StepSearchDistance * GAMESTATE->m_fCurBPS * GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate ); + const int iStepSearchRows = BeatToNoteRow( GAMESTATE->m_pCurSong->m_Timing.GetBeatFromElapsedTime( GAMESTATE->m_fMusicSeconds + StepSearchDistance ) ) - iSongRow; int iRowOfOverlappingNoteOrRow = row; if( row == -1 ) { From eed0be6fe05805f506a79738bd1f99ee8220fc50 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 26 Mar 2011 14:21:06 +0700 Subject: [PATCH 082/241] [warps] ScaleRegion, InsertRows, DeleteRows to make it point warps to the right place. --- src/ScreenEdit.cpp | 2 +- src/TimingData.cpp | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index d11c08f2bc..8707da7293 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3503,7 +3503,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns // don't move the step from where it is, just move everything later NoteDataUtil::InsertRows( m_NoteDataEdit, BeatToNoteRow(GAMESTATE->m_fSongBeat) + 1, BeatToNoteRow(fStopBeats) ); - m_pSong->m_Timing.InsertRows( BeatToNoteRow(GAMESTATE->m_fSongBeat) + 1, BeatToNoteRow(fStopSeconds) ); + m_pSong->m_Timing.InsertRows( BeatToNoteRow(GAMESTATE->m_fSongBeat) + 1, BeatToNoteRow(fStopBeats) ); } break; case undo: diff --git a/src/TimingData.cpp b/src/TimingData.cpp index baf3e0c3a6..d7a9ccb3cf 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -676,7 +676,7 @@ void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex, bool else m_BPMSegments[i].m_iStartRow = lrintf( (iSegStart - iStartIndex) * fScale ) + iStartIndex; } - + for( unsigned i = 0; i < m_StopSegments.size(); i++ ) { const int iSegStartRow = m_StopSegments[i].m_iStartRow; @@ -688,6 +688,25 @@ void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex, bool m_StopSegments[i].m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex; } + for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) + { + const int iSegStartRow = m_WarpSegments[i].m_iStartRow; + const int iSegEndRow = BeatToNoteRow( m_WarpSegments[i].m_fEndBeat ); + if( iSegEndRow >= iStartIndex ) + { + if( iSegEndRow > iEndIndex ) + m_WarpSegments[i].m_fEndBeat += NoteRowToBeat(lrintf((iEndIndex - iStartIndex) * (fScale - 1))); + else + m_WarpSegments[i].m_fEndBeat = NoteRowToBeat(lrintf((iSegEndRow - iStartIndex) * fScale) + iStartIndex); + } + if( iSegStartRow < iStartIndex ) + continue; + else if( iSegStartRow > iEndIndex ) + m_WarpSegments[i].m_iStartRow += lrintf((iEndIndex - iStartIndex) * (fScale - 1)); + else + m_WarpSegments[i].m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex; + } + // adjust BPM changes to preserve timing if( bAdjustBPM ) { @@ -735,7 +754,9 @@ void TimingData::InsertRows( int iStartRow, int iRowsToAdd ) for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) { WarpSegment &warp = m_WarpSegments[i]; - if (warp.m_iStartRow < iStartRow ) + if( BeatToNoteRow(warp.m_fEndBeat) >= iStartRow ) + warp.m_fEndBeat += NoteRowToBeat(iRowsToAdd); + if( warp.m_iStartRow < iStartRow ) continue; warp.m_iStartRow += iRowsToAdd; } @@ -825,6 +846,9 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete ) { WarpSegment &warp = m_WarpSegments[i]; + if( BeatToNoteRow(warp.m_fEndBeat) >= iStartRow ) + warp.m_fEndBeat = max( NoteRowToBeat(iStartRow), warp.m_fEndBeat - NoteRowToBeat(iRowsToDelete) ); + if( warp.m_iStartRow < iStartRow ) continue; From 337fa2f8012241a9e8895bedd0fb9849bb304567 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 26 Mar 2011 03:37:37 -0400 Subject: [PATCH 083/241] [warps] Negative Stops turn to Warps now. --- src/NotesLoaderSM.cpp | 80 ++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 05a71f7621..35336f7056 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -104,8 +104,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) out.m_WarpSegments.clear(); out.m_vTimeSignatureSegments.clear(); - vector arrayWarpsFromNegativeStops; - for( unsigned i=0; i arrayFreezeExpressions; split( sParams[1], ",", arrayFreezeExpressions ); + // Prepare variables for negative stop conversion. + float negBeat = -1; + float negPause = 0; + for( unsigned f=0; f arrayFreezeValues; @@ -189,36 +191,46 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) const float fFreezeBeat = StringToFloat( arrayFreezeValues[0] ); const float fFreezeSeconds = StringToFloat( arrayFreezeValues[1] ); - StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds ); - // XXX: Remove Negatives Bug? - new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); - new_seg.m_fStopSeconds = fFreezeSeconds; - - if(fFreezeSeconds < 0.0f) + + // Process the prior stop. + if( negPause > 0 ) { - // Convert negative Stops into Warps. - - // get BPM at current row: - BPMSegment curBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(fFreezeBeat)); - float fSecondsPerBeat = 60 / curBPM.GetBPM(); - float fSkipBeats = fFreezeSeconds/fSecondsPerBeat; - - WarpSegment wsTemp( BeatToNoteRow(fFreezeBeat), BeatToNoteRow(fFreezeBeat+fSkipBeats) ); - arrayWarpsFromNegativeStops.push_back( wsTemp ); - - if( PREFSMAN->m_bQuirksMode ) - { - // LOG->Trace( "Adding a negative freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - out.AddStopSegment( new_seg ); - } - else - LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid stop at beat %f, length %f.", fFreezeBeat, fFreezeSeconds ); + BPMSegment oldBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(negBeat)); + float fSecondsPerBeat = 60 / oldBPM.GetBPM(); + float fSkipBeats = negPause / fSecondsPerBeat; + + if( negBeat + fSkipBeats > fFreezeBeat ) + fSkipBeats = fFreezeBeat - negBeat; + + WarpSegment ws( BeatToNoteRow(negBeat), negBeat + fSkipBeats); + out.AddWarpSegment( ws ); + + negBeat = -1; + negPause = 0; } - else + + if( fFreezeSeconds < 0.0f ) { - // LOG->Trace( "Adding a freeze segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); - out.AddStopSegment( new_seg ); + negBeat = fFreezeBeat; + negPause = -fFreezeSeconds; } + else if( fFreezeSeconds > 0.0f ) + { + StopSegment ss( BeatToNoteRow(fFreezeBeat), fFreezeSeconds ); + out.AddStopSegment( ss ); + } + + } + + // Process the prior stop if there was one. + if( negPause > 0 ) + { + BPMSegment oldBPM = out.GetBPMSegmentAtRow(BeatToNoteRow(negBeat)); + float fSecondsPerBeat = 60 / oldBPM.GetBPM(); + float fSkipBeats = negPause / fSecondsPerBeat; + + WarpSegment ws( BeatToNoteRow(negBeat), negBeat + fSkipBeats); + out.AddWarpSegment( ws ); } } @@ -340,17 +352,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) } } } - - // do the same for Warps from Negative Stops. - /* - if(arrayWarpsFromNegativeStops.size() > 0) - { - for( unsigned j=0; j Date: Sat, 26 Mar 2011 14:51:30 +0700 Subject: [PATCH 084/241] [warps] Some simfiles change BPM after the warp, so should keep the positive BPM changes. Example simfile: Tsusurvivorgamush. --- src/NotesLoaderSM.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 05a71f7621..b949d8e2cc 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -159,7 +159,6 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) negBeat = -1; negBPM = 1; } - else { BPMSegment new_seg; new_seg.m_iStartRow = BeatToNoteRow(fBeat); From ac336215bd96a85d13335b554d501b05cc6b4bbd Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sat, 26 Mar 2011 22:07:24 +0700 Subject: [PATCH 085/241] [warps] allow stops inside warps and convert high bpm to warps + sometimes there are delays/stops in high BPM sections, they have to be handled inside a warp to be able to convert it easily. + on the stopped / delayed rows with warps, judging become enabled for that row. Issues: + the bpm threshould is hardcoded (right now it's 400000.0). someone change it please. + slight off-sync from conversion. haven't figured out how to work around it yet. --- src/GameState.cpp | 15 -------- src/NotesLoaderSM.cpp | 26 +++++++++++--- src/Player.cpp | 8 ++--- src/TimingData.cpp | 84 ++++++++++++++++++++++++------------------- 4 files changed, 73 insertions(+), 60 deletions(-) diff --git a/src/GameState.cpp b/src/GameState.cpp index 581c882b08..1a3f2d0793 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -961,21 +961,6 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti // "Crash reason : -243478.890625 -48695.773438" ASSERT_M( m_fSongBeat > -2000, ssprintf("Song beat %f at %f seconds", m_fSongBeat, fPositionSeconds) ); - //if( m_iWarpBeginRow != -1 || m_iWarpEndRow == -1 ) - - /* - if( m_iWarpBeginRow != -1 && m_fWarpDestination > 0.0f ) - { - float fWarpLength = m_fWarpDestination-NoteRowToBeat(m_iWarpBeginRow); - // There is a warp in this section. - LOG->Trace("warp at row %i lasts for %f beats, jumps to row %i", - m_iWarpBeginRow, - fWarpLength, - BeatToNoteRow(m_fWarpDestination)); - fPositionSeconds += (fWarpLength * m_fCurBPS); - } - */ - m_fMusicSeconds = fPositionSeconds; m_fLightSongBeat = timing.GetBeatFromElapsedTime( fPositionSeconds + g_fLightsAheadSeconds ); diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 71c52691fc..412807800f 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -122,6 +122,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // prepare storage variables for negative BPMs -> Warps. float negBeat = -1; float negBPM = 1; + float highspeedBeat = -1; for( unsigned b=0; b 400000.0 ) { - BPMSegment new_seg; - new_seg.m_iStartRow = BeatToNoteRow(fBeat); - new_seg.SetBPM( fNewBPM ); - out.AddBPMSegment( new_seg ); + highspeedBeat = fBeat; + } + else + { + // add in a warp. + if( highspeedBeat > 0 ) + { + WarpSegment new_seg; + new_seg.m_iStartRow = BeatToNoteRow(highspeedBeat); + new_seg.m_fEndBeat = fBeat; + out.AddWarpSegment( new_seg ); + highspeedBeat = -1; + } + { + BPMSegment new_seg; + new_seg.m_iStartRow = BeatToNoteRow(fBeat); + new_seg.SetBPM( fNewBPM ); + out.AddBPMSegment( new_seg ); + } } } } diff --git a/src/Player.cpp b/src/Player.cpp index 102652e074..13bae07600 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2561,7 +2561,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) continue; // Ignore all notes that are skipped via WARPS. - if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iter.Row() ) ) continue; if( tn.type == TapNote::mine ) @@ -2931,8 +2931,7 @@ void Player::HandleTapRowScore( unsigned row ) #endif // more warp hackery. -aj - if( row >= (unsigned)GAMESTATE->m_iWarpBeginRow && - row < (unsigned)(BeatToNoteRow(GAMESTATE->m_fWarpDestination)) ) + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( row ) ) return; if( GAMESTATE->m_bDemonstrationOrJukebox ) @@ -3036,8 +3035,7 @@ void Player::HandleHoldCheckpoint( int iRow, int iNumHoldsHeldThisRow, int iNumH #endif // more warp hackery. -aj - if( iRow >= GAMESTATE->m_iWarpBeginRow && - iRow < BeatToNoteRow(GAMESTATE->m_fWarpDestination) ) + if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iRow ) ) return; // don't accumulate combo if AutoPlay is on. diff --git a/src/TimingData.cpp b/src/TimingData.cpp index d7a9ccb3cf..00da97017b 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -348,7 +348,19 @@ bool TimingData::IsWarpAtRow( int iNoteRow ) const int i = GetWarpSegmentIndexAtRow( iNoteRow ); const WarpSegment& s = m_WarpSegments[i]; - return s.m_iStartRow <= iNoteRow && iNoteRow < BeatToNoteRow(s.m_fEndBeat); + if( s.m_iStartRow <= iNoteRow && iNoteRow < BeatToNoteRow(s.m_fEndBeat) ) + { + if( m_StopSegments.empty() ) + { + return true; + } + if( GetStopAtRow(iNoteRow) != 0.0f ) + { + return false; + } + return true; + } + return false; } int TimingData::GetTimeSignatureSegmentIndexAtRow( int iRow ) const @@ -499,11 +511,6 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float iEventRow = BeatToNoteRow(fWarpDestination); iEventType = FOUND_WARP_DESTINATION; } - if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) - { - iEventRow = itWS->m_iStartRow; - iEventType = FOUND_WARP; - } if( itBPMS != m_BPMSegments.end() && itBPMS->m_iStartRow < iEventRow ) { iEventRow = itBPMS->m_iStartRow; @@ -514,6 +521,11 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float iEventRow = itSS->m_iStartRow; iEventType = FOUND_STOP; } + if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) + { + iEventRow = itWS->m_iStartRow; + iEventType = FOUND_WARP; + } if( iEventType == NOT_FOUND ) { break; @@ -530,22 +542,12 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float case FOUND_WARP_DESTINATION: bIsWarping = false; break; - case FOUND_WARP: - bIsWarping = true; - if( itWS->m_fEndBeat > fWarpDestination ) - { - fWarpDestination = itWS->m_fEndBeat; - } - iWarpBeginOut = iEventRow; - fWarpDestinationOut = fWarpDestination; - itWS ++; - break; case FOUND_BPM_CHANGE: fBPS = itBPMS->m_fBPS; itBPMS ++; break; case FOUND_STOP: // TODO: update for Delays. - fTimeToNextEvent = bIsWarping ? 0 : itSS->m_fStopSeconds; + fTimeToNextEvent = itSS->m_fStopSeconds; fNextEventTime = fLastTime + fTimeToNextEvent; const bool bIsDelay = itSS->m_bDelay; if ( fElapsedTime < fNextEventTime ) @@ -559,6 +561,16 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float fLastTime = fNextEventTime; itSS ++; break; + case FOUND_WARP: + bIsWarping = true; + if( itWS->m_fEndBeat > fWarpDestination ) + { + fWarpDestination = itWS->m_fEndBeat; + } + iWarpBeginOut = iEventRow; + fWarpDestinationOut = fWarpDestination; + itWS ++; + break; } iLastRow = iEventRow; } @@ -599,17 +611,12 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const iEventRow = BeatToNoteRow(fWarpDestination); iEventType = FOUND_WARP_DESTINATION; } - if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) - { - iEventRow = itWS->m_iStartRow; - iEventType = FOUND_WARP; - } if( itBPMS != m_BPMSegments.end() && itBPMS->m_iStartRow < iEventRow ) { iEventRow = itBPMS->m_iStartRow; iEventType = FOUND_BPM_CHANGE; } - if( itSS != m_StopSegments.end() && itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) + if( itSS != m_StopSegments.end() && itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) // delays (come before marker) { iEventRow = itSS->m_iStartRow; iEventType = FOUND_STOP; @@ -619,11 +626,16 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const iEventRow = BeatToNoteRow(fBeat); iEventType = FOUND_MARKER; } - if( itSS != m_StopSegments.end() && !itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) + if( itSS != m_StopSegments.end() && !itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) // stops (come after marker) { iEventRow = itSS->m_iStartRow; iEventType = FOUND_STOP; } + if( itWS != m_WarpSegments.end() && itWS->m_iStartRow < iEventRow ) + { + iEventRow = itWS->m_iStartRow; + iEventType = FOUND_WARP; + } float fTimeToNextEvent = bIsWarping ? 0 : NoteRowToBeat( iEventRow - iLastRow ) / fBPS; float fNextEventTime = fLastTime + fTimeToNextEvent; fLastTime = fNextEventTime; @@ -632,6 +644,18 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const case FOUND_WARP_DESTINATION: bIsWarping = false; break; + case FOUND_BPM_CHANGE: + fBPS = itBPMS->m_fBPS; + itBPMS ++; + break; + case FOUND_STOP: + fTimeToNextEvent = itSS->m_fStopSeconds; + fNextEventTime = fLastTime + fTimeToNextEvent; + fLastTime = fNextEventTime; + itSS ++; + break; + case FOUND_MARKER: + return fLastTime; case FOUND_WARP: bIsWarping = true; if( itWS->m_fEndBeat > fWarpDestination ) @@ -640,18 +664,6 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const } itWS ++; break; - case FOUND_BPM_CHANGE: - fBPS = itBPMS->m_fBPS; - itBPMS ++; - break; - case FOUND_STOP: - fTimeToNextEvent = bIsWarping ? 0 : itSS->m_fStopSeconds; - fNextEventTime = fLastTime + fTimeToNextEvent; - fLastTime = fNextEventTime; - itSS ++; - break; - case FOUND_MARKER: - return fLastTime; } iLastRow = iEventRow; } From d44f42968dfae47cac63ebeab55d97f1f582cb1a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 26 Mar 2011 11:14:55 -0400 Subject: [PATCH 086/241] [warps] Use the value from SM4's recent betas. --- src/NotesLoaderSM.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 412807800f..632a00c2fe 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -12,7 +12,13 @@ #include "Steps.h" #include "PrefsManager.h" +/** @brief The maximum file size for edits. */ const int MAX_EDIT_STEPS_SIZE_BYTES = 60*1024; // 60KB +/** + * @brief The highest allowable speed before Warps come in. + * + * This was brought in from StepMania 4's recent betas. */ +const float FAST_BPM_WARP = 9999999.f; void SMLoader::LoadFromSMTokens( RString sStepsType, @@ -159,7 +165,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) negBPM = 1; } // too fast. make it a warp. - if( fNewBPM > 400000.0 ) + if( fNewBPM > FAST_BPM_WARP ) { highspeedBeat = fBeat; } From 7d327a8fe298784ddf81126a24f2769f98815a4f Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 11:36:58 -0500 Subject: [PATCH 087/241] [br:default] add .lnk to hgignore --- .hgignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgignore b/.hgignore index ea6889df61..aac27be6ce 100644 --- a/.hgignore +++ b/.hgignore @@ -72,6 +72,7 @@ Data/SpeedMods.txt Program/StepMania*.lib crashinfo.txt Utils/temp* +*.lnk syntax: regexp .*\#.*\#$ From c1f2cc2400dc5f1c0cd3331d4be6b8f969bf224b Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 26 Mar 2011 11:59:48 -0500 Subject: [PATCH 088/241] [br:warps] Fix compile by easing scope --- src/TimingData.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 00da97017b..1ddb2d6ad1 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -547,19 +547,21 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float itBPMS ++; break; case FOUND_STOP: // TODO: update for Delays. - fTimeToNextEvent = itSS->m_fStopSeconds; - fNextEventTime = fLastTime + fTimeToNextEvent; - const bool bIsDelay = itSS->m_bDelay; - if ( fElapsedTime < fNextEventTime ) { - bFreezeOut = !bIsDelay; - bDelayOut = bIsDelay; - fBeatOut = NoteRowToBeat( itSS->m_iStartRow ); - fBPSOut = fBPS; - return; + fTimeToNextEvent = itSS->m_fStopSeconds; + fNextEventTime = fLastTime + fTimeToNextEvent; + const bool bIsDelay = itSS->m_bDelay; + if ( fElapsedTime < fNextEventTime ) + { + bFreezeOut = !bIsDelay; + bDelayOut = bIsDelay; + fBeatOut = NoteRowToBeat( itSS->m_iStartRow ); + fBPSOut = fBPS; + return; + } + fLastTime = fNextEventTime; + itSS ++; } - fLastTime = fNextEventTime; - itSS ++; break; case FOUND_WARP: bIsWarping = true; From 8b7435a50c4a2a2cc3e83cd1a6ec238f22852c82 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 26 Mar 2011 13:44:47 -0400 Subject: [PATCH 089/241] [warps] Make our mark on #WARPS history. --- Docs/Changelog_sm-ssc.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index af644b111f..d6bac8ebd2 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -13,6 +13,11 @@ _____________________________________________________________________________ sm-ssc v1.2.4 | 2011032? -------------------------------------------------------------------------------- +20110326 +-------- +* [NotesLoaderSM, NotesWriterSSC] Officially add the #WARPS tag. The negative + tricks of the past are now officially standardized. [AJ, Thai, Wolfman2000] + 20110320 -------- * [PlayerOptions] Added SetNoteSkin(string) Lua binding. [AJ] From 64619f98191435663f4f35bbafd888819d5b80eb Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 26 Mar 2011 14:27:06 -0400 Subject: [PATCH 090/241] [warps] Add more flexible constructors. --- src/NotesLoaderSM.cpp | 13 +++++-------- src/NotesLoaderSSC.cpp | 2 +- src/TimingData.h | 20 ++++++++++++++++++-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp index 632a00c2fe..4937e37b52 100644 --- a/src/NotesLoaderSM.cpp +++ b/src/NotesLoaderSM.cpp @@ -156,9 +156,8 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // add in a warp. if( negBPM < 0 ) { - WarpSegment new_seg; - new_seg.m_iStartRow = BeatToNoteRow(negBeat); - new_seg.m_fEndBeat = fBeat + (fNewBPM / -negBPM) * (fBeat - negBeat); + float endBeat = fBeat + (fNewBPM / -negBPM) * (fBeat - negBeat); + WarpSegment new_seg(negBeat, endBeat); out.AddWarpSegment( new_seg ); negBeat = -1; @@ -174,9 +173,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) // add in a warp. if( highspeedBeat > 0 ) { - WarpSegment new_seg; - new_seg.m_iStartRow = BeatToNoteRow(highspeedBeat); - new_seg.m_fEndBeat = fBeat; + WarpSegment new_seg(highspeedBeat, fBeat); out.AddWarpSegment( new_seg ); highspeedBeat = -1; } @@ -225,7 +222,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) if( negBeat + fSkipBeats > fFreezeBeat ) fSkipBeats = fFreezeBeat - negBeat; - WarpSegment ws( BeatToNoteRow(negBeat), negBeat + fSkipBeats); + WarpSegment ws( negBeat, negBeat + fSkipBeats); out.AddWarpSegment( ws ); negBeat = -1; @@ -252,7 +249,7 @@ void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out ) float fSecondsPerBeat = 60 / oldBPM.GetBPM(); float fSkipBeats = negPause / fSecondsPerBeat; - WarpSegment ws( BeatToNoteRow(negBeat), negBeat + fSkipBeats); + WarpSegment ws( negBeat, negBeat + fSkipBeats); out.AddWarpSegment( ws ); } } diff --git a/src/NotesLoaderSSC.cpp b/src/NotesLoaderSSC.cpp index 6a98aa0acd..1868dfd19d 100644 --- a/src/NotesLoaderSSC.cpp +++ b/src/NotesLoaderSSC.cpp @@ -507,7 +507,7 @@ bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCach const float fNewBeat = StringToFloat( arrayWarpValues[1] ); if(fNewBeat > fBeat) - out.m_Timing.AddWarpSegment( WarpSegment(BeatToNoteRow(fBeat), fNewBeat) ); + out.m_Timing.AddWarpSegment( WarpSegment(fBeat, fNewBeat) ); else { LOG->UserLog( "Song file", "(UNKNOWN)", "has an invalid Warp at beat %f, BPM %f.", fBeat, fNewBeat ); diff --git a/src/TimingData.h b/src/TimingData.h index 6f43a3b818..f61afb6d9c 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -318,13 +318,13 @@ struct TimeSignatureSegment struct WarpSegment { /** - * @brief Creates a simple Warp Segment with default values. + * @brief Create a simple Warp Segment with default values. * * It is best to override the values as soon as possible. */ WarpSegment() : m_iStartRow(-1), m_fEndBeat(-1) { } /** - * @brief Creates a Warp Segment with the specified starting row and row to warp to. + * @brief Create a Warp Segment with the specified starting row and row to warp to. * @param s the starting row of this segment. * @param r the row to warp to. */ @@ -337,6 +337,22 @@ struct WarpSegment */ WarpSegment( int s, float b ): m_iStartRow(max(0, s)), m_fEndBeat(max(0, b)) {} + /** + * @brief Create a Warp Segment with the specified starting beat and row to warp to. + * @param s the starting beat in this segment. + * @param r the row to warp to. + */ + WarpSegment( float s, int r ): + m_iStartRow(max(0, BeatToNoteRow(s))), + m_fEndBeat(max(0, NoteRowToBeat(r))) {} + /** + * @brief Creates a Warp Segment with the specified starting beat and beat to warp to. + * @param s the starting beat of this segment. + * @param b the beat to warp to. + */ + WarpSegment( float s, float b ): + m_iStartRow(max(0, BeatToNoteRow((s < b ? s : b)))), + m_fEndBeat(max(0, (b > s ? b : s))) {} /** * @brief The row in which the WarpSegment activates. */ From b30f0ae4372298769f8d14b804c1af152894b344 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 26 Mar 2011 23:59:52 -0400 Subject: [PATCH 091/241] Updated changelog with instructions. Granted, I don't know who reads it... --- Docs/Changelog_sm-ssc.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index af644b111f..70f3cb33d9 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -48,8 +48,10 @@ sm-ssc v1.2.4 | 2011032? -------- * [NotesWriterSM] Allow for either the #DESCRIPTION or #CREDIT tags to be used for the .sm format's description token. [Wolfman2000] -* [ScreenEdit] Add Tap Note Cycling to allow inputting all of the taps. The way - to make holds and rolls are still the same as before. [Wolfman2000] +* [ScreenEdit] Add Tap Note Cycling to allow inputting all of the taps. Use the + n and m keys to switch between taps, mines, lifts, and fakes. The way to make + holds and rolls are still the same as before; hold 1-0 (plus shift for rolls) + and then drag up or down as needed. [Wolfman2000] ================================================================================ sm-ssc v1.2.3 | 20110323 From 1671337612fcf512456a4fbacae7490d0da3728b Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 27 Mar 2011 03:09:36 -0400 Subject: [PATCH 092/241] [warps] Update changelogs. --- Docs/Changelog_SSCformat.txt | 3 +++ Docs/Changelog_sm-ssc.txt | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_SSCformat.txt b/Docs/Changelog_SSCformat.txt index c50c25737f..6bacef7c8d 100644 --- a/Docs/Changelog_SSCformat.txt +++ b/Docs/Changelog_SSCformat.txt @@ -9,6 +9,9 @@ change to JSON, but it is unsure if this will be done. Implement .ssc at your own risk. ________________________________________________________________________________ +[v0.66] - Wolfman2000 +* Implement #WARPS tag to replace negative bpm/stop gimmicks. + [v0.55] - Wolfman2000 * Add #COMBOS tag to the Song and Steps (does nothing here). diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index d6bac8ebd2..9abe52b9d6 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -16,7 +16,9 @@ sm-ssc v1.2.4 | 2011032? 20110326 -------- * [NotesLoaderSM, NotesWriterSSC] Officially add the #WARPS tag. The negative - tricks of the past are now officially standardized. [AJ, Thai, Wolfman2000] + tricks of the past are now officially standardized. Please tell us about + files which have broken sync or are otherwise unplayable/incorrect. + [AJ, Thai, Wolfman2000] 20110320 -------- From b9d6d432f98b56e6e7da399f45bfc5ad47c38fd5 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 02:22:22 -0500 Subject: [PATCH 093/241] go back to three digits for .sm files; remove commented out warps code since warps should not be written to .sm files --- src/NotesWriterSM.cpp | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/src/NotesWriterSM.cpp b/src/NotesWriterSM.cpp index 2f5d38251d..7b80baba19 100644 --- a/src/NotesWriterSM.cpp +++ b/src/NotesWriterSM.cpp @@ -76,11 +76,11 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) f.PutLine( "#INSTRUMENTTRACK:" + s + ";\n" ); } } - f.PutLine( ssprintf( "#OFFSET:%.6f;", out.m_Timing.m_fBeat0OffsetInSeconds ) ); - f.PutLine( ssprintf( "#SAMPLESTART:%.6f;", out.m_fMusicSampleStartSeconds ) ); - f.PutLine( ssprintf( "#SAMPLELENGTH:%.6f;", out.m_fMusicSampleLengthSeconds ) ); + f.PutLine( ssprintf( "#OFFSET:%.3f;", out.m_Timing.m_fBeat0OffsetInSeconds ) ); + f.PutLine( ssprintf( "#SAMPLESTART:%.3f;", out.m_fMusicSampleStartSeconds ) ); + f.PutLine( ssprintf( "#SAMPLELENGTH:%.3f;", out.m_fMusicSampleLengthSeconds ) ); if( out.m_fSpecifiedLastBeat > 0 ) - f.PutLine( ssprintf("#LASTBEATHINT:%.6f;", out.m_fSpecifiedLastBeat) ); + f.PutLine( ssprintf("#LASTBEATHINT:%.3f;", out.m_fSpecifiedLastBeat) ); f.Write( "#SELECTABLE:" ); switch(out.m_SelectionDisplay) @@ -99,9 +99,9 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) break; case Song::DISPLAY_SPECIFIED: if( out.m_fSpecifiedBPMMin == out.m_fSpecifiedBPMMax ) - f.PutLine( ssprintf( "#DISPLAYBPM:%.6f;", out.m_fSpecifiedBPMMin ) ); + f.PutLine( ssprintf( "#DISPLAYBPM:%.3f;", out.m_fSpecifiedBPMMin ) ); else - f.PutLine( ssprintf( "#DISPLAYBPM:%.6f:%.6f;", + f.PutLine( ssprintf( "#DISPLAYBPM:%.3f:%.3f;", out.m_fSpecifiedBPMMin, out.m_fSpecifiedBPMMax ) ); break; case Song::DISPLAY_RANDOM: @@ -115,7 +115,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) { const BPMSegment &bs = out.m_Timing.m_BPMSegments[i]; - f.PutLine( ssprintf( "%.6f=%.6f", NoteRowToBeat(bs.m_iStartRow), bs.GetBPM() ) ); + f.PutLine( ssprintf( "%.3f=%.3f", NoteRowToBeat(bs.m_iStartRow), bs.GetBPM() ) ); if( i != out.m_Timing.m_BPMSegments.size()-1 ) f.Write( "," ); } @@ -128,7 +128,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) if(!fs.m_bDelay) { - f.PutLine( ssprintf( "%.6f=%.6f", NoteRowToBeat(fs.m_iStartRow), fs.m_fStopSeconds ) ); + f.PutLine( ssprintf( "%.3f=%.3f", NoteRowToBeat(fs.m_iStartRow), fs.m_fStopSeconds ) ); if( i != out.m_Timing.m_StopSegments.size()-1 ) f.Write( "," ); } @@ -142,31 +142,18 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) if( fs.m_bDelay ) { - f.PutLine( ssprintf( "%.6f=%.6f", NoteRowToBeat(fs.m_iStartRow), fs.m_fStopSeconds ) ); + f.PutLine( ssprintf( "%.3f=%.3f", NoteRowToBeat(fs.m_iStartRow), fs.m_fStopSeconds ) ); if( i != out.m_Timing.m_StopSegments.size()-1 ) f.Write( "," ); } } f.PutLine( ";" ); - /* - f.Write( "#WARPS:" ); - for( unsigned i=0; im_iStartRow), + f.PutLine( ssprintf( "%.3f=%d=%d", NoteRowToBeat(iter->m_iStartRow), iter->m_iNumerator, iter->m_iDenominator ) ); vector::const_iterator iter2 = iter; iter2++; @@ -181,7 +168,7 @@ static void WriteGlobalTags( RageFile &f, const Song &out ) { const TickcountSegment &ts = out.m_Timing.m_TickcountSegments[i]; - f.PutLine( ssprintf( "%.6f=%d", NoteRowToBeat(ts.m_iStartRow), ts.m_iTicks ) ); + f.PutLine( ssprintf( "%.3f=%d", NoteRowToBeat(ts.m_iStartRow), ts.m_iTicks ) ); if( i != out.m_Timing.m_TickcountSegments.size()-1 ) f.Write( "," ); } From d5a4694ce6e025e8dda862192cdc0f7e5579aac2 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 02:22:51 -0500 Subject: [PATCH 094/241] fix width of font box on texture font generator --- src/Texture Font Generator/Texture Font Generator.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Texture Font Generator/Texture Font Generator.rc b/src/Texture Font Generator/Texture Font Generator.rc index 6488bacfc1..d97a25188f 100644 --- a/src/Texture Font Generator/Texture Font Generator.rc +++ b/src/Texture Font Generator/Texture Font Generator.rc @@ -78,8 +78,8 @@ CAPTION "Texture Font Generator (ssc)" MENU IDR_MENU FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - COMBOBOX IDC_FAMILY_LIST,7,7,97,155,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_FONT_SIZE,108,7,19,13,ES_AUTOHSCROLL | ES_NUMBER + COMBOBOX IDC_FAMILY_LIST,7,7,148,155,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_FONT_SIZE,160,7,19,13,ES_AUTOHSCROLL | ES_NUMBER COMBOBOX IDC_SHOWN_PAGE,275,74,89,40,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "",IDC_SPIN_TOP,"msctls_updown32",UDS_ARROWKEYS,81,20,14,15 CONTROL "",IDC_PICTURE,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_SUNKEN,7,87,357,199 From 0f48de76bd00ceabc3eb33fd9d7872e483a5abcf Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 27 Mar 2011 03:27:18 -0400 Subject: [PATCH 095/241] Aiming for a release today! --- Docs/Changelog_sm-ssc.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index b72b37a36f..785f9e2a3a 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -10,7 +10,7 @@ supported but exist anyways.) _____________________________________________________________________________ ================================================================================ -sm-ssc v1.2.4 | 2011032? +sm-ssc v1.2.4 | 20110327 -------------------------------------------------------------------------------- 20110326 From 42893d2dc219436ee697380434c2272087cb82dc Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sun, 27 Mar 2011 15:11:27 +0700 Subject: [PATCH 096/241] name changes --- Docs/Changelog_sm-ssc.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 785f9e2a3a..f892c5f714 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -18,7 +18,7 @@ sm-ssc v1.2.4 | 20110327 * [NotesLoaderSM, NotesWriterSSC] Officially add the #WARPS tag. The negative tricks of the past are now officially standardized. Please tell us about files which have broken sync or are otherwise unplayable/incorrect. - [AJ, Thai, Wolfman2000] + [AJ, theDtTvB, Wolfman2000] 20110320 -------- From c0acb4e336449b63057c4baa8409d25162d2fa34 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Sun, 27 Mar 2011 15:56:40 +0700 Subject: [PATCH 097/241] fix: stops in warps are judged, but not delays --- src/TimingData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 1ddb2d6ad1..989b780dff 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -354,7 +354,7 @@ bool TimingData::IsWarpAtRow( int iNoteRow ) const { return true; } - if( GetStopAtRow(iNoteRow) != 0.0f ) + if( GetStopAtRow(iNoteRow) != 0.0f || GetDelayAtRow(iNoteRow) != 0.0f ) { return false; } From 72014422ab2fe0eb514a19bd83241f1e30a61849 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 15:51:52 -0500 Subject: [PATCH 098/241] editing for upcoming v1.2.4 (not released yet) --- src/archutils/Win32/WindowsResources.rc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/archutils/Win32/WindowsResources.rc b/src/archutils/Win32/WindowsResources.rc index 1f2375ef26..ad20d9749a 100644 --- a/src/archutils/Win32/WindowsResources.rc +++ b/src/archutils/Win32/WindowsResources.rc @@ -171,8 +171,8 @@ END // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -IDI_ICON1 ICON "smzip.ico" IDI_ICON ICON "StepMania.ICO" +IDI_ICON1 ICON "smzip.ico" ///////////////////////////////////////////////////////////////////////////// // @@ -181,7 +181,7 @@ IDI_ICON ICON "StepMania.ICO" VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 + PRODUCTVERSION 1,2,4,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -198,12 +198,12 @@ BEGIN BEGIN VALUE "CompanyName", "the spinal shark collective\nhttp://ssc.ajworld.net/" VALUE "FileDescription", "sm-ssc" - VALUE "FileVersion", "1, 2, 2, 0" + VALUE "FileVersion", "1, 2, 4, 0" VALUE "InternalName", "sm-ssc" VALUE "LegalCopyright", "Copyright © 2001-2011" VALUE "OriginalFilename", "StepMania.exe" VALUE "ProductName", "sm-ssc" - VALUE "ProductVersion", "1, 2, 2, 0" + VALUE "ProductVersion", "1, 2, 4, 0" END END BLOCK "VarFileInfo" From dc6174ad68edb161f3024bc99ebbd9e2e55327ed Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 17:41:13 -0500 Subject: [PATCH 099/241] Fix Gameplay Footer not showing up over arrows --- Docs/Changelog_sm-ssc.txt | 4 ++++ Themes/default/metrics.ini | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index f892c5f714..5904c2283c 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -13,6 +13,10 @@ _____________________________________________________________________________ sm-ssc v1.2.4 | 20110327 -------------------------------------------------------------------------------- +20110327 +-------- +* Fix Gameplay Footer not showing up over arrows. [AJ] + 20110326 -------- * [NotesLoaderSM, NotesWriterSSC] Officially add the #WARPS tag. The negative diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index fe7af31f60..9c36c29337 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -1432,7 +1432,7 @@ ShowBPMDisplay=true BPMDisplayX=Center1Player() and (GAMESTATE:GetMasterPlayerNumber() == PLAYER_1 and THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")) or SCREEN_CENTER_X # BPMDisplayX=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and (GAMESTATE:GetMasterPlayerNumber() == PLAYER_1 and THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")) or SCREEN_CENTER_X BPMDisplayY=SCREEN_BOTTOM-16 -# BPMDisplayOnCommand=zoom,0.5; +BPMDisplayOnCommand=draworder,101 BPMDisplayOffCommand=bounceend,0.25;zoom,0 # ShowStageDisplay=false @@ -1444,7 +1444,7 @@ StageDisplayOffCommand=bounceend,0.25;zoom,0 ShowScoreFrame=GetUserPrefB("GameplayFooter"); ScoreFrameX=SCREEN_CENTER_X ScoreFrameY=SCREEN_BOTTOM+4 -ScoreFrameOnCommand=vertalign,bottom;zoomtowidth,SCREEN_WIDTH+4;diffuse,color("#ffd400");addy,80;sleep,2;decelerate,0.5;addy,-80; +ScoreFrameOnCommand=draworder,100;vertalign,bottom;zoomtowidth,SCREEN_WIDTH+4;diffuse,color("#ffd400");addy,80;sleep,2;decelerate,0.5;addy,-80; ScoreFrameOffCommand= # LifeP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") @@ -1508,47 +1508,47 @@ DeltaSecondsP2OffCommand= ScoreP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # ScoreP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") ScoreP1Y=SCREEN_BOTTOM-28 -ScoreP1OnCommand=visible,GetUserPrefB("UserPrefGameplayShowScore");diffuse,PlayerColor(PLAYER_1);sleep,3+0.3;smooth,0.5;y,SCREEN_BOTTOM-50 +ScoreP1OnCommand=draworder,101;visible,GetUserPrefB("UserPrefGameplayShowScore");diffuse,PlayerColor(PLAYER_1);sleep,3+0.3;smooth,0.5;y,SCREEN_BOTTOM-50 ScoreP1OffCommand= ScoreP2X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") # ScoreP2X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") ScoreP2Y=SCREEN_BOTTOM-28 -ScoreP2OnCommand=visible,GetUserPrefB("UserPrefGameplayShowScore");diffuse,PlayerColor(PLAYER_2);sleep,3+0.3;smooth,0.5;y,SCREEN_BOTTOM-50 +ScoreP2OnCommand=draworder,101;visible,GetUserPrefB("UserPrefGameplayShowScore");diffuse,PlayerColor(PLAYER_2);sleep,3+0.3;smooth,0.5;y,SCREEN_BOTTOM-50 ScoreP2OffCommand= # StepsDescriptionP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # StepsDescriptionP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") StepsDescriptionP1Y=SCREEN_CENTER_Y-24 -StepsDescriptionP1OnCommand=zoom,0.5;diffusealpha,0;addy,-10;smooth,0.3;diffusealpha,1;addy,10;sleep,3;smooth,0.5;addy,-10;diffusealpha,0 +StepsDescriptionP1OnCommand=draworder,101;zoom,0.5;diffusealpha,0;addy,-10;smooth,0.3;diffusealpha,1;addy,10;sleep,3;smooth,0.5;addy,-10;diffusealpha,0 StepsDescriptionP1OffCommand= StepsDescriptionP2X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") # StepsDescriptionP2X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") StepsDescriptionP2Y=SCREEN_CENTER_Y-24 -StepsDescriptionP2OnCommand=zoom,0.5;diffusealpha,0;addy,-10;smooth,0.3;diffusealpha,1;addy,10;sleep,3;smooth,0.5;addy,-10;diffusealpha,0 +StepsDescriptionP2OnCommand=draworder,101;zoom,0.5;diffusealpha,0;addy,-10;smooth,0.3;diffusealpha,1;addy,10;sleep,3;smooth,0.5;addy,-10;diffusealpha,0 StepsDescriptionP2OffCommand= # PlayerOptionsP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # PlayerOptionsP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") PlayerOptionsP1Y=SCREEN_CENTER_Y+24 -PlayerOptionsP1OnCommand=vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 +PlayerOptionsP1OnCommand=draworder,101;vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 PlayerOptionsP1OffCommand= PlayerOptionsP2X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") # PlayerOptionsP2X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") PlayerOptionsP2Y=SCREEN_CENTER_Y+24 -PlayerOptionsP2OnCommand=vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 +PlayerOptionsP2OnCommand=draworder,101;vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 PlayerOptionsP2OffCommand= # StepsDisplayP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # StepsDisplayP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") StepsDisplayP1Y=SCREEN_CENTER_Y -StepsDisplayP1OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;queuecommand,( GetUserPrefB("UserPrefGameplayShowStepsDisplay") == true and "Show" or "Hide" ); +StepsDisplayP1OnCommand=draworder,101;zoomy,0;linear,0.3;zoomy,1;sleep,3;queuecommand,( GetUserPrefB("UserPrefGameplayShowStepsDisplay") == true and "Show" or "Hide" ); StepsDisplayP1ShowCommand=smooth,0.5;y,SCREEN_BOTTOM-20; StepsDisplayP1HideCommand=linear,0.5;zoomy,0 StepsDisplayP1OffCommand= StepsDisplayP2X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") # StepsDisplayP2X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX") StepsDisplayP2Y=SCREEN_CENTER_Y -StepsDisplayP2OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;queuecommand,( GetUserPrefB("UserPrefGameplayShowStepsDisplay") == true and "Show" or "Hide" ); +StepsDisplayP2OnCommand=draworder,101;zoomy,0;linear,0.3;zoomy,1;sleep,3;queuecommand,( GetUserPrefB("UserPrefGameplayShowStepsDisplay") == true and "Show" or "Hide" ); StepsDisplayP2ShowCommand=smooth,0.5;y,SCREEN_BOTTOM-20; StepsDisplayP2HideCommand=linear,0.5;zoomy,0 StepsDisplayP2OffCommand= @@ -1556,7 +1556,7 @@ StepsDisplayP2OffCommand= SongOptionsX=Center1Player() and (GAMESTATE:GetMasterPlayerNumber() == PLAYER_1 and THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")) or SCREEN_CENTER_X # SongOptionsX=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and (GAMESTATE:GetMasterPlayerNumber() == PLAYER_1 and THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")) or SCREEN_CENTER_X SongOptionsY=SCREEN_BOTTOM-32 -SongOptionsOnCommand=zoom,0.5 +SongOptionsOnCommand=draworder,101;zoom,0.5 SongOptionsOffCommand= # OniGameOverP1X= From 322f8feafc2e82c33d08aa1b8b4f65a743550289 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 17:48:36 -0500 Subject: [PATCH 100/241] fix version number to match the one in the source --- Docs/Changelog_SSCformat.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/Changelog_SSCformat.txt b/Docs/Changelog_SSCformat.txt index 6bacef7c8d..205aac7c06 100644 --- a/Docs/Changelog_SSCformat.txt +++ b/Docs/Changelog_SSCformat.txt @@ -9,7 +9,7 @@ change to JSON, but it is unsure if this will be done. Implement .ssc at your own risk. ________________________________________________________________________________ -[v0.66] - Wolfman2000 +[v0.56] - Wolfman2000 * Implement #WARPS tag to replace negative bpm/stop gimmicks. [v0.55] - Wolfman2000 From cd768cbb8c5cb86bc4a816455406752d8d692e33 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 17:49:18 -0500 Subject: [PATCH 101/241] changed port number from a short to an unsigned int --- src/NetworkSyncManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index 21a8555c3d..697d87e4a5 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -107,12 +107,12 @@ void NetworkSyncManager::CloseConnection() void NetworkSyncManager::PostStartUp( const RString& ServerIP ) { RString sAddress; - short iPort; + unsigned int iPort; size_t cLoc = ServerIP.find( ':' ); if( ServerIP.find( ':' ) != RString::npos ) { - iPort = (short) atoi( ServerIP.substr( cLoc + 1 ).c_str() ); + iPort = (unsigned int)atoi( ServerIP.substr( cLoc + 1 ).c_str() ); sAddress = ServerIP.substr( 0, cLoc ); } else @@ -121,7 +121,7 @@ void NetworkSyncManager::PostStartUp( const RString& ServerIP ) sAddress = ServerIP; } - LOG->Info( "Attempting to connect to: %s, Port: %d", sAddress.c_str(), iPort ); + LOG->Info( "Attempting to connect to: %s, Port: %i", sAddress.c_str(), iPort ); CloseConnection(); if( !Connect(sAddress.c_str(), iPort) ) From bf17d84375aa1c6614b79dcc8c1057e0a0536fdb Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 18:25:16 -0500 Subject: [PATCH 102/241] make lyrics show up over gameplay footer --- Themes/_fallback/Scripts/02 Lyrics.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/Themes/_fallback/Scripts/02 Lyrics.lua b/Themes/_fallback/Scripts/02 Lyrics.lua index 169aff9712..9c3be1833e 100644 --- a/Themes/_fallback/Scripts/02 Lyrics.lua +++ b/Themes/_fallback/Scripts/02 Lyrics.lua @@ -1,5 +1,6 @@ function Actor:LyricCommand(side) self:settext( Var "LyricText" ) + self:draworder(102) self:stoptweening() self:shadowlengthx(0) From ddd2999374899a86aae3c462b410fa3822b9b336 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 18:25:30 -0500 Subject: [PATCH 103/241] add comment about editor noteskin --- src/ScreenEdit.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 8707da7293..939b788890 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -736,8 +736,11 @@ void ScreenEdit::Init() } } m_PlayerStateEdit.m_PlayerNumber = PLAYER_1; - // If we always go with the GAMESTATE NoteSkin, we will have fun effects like Vivid or Flat in the editor notefield. - // This is not conducive to productive editing. + // If we always go with the GAMESTATE NoteSkin, we will have fun effects + // like Vivid or Flat in the editor notefield. This is not conducive to + // productive editing. + // todo: We should allow certain noteskins (note-colored/rhythm) to be + // displayed. (Perhaps this should be a noteskin metric.) -aj if( NOTESKIN->DoesNoteSkinExist( EDITOR_NOTE_SKINS[PLAYER_1].Get() ) ) { PO_GROUP_ASSIGN( m_PlayerStateEdit.m_PlayerOptions, ModsLevel_Stage, m_sNoteSkin, EDITOR_NOTE_SKINS[PLAYER_1].Get() ); From 178ec08d1455b3c2676eb2ee34df56cacef86c34 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 18:43:07 -0500 Subject: [PATCH 104/241] replace Rave arrow with a recolored Normal arrow for now --- .../ScreenSelectPlayMode scroller/Rave.png | Bin 0 -> 16591 bytes .../ScreenSelectPlayMode scroller/Rave.redir | 1 - 2 files changed, 1 deletion(-) create mode 100644 Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.png delete mode 100644 Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.redir diff --git a/Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.png b/Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.png new file mode 100644 index 0000000000000000000000000000000000000000..e8efb0ef600159610401650fc30e3fdca1466ba9 GIT binary patch literal 16591 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 literal 0 HcmV?d00001 diff --git a/Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.redir b/Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.redir deleted file mode 100644 index 3310ed756e..0000000000 --- a/Themes/default/Graphics/ScreenSelectPlayMode scroller/Rave.redir +++ /dev/null @@ -1 +0,0 @@ -Normal \ No newline at end of file From cab7c1f07747494d579ce749c615ea930dcbbe7c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 19:06:15 -0500 Subject: [PATCH 105/241] use unsigned short instead of unsigned int for port; also use strtol instead of atoi --- src/NetworkSyncManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index 697d87e4a5..b58e5a46ff 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -107,12 +107,13 @@ void NetworkSyncManager::CloseConnection() void NetworkSyncManager::PostStartUp( const RString& ServerIP ) { RString sAddress; - unsigned int iPort; + unsigned short iPort; size_t cLoc = ServerIP.find( ':' ); if( ServerIP.find( ':' ) != RString::npos ) { - iPort = (unsigned int)atoi( ServerIP.substr( cLoc + 1 ).c_str() ); + char* cEnd; + iPort = (unsigned short)strtol( ServerIP.substr( cLoc + 1 ).c_str(), &cEnd, 10 ); sAddress = ServerIP.substr( 0, cLoc ); } else From f4a9a3acc474f1f5379d397c9d197a1da47826a8 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 19:19:31 -0500 Subject: [PATCH 106/241] actually use strtol as intended, checking for invalid inputs --- src/NetworkSyncManager.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index b58e5a46ff..303578235f 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -112,9 +112,16 @@ void NetworkSyncManager::PostStartUp( const RString& ServerIP ) size_t cLoc = ServerIP.find( ':' ); if( ServerIP.find( ':' ) != RString::npos ) { - char* cEnd; - iPort = (unsigned short)strtol( ServerIP.substr( cLoc + 1 ).c_str(), &cEnd, 10 ); sAddress = ServerIP.substr( 0, cLoc ); + char* cEnd; + errno = 0; + iPort = (unsigned short)strtol( ServerIP.substr( cLoc + 1 ).c_str(), &cEnd, 10 ); + if( *cEnd != 0 || errno != 0 ) + { + m_startupStatus = 2; + LOG->Warn( "Invalid port" ); + return; + } } else { @@ -137,7 +144,7 @@ void NetworkSyncManager::PostStartUp( const RString& ServerIP ) useSMserver = true; - m_startupStatus = 1; //Connection attepmpt successful + m_startupStatus = 1; // Connection attepmpt successful // If network play is desired and the connection works, // halt until we know what server version we're dealing with From 316e19fc69bbb67f02367866d4823a1fb4db1f91 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 19:26:30 -0500 Subject: [PATCH 107/241] sm-ssc v1.2.4 --- src/ProductInfo.h | 2 +- src/ProductInfo.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ProductInfo.h b/src/ProductInfo.h index be5d7e73c0..dde19650c5 100644 --- a/src/ProductInfo.h +++ b/src/ProductInfo.h @@ -35,7 +35,7 @@ * */ #ifndef PRODUCT_VER_BARE -#define PRODUCT_VER_BARE v1.2.3 +#define PRODUCT_VER_BARE v1.2.4 #endif /** diff --git a/src/ProductInfo.inc b/src/ProductInfo.inc index e47653133d..d4aa01e1c2 100644 --- a/src/ProductInfo.inc +++ b/src/ProductInfo.inc @@ -5,7 +5,7 @@ ; see ProductInfo.h for use descriptions !define PRODUCT_ID "sm-ssc" -!define PRODUCT_VER "v1.2.3" +!define PRODUCT_VER "v1.2.4" !define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}" !define PRODUCT_BITMAP "ssc" From 301247d952fec984c2c378ed55ef91243bcec4f2 Mon Sep 17 00:00:00 2001 From: Colby Klein Date: Sun, 27 Mar 2011 17:28:44 -0700 Subject: [PATCH 108/241] Fix compile in GCC --- src/NetworkSyncManager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index 303578235f..b49720a46a 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -2,6 +2,7 @@ #include "NetworkSyncManager.h" #include "LuaManager.h" #include "LocalizedString.h" +#include NetworkSyncManager *NSMAN; From b50d6a04c770a65499c0225415665fb5b0d5660c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 27 Mar 2011 20:17:09 -0500 Subject: [PATCH 109/241] Texture Font Generator changes to make it compile in VS2008 --- .../Texture Font Generator-net2008.vcproj | 6 ++++++ src/Texture Font Generator/Utils.cpp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Texture Font Generator/Texture Font Generator-net2008.vcproj b/src/Texture Font Generator/Texture Font Generator-net2008.vcproj index 2c3e2f450e..dee8b0dace 100644 --- a/src/Texture Font Generator/Texture Font Generator-net2008.vcproj +++ b/src/Texture Font Generator/Texture Font Generator-net2008.vcproj @@ -46,6 +46,7 @@ jmpbuf) ) { - png_destroy_read_struct( &pPng, &pInfo, png_infopp_NULL ); + png_destroy_read_struct( &pPng, &pInfo, NULL ); return false; } From 24db439ed3ab78b48ca2d3cf1fc4eb9693b44c2e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 27 Mar 2011 22:11:34 -0400 Subject: [PATCH 110/241] Add more noteskins to GameData.smzip. --- Utils/CreatePackage.pl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Utils/CreatePackage.pl b/Utils/CreatePackage.pl index 48c85f50ac..81457e0f87 100755 --- a/Utils/CreatePackage.pl +++ b/Utils/CreatePackage.pl @@ -150,6 +150,7 @@ my @files = ( "Characters/default", "Courses/Default", "Data", + "NoteSkins/beat/default", "NoteSkins/common/common", # dance noteskins "NoteSkins/dance/default", @@ -166,8 +167,13 @@ my @files = ( "NoteSkins/dance/retrobar-splithand_whiteblue", # pump noteskins "NoteSkins/pump/cmd", + "NoteSkins/pump/cmd-routine-p1", + "NoteSkins/pump/cmd-routine-p2", "NoteSkins/pump/complex", "NoteSkins/pump/default", + "NoteSkins/pump/frame5p", + "NoteSkins/pump/newextra", + "NoteSkins/pump/rhythm", "NoteSkins/pump/simple", # kb7 noteskins "NoteSkins/kb7/default", @@ -175,6 +181,8 @@ my @files = ( "NoteSkins/kb7/retrobar", "NoteSkins/kb7/retrobar-iidx", "NoteSkins/kb7/retrobar-o2jam", + "NoteSkins/kb7/retrobar-razor", + "NoteSkins/kb7/retrobar-razor_o2", # themes "Themes/_fallback", "Themes/_portKit-sm4", From 2f4572c7f28eecce7bf06140ff87ce6d27171234 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 27 Mar 2011 22:11:48 -0400 Subject: [PATCH 111/241] Don't display GameData.smzip here. --- .hgignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgignore b/.hgignore index aac27be6ce..8e4aa8d71e 100644 --- a/.hgignore +++ b/.hgignore @@ -21,6 +21,7 @@ ___* .cvsignore .DS_Store Thumbs.db +GameData.smzip config.log config.status *.pbxuser From 8916f58dae13bb82dd13222a9b47687acbcb2050 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 28 Mar 2011 15:08:09 -0400 Subject: [PATCH 112/241] Allow numbers <= 0 to cancel Warp segments. --- src/ScreenEdit.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 939b788890..febaaf9d22 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2647,8 +2647,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) else if ( SM == SM_BackFromWarpChange ) { float fWarp = StringToFloat( ScreenTextEntry::s_sLastAnswer ); - if( fWarp > 0 ) - m_pSong->m_Timing.SetWarpAtBeat( GAMESTATE->m_fSongBeat, fWarp ); + m_pSong->m_Timing.SetWarpAtBeat( GAMESTATE->m_fSongBeat, fWarp ); SetDirty( true ); } else if( SM == SM_BackFromBGChange ) From 93e2bce579561740fbb451b96493c5cf048fab53 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 11:56:19 -0500 Subject: [PATCH 113/241] [ScreenEdit] Changed sample playback button to L. --- src/ScreenEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index febaaf9d22..30d900fa2b 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -207,7 +207,7 @@ void ScreenEdit::InitEditMappings() m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SAMPLE_LENGTH_DOWN][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT); m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SAMPLE_LENGTH_DOWN][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT); - m_EditMappingsDeviceInput.button[EDIT_BUTTON_PLAY_SAMPLE_MUSIC][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cm); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_PLAY_SAMPLE_MUSIC][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cl); m_EditMappingsDeviceInput.button[EDIT_BUTTON_OPEN_BGCHANGE_LAYER1_MENU][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb); m_EditMappingsDeviceInput.button[EDIT_BUTTON_OPEN_BGCHANGE_LAYER2_MENU][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb); From 91e6e1def8684797623dabf1a5d3904efe8e85c9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 11:56:32 -0500 Subject: [PATCH 114/241] changelog --- Docs/Changelog_sm-ssc.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 5904c2283c..910803d9b5 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -9,6 +9,16 @@ Not all changes are documented, for various reasons. supported but exist anyways.) _____________________________________________________________________________ +================================================================================ +sm-ssc $NEXTVERSION | 2011???? +-------------------------------------------------------------------------------- +It depends on who you ask. +It could be v1.2.5, it could be v1.3.0, it could even be StepMania 5. + +20110329 +-------- +* [ScreenEdit] Changed sample playback button to L. [AJ] + ================================================================================ sm-ssc v1.2.4 | 20110327 -------------------------------------------------------------------------------- From a3e0bbeb4722f892f02376e8e1dbae3779073848 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 12:05:18 -0500 Subject: [PATCH 115/241] get rid of command on StepsDisplay Autogen in fallback --- Themes/_fallback/metrics.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 3cacf67bed..47c1b44bf8 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1996,7 +1996,7 @@ ShowAutogen=true AutogenX=40 AutogenY=0 AutogenOnCommand= -AutogenSetCommand=%function(self,param) if param.CustomDifficulty then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end +AutogenSetCommand= ShowStepsType=false StepsTypeX=0 StepsTypeY=0 From 54415fa8fbc7605a3d8c713c1746ae01d1285d70 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 12:56:39 -0500 Subject: [PATCH 116/241] [ScreenGameplay] Announcers say combo messages again. --- Docs/Changelog_sm-ssc.txt | 1 + src/ScreenGameplay.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 910803d9b5..8916f99138 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -18,6 +18,7 @@ It could be v1.2.5, it could be v1.3.0, it could even be StepMania 5. 20110329 -------- * [ScreenEdit] Changed sample playback button to L. [AJ] +* [ScreenGameplay] Announcers say combo messages again. [AJ] ================================================================================ sm-ssc v1.2.4 | 20110327 diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index fc34084c53..c9ea70bc6e 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -2517,9 +2517,11 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) if( !m_Toasty.IsTransitioning() && !m_Toasty.IsFinished() ) // don't play if we've already played it once m_Toasty.StartTransitioning(); } - else if( SM >= SM_100Combo && SM <= SM_1000Combo ) + else if( ScreenMessageHelpers::ScreenMessageToString(SM).find("0Combo") != string::npos ) { - int iCombo = ( SM-(SM_100Combo+1) ) * 100; + int iCombo; + RString sCropped = ScreenMessageHelpers::ScreenMessageToString(SM).substr(3); + sscanf(sCropped.c_str(),"%d%*s",&iCombo); PlayAnnouncer( ssprintf("gameplay %d combo",iCombo), 2 ); } else if( SM == SM_ComboStopped ) From 9445f3391da72feda7468b57104adf0d418285de Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 13:06:59 -0500 Subject: [PATCH 117/241] update ignore file --- .hgignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.hgignore b/.hgignore index 8e4aa8d71e..173f31ccc7 100644 --- a/.hgignore +++ b/.hgignore @@ -74,6 +74,8 @@ Program/StepMania*.lib crashinfo.txt Utils/temp* *.lnk +BuildLog.htm +*.pch syntax: regexp .*\#.*\#$ From 6c4d9673f3b6305dfdeecd0e9349d9d7b34c34b7 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 15:13:59 -0500 Subject: [PATCH 118/241] [GameSoundManager] properly load .sm and .ssc files instead of assuming they're ssc files --- src/GameSoundManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/GameSoundManager.cpp b/src/GameSoundManager.cpp index ca07566f8a..f0b0a9d686 100644 --- a/src/GameSoundManager.cpp +++ b/src/GameSoundManager.cpp @@ -142,8 +142,9 @@ static void StartMusic( MusicToPlay &ToPlay ) { LOG->Trace( "Found '%s'", ToPlay.m_sTimingFile.c_str() ); Song song; - if( SSCLoader::LoadFromSSCFile(ToPlay.m_sTimingFile, song) ) + if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".ssc" ) { + SSCLoader::LoadFromSSCFile(ToPlay.m_sTimingFile, song); ToPlay.HasTiming = true; ToPlay.m_TimingData = song.m_Timing; // get cabinet lights if any @@ -151,8 +152,9 @@ static void StartMusic( MusicToPlay &ToPlay ) if( pStepsCabinetLights ) pStepsCabinetLights->GetNoteData( ToPlay.m_LightsData ); } - else if( SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song) ) + else if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".sm" ) { + SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song); ToPlay.HasTiming = true; ToPlay.m_TimingData = song.m_Timing; // get cabinet lights if any From dceebe50052be0b71de3ca2adbfac6a001b0c8e9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 18:02:28 -0500 Subject: [PATCH 119/241] trying to work on mouse stuff and not getting anywhere --- src/RageInputDevice.h | 15 ++++++------- .../InputHandler/InputHandler_DirectInput.cpp | 21 ++++++++++++++----- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/RageInputDevice.h b/src/RageInputDevice.h index 89084be39d..a81401e6a3 100644 --- a/src/RageInputDevice.h +++ b/src/RageInputDevice.h @@ -315,8 +315,9 @@ public: float level; // Mouse coordinates - unsigned x; - unsigned y; + //unsigned x; + //unsigned y; + int z; // mousewheel /* Whether this button is pressed. This is level with a threshold and * debouncing applied. */ @@ -324,12 +325,12 @@ public: RageTimer ts; - DeviceInput(): device(InputDevice_Invalid), button(DeviceButton_Invalid), level(0), x(0), y(0), bDown(false), ts(RageZeroTimer) { } - DeviceInput( InputDevice d, DeviceButton b, float l=0 ): device(d), button(b), level(l), x(0), y(0), bDown(l > 0.5f), ts(RageZeroTimer) { } + DeviceInput(): device(InputDevice_Invalid), button(DeviceButton_Invalid), level(0), z(0), bDown(false), ts(RageZeroTimer) { } + DeviceInput( InputDevice d, DeviceButton b, float l=0 ): device(d), button(b), level(l), z(0), bDown(l > 0.5f), ts(RageZeroTimer) { } DeviceInput( InputDevice d, DeviceButton b, float l, const RageTimer &t ): - device(d), button(b), level(l), x(0), y(0), bDown(level > 0.5f), ts(t) { } - DeviceInput( InputDevice d, DeviceButton b, const RageTimer &t, unsigned xPos=0, unsigned yPos=0 ): - device(d), button(b), level(0), x(xPos), y(yPos), bDown(false), ts(t) { } + device(d), button(b), level(l), z(0), bDown(level > 0.5f), ts(t) { } + DeviceInput( InputDevice d, DeviceButton b, const RageTimer &t, int zVal=0 ): + device(d), button(b), level(0), z(zVal), bDown(false), ts(t) { } bool operator==( const DeviceInput &other ) const { diff --git a/src/arch/InputHandler/InputHandler_DirectInput.cpp b/src/arch/InputHandler/InputHandler_DirectInput.cpp index 6dedbeba21..a0a9316e64 100644 --- a/src/arch/InputHandler/InputHandler_DirectInput.cpp +++ b/src/arch/InputHandler/InputHandler_DirectInput.cpp @@ -413,12 +413,21 @@ void InputHandler_DInput::UpdatePolled( DIDevice &device, const RageTimer &tm ) break; case DIMOFS_Z: { - neg = MOUSE_WHEELUP; pos = MOUSE_WHEELDOWN; + neg = MOUSE_WHEELDOWN; pos = MOUSE_WHEELUP; val = state.lZ; + //LOG->Trace("MouseWheel polled: %i",val); + INPUTFILTER->UpdateMouseWheel(val); - float l = SCALE( int(val), -120.0f, 120.0f, 0.0f, 1.0f ); - ButtonPressed( DeviceInput(dev, neg, max(-l,0), tm) ); - ButtonPressed( DeviceInput(dev, pos, max(+l,0), tm) ); + /* + if( (int)val != 0 ) + { + // positive values: WheelUp + // negative values: WheelDown + float l = SCALE( int(val), -120.0f, 120.0f, -1.0f, 1.0f ); + ButtonPressed( DeviceInput(dev, neg, max(-l,0), tm) ); + ButtonPressed( DeviceInput(dev, pos, max(+l,0), tm) ); + } + */ } break; default: LOG->MapLog( "unknown input", @@ -515,10 +524,12 @@ void InputHandler_DInput::UpdateBuffered( DIDevice &device, const RageTimer &tm INPUTFILTER->UpdateCursorLocation((float)cursorPos.x,(float)cursorPos.y); break; case DIMOFS_Z: + // positive values: WheelUp + // negative values: WheelDown INPUTFILTER->UpdateMouseWheel(l); { up = MOUSE_WHEELUP; down = MOUSE_WHEELDOWN; - l = SCALE( int(evtbuf[i].dwData), -120.0f, 120.0f, 1.0f, -1.0f ); + l = SCALE( int(evtbuf[i].dwData), -WHEEL_DELTA, WHEEL_DELTA, 1.0f, -1.0f ); DeviceInput diUp = DeviceInput(dev, up, max(-l,0), tm); DeviceInput diDown = DeviceInput(dev, down, max(+l,0), tm); ButtonPressed( diUp ); From 3c8d5fcb8c5c3061a916a3594a10fa50426cf7f9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 18:16:35 -0500 Subject: [PATCH 120/241] attempt to log mouse position on mac --- src/archutils/Darwin/MouseDevice.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/archutils/Darwin/MouseDevice.cpp b/src/archutils/Darwin/MouseDevice.cpp index b968b0cfb9..1e7a47b630 100644 --- a/src/archutils/Darwin/MouseDevice.cpp +++ b/src/archutils/Darwin/MouseDevice.cpp @@ -60,6 +60,7 @@ void MouseDevice::AddElement( int usagePage, int usage, IOHIDElementCookie cooki m.y_max = iMax; break; case kHIDUsage_GD_Z: + case kHIDUsage_GD_Wheel: // also handle wheel m.z_axis = cookie; m.z_min = iMin; m.z_max = iMax; @@ -104,11 +105,13 @@ void MouseDevice::GetButtonPresses( vector& vPresses, IOHIDElementC const Mouse& m = m_Mouse; if( m.x_axis == cookie ) { -// INPUTFILTER->UpdateCursorLocation(value,m.y_axis); + //INPUTFILTER->UpdateCursorLocation(value,m.y_axis); + LOG->Trace("Mouse X: Value = %i",value); } else if( m.y_axis == cookie ) { -// INPUTFILTER->UpdateCursorLocation(m.x_axis,value); + //INPUTFILTER->UpdateCursorLocation(m.x_axis,value); + LOG->Trace("Mouse Y: Value = %i",value); } else if( m.z_axis == cookie ) { From 066f2ee2d19eae1227050081e4d2f4ab2682ddf7 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 18:44:02 -0500 Subject: [PATCH 121/241] notes --- src/archutils/Darwin/MouseDevice.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/archutils/Darwin/MouseDevice.cpp b/src/archutils/Darwin/MouseDevice.cpp index 1e7a47b630..12d5f6b886 100644 --- a/src/archutils/Darwin/MouseDevice.cpp +++ b/src/archutils/Darwin/MouseDevice.cpp @@ -103,6 +103,10 @@ void MouseDevice::GetButtonPresses( vector& vPresses, IOHIDElementC { // todo: add mouse axis stuff -aj const Mouse& m = m_Mouse; + HRESULT result; + IOHIDEventStruct hidEvent; + // result = (*m_Interface)->getElementValue(hidDeviceInterface,cookie,&hidEvent); + if( m.x_axis == cookie ) { //INPUTFILTER->UpdateCursorLocation(value,m.y_axis); From 3a91cd08103a4eb45d6ae358b20865e9cf14c517 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Tue, 29 Mar 2011 22:42:38 -0400 Subject: [PATCH 122/241] Fix lua error. --- NoteSkins/dance/midi-note/NoteSkin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NoteSkins/dance/midi-note/NoteSkin.lua b/NoteSkins/dance/midi-note/NoteSkin.lua index 2f97fb4e72..90b3738186 100644 --- a/NoteSkins/dance/midi-note/NoteSkin.lua +++ b/NoteSkins/dance/midi-note/NoteSkin.lua @@ -25,7 +25,7 @@ ret.Redir = function(sButton, sElement) -- Test if sElement == "Hold Head Inactive" or - sElement == "Roll Head Inactive" or + sElement == "Roll Head Inactive" then sElement = "StreamHead Inactive"; end From 53dea206f4d27e689328bfc10a852a1c372658a2 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Tue, 29 Mar 2011 23:21:25 -0400 Subject: [PATCH 123/241] Safe to enable mice finding I think. --- src/arch/InputHandler/InputHandler_MacOSX_HID.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp b/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp index 84bc3283f4..c9e1b86243 100644 --- a/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp +++ b/src/arch/InputHandler/InputHandler_MacOSX_HID.cpp @@ -247,10 +247,10 @@ InputHandler_MacOSX_HID::InputHandler_MacOSX_HID() : m_Sem( "Input thread starte // Add devices. LOG->Trace( "Finding keyboards" ); AddDevices( kHIDPage_GenericDesktop, kHIDUsage_GD_Keyboard, id ); - /* + LOG->Trace( "Finding mice" ); AddDevices( kHIDPage_GenericDesktop, kHIDUsage_GD_Mouse, id ); - */ + LOG->Trace( "Finding joysticks" ); id = DEVICE_JOY1; AddDevices( kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick, id ); From b91dc690435cd889359eaf442c282288ddcd2ea1 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 29 Mar 2011 23:50:41 -0500 Subject: [PATCH 124/241] change how these are compared by putting the load in the condition too --- src/GameSoundManager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/GameSoundManager.cpp b/src/GameSoundManager.cpp index f0b0a9d686..2c17b82c6e 100644 --- a/src/GameSoundManager.cpp +++ b/src/GameSoundManager.cpp @@ -142,9 +142,9 @@ static void StartMusic( MusicToPlay &ToPlay ) { LOG->Trace( "Found '%s'", ToPlay.m_sTimingFile.c_str() ); Song song; - if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".ssc" ) + if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".ssc" && + SSCLoader::LoadFromSSCFile(ToPlay.m_sTimingFile, song) ) { - SSCLoader::LoadFromSSCFile(ToPlay.m_sTimingFile, song); ToPlay.HasTiming = true; ToPlay.m_TimingData = song.m_Timing; // get cabinet lights if any @@ -152,9 +152,9 @@ static void StartMusic( MusicToPlay &ToPlay ) if( pStepsCabinetLights ) pStepsCabinetLights->GetNoteData( ToPlay.m_LightsData ); } - else if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".sm" ) + else if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".sm" && + SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song) ) { - SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song); ToPlay.HasTiming = true; ToPlay.m_TimingData = song.m_Timing; // get cabinet lights if any From c2b397d43e1369db0601e48c5c354462f2766525 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Wed, 30 Mar 2011 13:30:18 -0500 Subject: [PATCH 125/241] add Remove to ScreenEditOptions; fixes issue 242 --- Themes/_fallback/metrics.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 47c1b44bf8..72a53b7a53 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3615,13 +3615,14 @@ CancelTransitionsOut=true PlayMusic=false TimerSeconds=-1 ShowStyleIcon=false -LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" +LineNames="1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,15,16" Line1="list,Speed" Line2="list,Accel" Line3="list,Effect" Line4="list,Appearance" Line5="list,Turn" Line6="list,Insert" +LineR="list,Remove" Line7="list,Scroll" Line8="list,NoteSkins" Line9="list,Holds" From 34813c26ef2c03bdcd33aa1bd15be9079c063512 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Wed, 30 Mar 2011 21:37:11 -0400 Subject: [PATCH 126/241] Disable saving ALL steps in the .sm format. --- src/NotesWriterSM.cpp | 4 +--- src/NotesWriterSM.h | 2 +- src/Song.cpp | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/NotesWriterSM.cpp b/src/NotesWriterSM.cpp index 7b80baba19..13d3e21a3b 100644 --- a/src/NotesWriterSM.cpp +++ b/src/NotesWriterSM.cpp @@ -287,7 +287,7 @@ static RString GetSMNotesTag( const Song &song, const Steps &in ) return JoinLineList( lines ); } -bool NotesWriterSM::Write( RString sPath, const Song &out ) +bool NotesWriterSM::Write( RString sPath, const Song &out, const vector& vpStepsToSave ) { int flags = RageFile::WRITE; @@ -302,8 +302,6 @@ bool NotesWriterSM::Write( RString sPath, const Song &out ) WriteGlobalTags( f, out ); - // Save specified Steps to this file - const vector& vpStepsToSave = out.GetAllSteps(); FOREACH_CONST( Steps*, vpStepsToSave, s ) { const Steps* pSteps = *s; diff --git a/src/NotesWriterSM.h b/src/NotesWriterSM.h index 71a5e8b292..ee0ed26441 100644 --- a/src/NotesWriterSM.h +++ b/src/NotesWriterSM.h @@ -11,7 +11,7 @@ namespace NotesWriterSM * @param sPath the path to write the file. * @param out the Song to be written out. * @return its success or failure. */ - bool Write( RString sPath, const Song &out ); + bool Write( RString sPath, const Song &out, const vector& vpStepsToSave ); /** * @brief Get some contents about the edit file first. * @param pSong the Song in question. diff --git a/src/Song.cpp b/src/Song.cpp index b9d15c3ea8..50537a8b97 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -925,7 +925,22 @@ bool Song::SaveToSMFile() // If the file exists, make a backup. if( IsAFile(sPath) ) FileCopy( sPath, sPath + ".old" ); - return NotesWriterSM::Write( sPath, *this ); + + vector vpStepsToSave; + FOREACH_CONST( Steps*, m_vpSteps, s ) + { + Steps *pSteps = *s; + if( pSteps->IsAutogen() ) + continue; // don't write autogen notes + + // Only save steps that weren't loaded from a profile. + if( pSteps->WasLoadedFromProfile() ) + continue; + + vpStepsToSave.push_back( pSteps ); + } + + return NotesWriterSM::Write( sPath, *this, vpStepsToSave ); } From 58724886d5e6b8467158707897c55eddc65bf2ea Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Wed, 30 Mar 2011 21:57:54 -0400 Subject: [PATCH 127/241] It's not delays that are the problem now. --- src/TimingData.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TimingData.cpp b/src/TimingData.cpp index 989b780dff..0fa5d50889 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -546,7 +546,7 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float fBPS = itBPMS->m_fBPS; itBPMS ++; break; - case FOUND_STOP: // TODO: update for Delays. + case FOUND_STOP: { fTimeToNextEvent = itSS->m_fStopSeconds; fNextEventTime = fLastTime + fTimeToNextEvent; From 22e2c8f6254d2f6bfdee5ab50ee8edd85b1154d9 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Thu, 31 Mar 2011 23:31:13 +0700 Subject: [PATCH 128/241] fix stops bug on stops longer than 1 seconds, iStepSearchRows is 0. the fix is to look backwards in addition to looking forwards. --- src/Player.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Player.cpp b/src/Player.cpp index 13bae07600..92aeee5f09 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1973,7 +1973,10 @@ void Player::StepStrumHopo( int col, int row, const RageTimer &tm, bool bHeld, b * Either option would fundamentally change the grading of two quick notes * "jack hammers." Hmm. */ - const int iStepSearchRows = BeatToNoteRow( GAMESTATE->m_pCurSong->m_Timing.GetBeatFromElapsedTime( GAMESTATE->m_fMusicSeconds + StepSearchDistance ) ) - iSongRow; + const int iStepSearchRows = max( + BeatToNoteRow( GAMESTATE->m_pCurSong->m_Timing.GetBeatFromElapsedTime( GAMESTATE->m_fMusicSeconds + StepSearchDistance ) ) - iSongRow, + iSongRow - BeatToNoteRow( GAMESTATE->m_pCurSong->m_Timing.GetBeatFromElapsedTime( GAMESTATE->m_fMusicSeconds - StepSearchDistance ) ) + ) + ROWS_PER_BEAT; int iRowOfOverlappingNoteOrRow = row; if( row == -1 ) { From 11a163a395d09d3771469392355d1a7fda6b34d9 Mon Sep 17 00:00:00 2001 From: Thai Pangsakulyanont Date: Fri, 1 Apr 2011 00:34:09 +0700 Subject: [PATCH 129/241] added NoOffset. I believe that this should probably fix the global offset offsyncing problem on Windows: http://www.youtube.com/watch?v=6egnvovtfHw --- src/AutoKeysounds.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AutoKeysounds.cpp b/src/AutoKeysounds.cpp index b5558456cd..5118be44fd 100644 --- a/src/AutoKeysounds.cpp +++ b/src/AutoKeysounds.cpp @@ -99,7 +99,7 @@ void AutoKeysounds::LoadAutoplaySoundsInto( RageSoundReader_Chain *pChain ) if( tn[pn].iKeysoundIndex >= 0 ) { RString sKeysoundFilePath = sSongDir + pSong->m_vsKeysoundFile[tn[pn].iKeysoundIndex]; - float fSeconds = pSong->m_Timing.GetElapsedTimeFromBeat( NoteRowToBeat(iRow) ); + float fSeconds = pSong->m_Timing.GetElapsedTimeFromBeatNoOffset( NoteRowToBeat(iRow) ); float fPan = 0; if( !bSoundIsGlobal ) From 39448381910c32affcdfb7d1669299d0ce3b03e2 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Fri, 1 Apr 2011 00:14:08 -0500 Subject: [PATCH 130/241] GamePref* -> UserPref* for the Lua functions; fixes bug 246 --- Themes/default/metrics.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 9c36c29337..e66dbe9d61 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -830,24 +830,24 @@ Fallback="ScreenOptionsServiceChild" NextScreen="ScreenOptionsExtended" PrevScreen="ScreenOptionsExtended" LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter" -LinegNotePos="lua,GamePrefNotePosition()" +LinegNotePos="lua,UserPrefNotePosition()" LinegScore="lua,UserPrefGameplayShowScore()" LinegSScore="lua,UserPrefSpecialScoringMode()" LinegSDisp="lua,UserPrefGameplayShowStepsDisplay()" LinegOpts="lua,UserPrefShowLotsaOptions()" -LinegAuto="lua,GamePrefAutoSetStyle()" +LinegAuto="lua,UserPrefAutoSetStyle()" LinegLongFail="lua,UserPrefLongFail()" -LinegComboUnderField="lua,GamePrefComboUnderField()" +LinegComboUnderField="lua,UserPrefComboUnderField()" LineFlashyCombo="lua,UserPrefFlashyCombo()" LineGameplayFooter="lua,UserPrefGameplayFooter()" [ScreenOptionsSystemDirection] LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,15,16,LF,17,18,19,20,21,22" LineLF="lua,UserPrefLongFail()" -LineRollCombo="lua,GamePrefComboOnRolls()" +LineRollCombo="lua,UserPrefComboOnRolls()" LineFlashyCombo="lua,UserPrefFlashyCombo()" [ScreenOptionsAdvanced] LineNames="2,3,4,8,11,13,14,15,16,28,29,30,RollCombo" -LineRollCombo="lua,GamePrefComboOnRolls()" +LineRollCombo="lua,UserPrefComboOnRolls()" [ScreenOptionsService] ShowHeader=false From 7a9796f769da79818e138ebf7e0acb9843d31f80 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Fri, 1 Apr 2011 01:35:14 -0400 Subject: [PATCH 131/241] Add metrics for BPM and Song Length sorting. Fixes request 173. --- Themes/_fallback/metrics.ini | 3 +++ src/SongUtil.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 72a53b7a53..58d1b6d53d 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -843,6 +843,9 @@ ShowRoulette=true ShowRandom=false ShowPortal=false # +SortBPMDivision=20 +SortLengthDivision=5 +# MostPlayedSongsToShow=30 RecentSongsToShow=30 # diff --git a/src/SongUtil.cpp b/src/SongUtil.cpp index d221159346..2641f860f0 100644 --- a/src/SongUtil.cpp +++ b/src/SongUtil.cpp @@ -19,6 +19,9 @@ #include "LuaBinding.h" #include "EnumHelper.h" +ThemeMetric SORT_BPM_DIVISION ( "MusicWheel", "SortBPMDivision" ); +ThemeMetric SORT_LENGTH_DIVISION ( "MusicWheel", "SortLengthDivision" ); + bool SongCriteria::Matches( const Song *pSong ) const { if( !m_sGroupName.empty() && m_sGroupName != pSong->m_sGroupName ) @@ -595,8 +598,7 @@ RString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so return SORT_NOT_AVAILABLE.GetValue(); case SORT_BPM: { - // todo: make this a theme metric? -aj - const int iBPMGroupSize = 20; + const int iBPMGroupSize = SORT_BPM_DIVISION; DisplayBpms bpms; pSong->GetDisplayBpms( bpms ); int iMaxBPM = (int)bpms.GetMax(); @@ -605,8 +607,7 @@ RString SongUtil::GetSectionNameFromSongAndSort( const Song* pSong, SortOrder so } case SORT_LENGTH: { - // todo: make this a theme metric? -aj - const int iSortLengthSize = 5; + const int iSortLengthSize = SORT_LENGTH_DIVISION; int iMaxLength = (int)pSong->m_fMusicLengthSeconds; iMaxLength += (iSortLengthSize - (iMaxLength%iSortLengthSize) - 1); int iMinLength = iMaxLength - (iSortLengthSize-1); From 348df5f561d658e02c7d17c5c74da9dbc0f9ae80 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 2 Apr 2011 00:32:30 -0500 Subject: [PATCH 132/241] Fix issue 247; a crash occurs when exiting Practice mode from dance-solo, dance-threepanel, and popn-nine (all of which can only have one player). Not sure if any other modes will cause this crash. --- Docs/Changelog_sm-ssc.txt | 6 ++++++ src/GameState.cpp | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 8916f99138..9b7c9fd1a0 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -15,6 +15,12 @@ sm-ssc $NEXTVERSION | 2011???? It depends on who you ask. It could be v1.2.5, it could be v1.3.0, it could even be StepMania 5. +20110402 +-------- +* Fix a crash (issue 247) when exiting Practice mode from dance-solo, + dance-threepanel, and popn-nine (all of which can only have one player). + If you find any other modes this crashes on, let us know. [AJ] + 20110329 -------- * [ScreenEdit] Changed sample playback button to L. [AJ] diff --git a/src/GameState.cpp b/src/GameState.cpp index 1a3f2d0793..90792cad8c 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -355,9 +355,14 @@ void GameState::JoinPlayer( PlayerNumber pn ) if( ALLOW_LATE_JOIN && m_pCurStyle != NULL ) { const Style *pStyle; - // only use one player for StyleType_OnePlayerTwoSides. + // Only use one player for StyleType_OnePlayerTwoSides and StepsTypes + // that can only be played by one player (e.g. dance-solo, + // dance-threepanel, popn-nine). -aj // XXX?: still shows joined player as "Insert Card". May not be an issue? -aj - if( m_pCurStyle->m_StyleType == StyleType_OnePlayerTwoSides ) + if( m_pCurStyle->m_StyleType == StyleType_OnePlayerTwoSides || + m_pCurStyle->m_StepsType == StepsType_dance_solo || + m_pCurStyle->m_StepsType == StepsType_dance_threepanel || + m_pCurStyle->m_StepsType == StepsType_popn_nine ) pStyle = GAMEMAN->GetFirstCompatibleStyle( m_pCurGame, 1, m_pCurStyle->m_StepsType ); else pStyle = GAMEMAN->GetFirstCompatibleStyle( m_pCurGame, GetNumSidesJoined(), m_pCurStyle->m_StepsType ); From 9eb9f182a623c15e28d7991000ac3a420da6dfb4 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 2 Apr 2011 00:49:08 -0500 Subject: [PATCH 133/241] small cleanup --- src/NoteDisplay.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/NoteDisplay.cpp b/src/NoteDisplay.cpp index 0bae40abd8..3998c1fb08 100644 --- a/src/NoteDisplay.cpp +++ b/src/NoteDisplay.cpp @@ -418,7 +418,7 @@ void NoteDisplay::DrawHoldPart( vector &vpSpr, int iCol, int fYStep, fl { /* For very large hold notes, shift the texture coordinates to be near 0, so we * don't send very large values to the renderer. */ - const float fDistFromTop = fYStartPos - fYTop; + const float fDistFromTop = fYStartPos - fYTop; float fTexCoordTop = SCALE( fDistFromTop, 0, fFrameHeight, rect.top, rect.bottom ); fTexCoordTop += fAddToTexCoord; fAddToTexCoord -= floorf( fTexCoordTop ); @@ -542,8 +542,8 @@ void NoteDisplay::DrawHoldBody( const TapNote& tn, int iCol, float fBeat, bool b DISPLAY->SetZTestMode( bWavyPartsNeedZBuffer?ZTEST_WRITE_ON_PASS:ZTEST_OFF ); DISPLAY->SetZWrite( bWavyPartsNeedZBuffer ); - /* Hack: Z effects need a finer grain step. */ - const int fYStep = bWavyPartsNeedZBuffer? 4: 16; // use small steps only if wavy + // Hack: Z effects need a finer grain step. + const int fYStep = bWavyPartsNeedZBuffer? 4: 16; // use small steps only if wavy if( bFlipHoldBody ) { @@ -641,16 +641,18 @@ void NoteDisplay::DrawHold( const TapNote &tn, int iCol, int iRow, bool bIsBeing /* The body and caps should have no overlap, so their order doesn't matter. * Draw the head last, so it appears on top. */ float fBeat = NoteRowToBeat(iRow); - //if( !cache->m_bHoldHeadIsAboveWavyParts ) - //{ - // Actor *pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, NoteRowToBeat(iRow), tn.subType == TapNote::hold_head_roll, bIsBeingHeld ); - // DrawActor( tn, pActor, NotePart_HoldHead, iCol, bFlipHeadAndTail ? fEndYOffset : fStartYOffset, fBeat, bIsAddition, fPercentFadeToFail, fReverseOffsetPixels, fColorScale, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); - //} - //if( !cache->m_bHoldTailIsAboveWavyParts ) - //{ - // Actor *pActor = GetHoldActor( m_HoldTail, NotePart_HoldTail, NoteRowToBeat(iRow), tn.subType == TapNote::hold_head_roll, bIsBeingHeld ); - // DrawActor( tn, pActor, NotePart_HoldTail, iCol, bFlipHeadAndTail ? fStartYOffset : fEndYOffset, fBeat, bIsAddition, fPercentFadeToFail, fReverseOffsetPixels, fColorScale, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); - //} + /* + if( !cache->m_bHoldHeadIsAboveWavyParts ) + { + Actor *pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, NoteRowToBeat(iRow), tn.subType == TapNote::hold_head_roll, bIsBeingHeld ); + DrawActor( tn, pActor, NotePart_HoldHead, iCol, bFlipHeadAndTail ? fEndYOffset : fStartYOffset, fBeat, bIsAddition, fPercentFadeToFail, fReverseOffsetPixels, fColorScale, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); + } + if( !cache->m_bHoldTailIsAboveWavyParts ) + { + Actor *pActor = GetHoldActor( m_HoldTail, NotePart_HoldTail, NoteRowToBeat(iRow), tn.subType == TapNote::hold_head_roll, bIsBeingHeld ); + DrawActor( tn, pActor, NotePart_HoldTail, iCol, bFlipHeadAndTail ? fStartYOffset : fEndYOffset, fBeat, bIsAddition, fPercentFadeToFail, fReverseOffsetPixels, fColorScale, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); + } + */ DrawHoldBody( tn, iCol, fBeat, bIsBeingHeld, fYHead, fYTail, bIsAddition, fPercentFadeToFail, fColorScale, false, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); DrawHoldBody( tn, iCol, fBeat, bIsBeingHeld, fYHead, fYTail, bIsAddition, fPercentFadeToFail, fColorScale, true, fDrawDistanceAfterTargetsPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar ); From 7e747c6d650d78ea44b27494e5aceb6cb135bce4 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sat, 2 Apr 2011 16:37:45 -0400 Subject: [PATCH 134/241] Implement Dominik's patch. Someone on Linux needs to test if possible. This will be reverted if it's proven it doesn't work. --- src/arch/InputHandler/InputHandler_Linux_Event.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/InputHandler/InputHandler_Linux_Event.cpp b/src/arch/InputHandler/InputHandler_Linux_Event.cpp index 6c944f9a29..2baebdc253 100644 --- a/src/arch/InputHandler/InputHandler_Linux_Event.cpp +++ b/src/arch/InputHandler/InputHandler_Linux_Event.cpp @@ -398,7 +398,7 @@ void InputHandler_Linux_Event::InputThread() DeviceButton neg = g_apEventDevices[i]->aiAbsMappingLow[event.code]; DeviceButton pos = g_apEventDevices[i]->aiAbsMappingHigh[event.code]; - float l = SCALE( int(event.value), (float) g_apEventDevices[i]->aiAbsMin[i], (float) g_apEventDevices[i]->aiAbsMax[i], -1.0f, 1.0f ); + float l = SCALE( int(event.value), (float) g_apEventDevices[i]->aiAbsMin[event.code], (float) g_apEventDevices[i]->aiAbsMax[event.code], -1.0f, 1.0f ); ButtonPressed( DeviceInput(g_apEventDevices[i]->m_Dev, neg, max(-l,0), now) ); ButtonPressed( DeviceInput(g_apEventDevices[i]->m_Dev, pos, max(+l,0), now) ); break; From 7c04c919b9daa9eb8ac0011233a28efd0844c274 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 01:26:36 -0500 Subject: [PATCH 135/241] small comment/cleanup --- src/Player.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Player.cpp b/src/Player.cpp index 92aeee5f09..6e620bdec2 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2562,7 +2562,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds ) if( !NeedsTapJudging(tn) ) continue; - + // Ignore all notes that are skipped via WARPS. if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iter.Row() ) ) continue; @@ -2598,7 +2598,7 @@ void Player::UpdateJudgedRows() { int iRow = iter.Row(); - // if row is within a warp section, ignore it. -aj + // If row is within a warp section, ignore it. -aj if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow(iRow) ) continue; @@ -2933,7 +2933,7 @@ void Player::HandleTapRowScore( unsigned row ) bNoCheating = false; #endif - // more warp hackery. -aj + // Warp hackery. -aj if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( row ) ) return; @@ -3037,7 +3037,7 @@ void Player::HandleHoldCheckpoint( int iRow, int iNumHoldsHeldThisRow, int iNumH bNoCheating = false; #endif - // more warp hackery. -aj + // More warp hackery. -aj if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iRow ) ) return; From c9776058977b43529c0fb7eb0bc80883c3f6b05d Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 04:21:07 -0400 Subject: [PATCH 136/241] Add comment about an old bug. --- src/ScreenGameplaySyncMachine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ScreenGameplaySyncMachine.cpp b/src/ScreenGameplaySyncMachine.cpp index 2ac318a5b1..008bb31585 100644 --- a/src/ScreenGameplaySyncMachine.cpp +++ b/src/ScreenGameplaySyncMachine.cpp @@ -35,6 +35,7 @@ void ScreenGameplaySyncMachine::Init() SongUtil::GetPlayableSteps( &m_Song, vpSteps ); ASSERT_M(vpSteps.size() > 0, "No playable steps for ScreenGameplaySyncMachine"); Steps *pSteps = vpSteps[0]; + // TODO: Either detect which player accessed this file, or FOREACH all of them. -Wolfman2000 GAMESTATE->m_pCurSteps[0].Set( pSteps ); GamePreferences::m_AutoPlay.Set( PC_HUMAN ); From ca383b7fcca162511670644bdbf794b47622340a Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 12:44:23 -0500 Subject: [PATCH 137/241] GetExtension takes in an RString. steve was right, I don't need to .c_str() here --- src/GameSoundManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GameSoundManager.cpp b/src/GameSoundManager.cpp index 2c17b82c6e..5b3ba858de 100644 --- a/src/GameSoundManager.cpp +++ b/src/GameSoundManager.cpp @@ -142,7 +142,7 @@ static void StartMusic( MusicToPlay &ToPlay ) { LOG->Trace( "Found '%s'", ToPlay.m_sTimingFile.c_str() ); Song song; - if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".ssc" && + if( GetExtension(ToPlay.m_sTimingFile) == ".ssc" && SSCLoader::LoadFromSSCFile(ToPlay.m_sTimingFile, song) ) { ToPlay.HasTiming = true; @@ -152,7 +152,7 @@ static void StartMusic( MusicToPlay &ToPlay ) if( pStepsCabinetLights ) pStepsCabinetLights->GetNoteData( ToPlay.m_LightsData ); } - else if( GetExtension(ToPlay.m_sTimingFile.c_str()) == ".sm" && + else if( GetExtension(ToPlay.m_sTimingFile) == ".sm" && SMLoader::LoadFromSMFile(ToPlay.m_sTimingFile, song) ) { ToPlay.HasTiming = true; From 439a607e876a39ce5f919a0219fd70c7c85ba674 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 16:10:10 -0400 Subject: [PATCH 138/241] New branch from default: [metricClean] Line up metrics from fallback and default for easier diffing. The goal here is to address issue number 55 for version 1.2.5. --- Themes/_fallback/metrics.ini | 15 +- Themes/default/metrics.ini | 1288 +++++++++++++++++++--------------- 2 files changed, 748 insertions(+), 555 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 58d1b6d53d..56624e357f 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -233,6 +233,11 @@ FormatString="%03.0f" [CodeDetector] # Codes on the MusicWheel that change stuff! +# For Future Reference: +# @ = Holding +# - = In Conjuction With / Then +# ~ = Released +# + = At The Same Time PrevSteps1="Up,Up" PrevSteps2="MenuUp,MenuUp" NextSteps1="Down,Down" @@ -585,6 +590,7 @@ StreamX=0 StreamY=0 OverX=0 OverY=0 + [LifeMeterBattery] # The bar that shows up in Oni mode. @@ -1101,7 +1107,6 @@ TextOffCommand= [ScoreDisplayOni] - [ScoreDisplayLifeTime] FrameX= FrameY= @@ -1251,6 +1256,7 @@ SoundProperty="Pitch" PropertyMin=7/8 PropertyCenter=1.0 PropertyMax=9/8 + [StepsDisplayListRow] FrameX=0 FrameY=0 @@ -1834,6 +1840,7 @@ PerChoiceIconElement=false ShowScroller=true WrapScroller=true ShowIcon=false + [ScreenGameInformation] Class="ScreenSelectMaster" Fallback="ScreenSelectMaster" @@ -1958,6 +1965,7 @@ ScreenModsCommand=setupcoursestagemods # MusicWheelType="CourseWheel" Codes="CourseCodeDetector" + [CourseCodeDetector] Fallback="CodeDetector" NextSort1= @@ -1965,7 +1973,6 @@ NextSort2= NextSort3= NextSort4= - [StepsDisplay] FrameX=0 FrameY=0 @@ -2519,6 +2526,7 @@ ExplanationTogetherOffCommand= [ScreenOptionsServiceExtendedChild] Fallback="ScreenOptionsServiceChild" + [ScreenMiniMenu] Class="ScreenMiniMenu" Fallback="ScreenOptions" @@ -3342,11 +3350,13 @@ NextScreen=Branch.AfterProfileSave() PrevScreen=Branch.TitleMenu() # TimerSeconds=-1 + [ScreenProfileSaveSummary] Fallback="ScreenProfileSave" # NextScreen="ScreenGameOver" PrevScreen="ScreenGameOver" + [ScreenGameOver] Class="ScreenEnding" Fallback="ScreenAttract" @@ -4114,6 +4124,7 @@ ChoiceNames="1" IdleCommentSeconds=-1 IdleTimeoutSeconds=-1 IdleTimeoutScreen=Branch.AfterInit() + [ScreenDemonstration] Fallback="ScreenGameplay" Class="ScreenDemonstration" diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index e66dbe9d61..1fdca10835 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -1,11 +1,40 @@ +# 01 # [Global] FallbackTheme=_fallback [Common] FirstAttractScreen="" -InitialScreen="ScreenInit" -# AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle") +# 02 # +[LightsManager] + +[ProfileManager] + +[SongManager] +SongGroupColor1=BoostColor(Color("Orange"),1.2) +SongGroupColor2=BoostColor(Color("Orange"),1.25) +SongGroupColor3=BoostColor(Color("Orange"),1.25) +SongGroupColor4=BoostColor(Color("Orange"),1.25) +SongGroupColor5=BoostColor(Color("Orange"),1.25) +SongGroupColor6=BoostColor(Color("Orange"),1.25) +SongGroupColor7=BoostColor(Color("Orange"),1.25) +SongGroupColor8=BoostColor(Color("Orange"),1.25) +SongGroupColor9=BoostColor(Color("Orange"),1.25) +SongGroupColor10=BoostColor(Color("Orange"),1.25) + +CourseGroupColor1=color("1,1,1,1") +UnlockColor=color("1,0.5,0,1") +ExtraColor=color("#ff0000") -- red + +[UnlockManager] + +# 03 # +[ArrowEffects] + +[Background] + +[Banner] + [BitmapText] NumRainbowColors=1 RainbowColor1=Color("Black"); @@ -16,32 +45,23 @@ SetNormalCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("White");dif SetChangeCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5); SetRandomCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Blue");diffusetopedge,BoostColor(Color("Blue"),1.5); SetExtraCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.5); -Cycle=true -NoBpmText="000" RandomCycleSpeed=0.2 -- smaller numbers mean the bpm cycles faster -Separator="-" -ShowQMarksInRandomCycle=true [CombinedLifeMeterTug] -# We dont use it. MeterWidth=512-8 MeterHeight=40 -[CodeDetector] -# For Future Reference: -# @ = Holding -# - = In Conjuction With / Then -# ~ = Released -# + = At The Same Time -[DifficultyList] -CapitalizeDifficultyNames=false -NumShownItems=8 -ItemsSpacingY=24 -[HelpDisplay] -TipShowTime=7 [Combo] ShowComboAt=2 +[HoldJudgment] +HoldJudgmentLetGoCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 +HoldJudgmentHeldCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 + +[HelpDisplay] +TipShowTime=7 + + NumberMinZoom=0.8 NumberMaxZoom=1 NumberMaxZoomAt=100 @@ -53,37 +73,7 @@ PulseLabelCommand=%function(self,param) self:finishtweening(); self:diffusealpha NumberOnCommand=y,240-216-1.5;shadowlength,1;horizalign,right;vertalign,bottom;skewx,-0.125; LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");horizalign,left;vertalign,bottom -[FadingBanner] -BannerOnCommand= -BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;accelerate,0.05;glow,Colors.Alpha( Color("White"), 0.45 );decelerate,0.175;diffusealpha,0;glow,Color("Invisible"); -BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0 -BannerResetFadeCommand=diffusealpha,1 - -[HoldJudgment] -# !!! # -# HoldJudgmentLetGoCommand=HoldJudgmentLetGo() -# HoldJudgmentHeldCommand=HoldJudgmentHeld() -HoldJudgmentLetGoCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 -HoldJudgmentHeldCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 -# HoldJudgmentLetGoCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; -# HoldJudgmentHeldCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; -# HoldJudgmentLetGoCommand=function(self) \ - # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ - # return (cmd(visible,false))(self); \ - # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ - # end; \ -# end; -# HoldJudgmentHeldCommand=function(self) \ - # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ - # return (cmd(visible,false)); \ - # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ - # end; \ -# end; - [Judgment] -# New # -JudgmentOnCommand= -# !!! # JudgmentW1Command=finishtweening;shadowlength,0;y,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.8 JudgmentW2Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 JudgmentW3Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.2;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0; @@ -94,6 +84,66 @@ JudgmentMissCommand=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1;y,-2 OffsetOnCommand= OffsetLateCommand= OffsetEarlyCommand= + +[Protiming] +ProtimingOnCommand=shadowlength,1;horizalign,right;x,30;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; +AverageOnCommand=shadowlength,1;horizalign,left;x,32;y,8;zoom,0.75;diffuse,ColorLightTone( Color("Green") );strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; +TextOnCommand=shadowlength,1;horizalign,left;x,32;y,-6;zoom,0.5;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; +# +ProtimingW1Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W1"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW2Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W2"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW3Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W3"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW4Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W4"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingW5Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W5"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +ProtimingMissCommand=finishtweening;diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_Miss"];linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_Miss"];sleep,2;linear,0.5;diffuse,Color("Invisible"); +# +AveragePulseCommand=finishtweening;diffusealpha,1;zoom,0.75*1.025;decelerate,0.05;zoom,0.75;sleep,2;linear,0.5;diffusealpha,0; +TextPulseCommand=finishtweening;diffusealpha,1;zoom,0.5*1.025;decelerate,0.05;zoom,0.5;sleep,2;linear,0.5;diffusealpha,0; + +[Course] + +[CustomDifficulty] + +[CustomScoring] +# So special scoring works properly, we zero this out +ComboAboveThresholdAddsToScoreBonus=0 +ComboScoreBonusThreshold=0 +ComboScoreBonusValue=0 +ComboMultiplier=0 +DoubleNoteScoreMultiplier=0 +TripleNoteScoreMultiplier=0 +QuadOrHigherNoteScoreMultiplier=0 +PointsW1=0 +PointsW2=0 +PointsW3=0 +PointsW4=0 +PointsW5=0 +PointsMiss=0 +PointsHitMine=0 +PointsCheckpointHit=0 +PointsCheckpointMiss=0 +PointsNone=0 +PointsHoldHeld=0 +PointsHoldLetGo=0 + +[DifficultyList] +ItemsSpacingY=24 +NumShownItems=8 + +[FadingBanner] +BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;accelerate,0.05;glow,Colors.Alpha( Color("White"), 0.45 );decelerate,0.175;diffusealpha,0;glow,Color("Invisible"); +BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0 + +[Gameplay] + +[GameState] + +[GrooveRadar] + +[HighScore] + +[Inventory] + [LifeMeterBar] OverOnCommand=diffuse,Color("Orange");diffuserightedge,BoostColor(Color("Orange"),1.5) @@ -105,10 +155,6 @@ BatteryP1Y=0 BatteryP2X=0 BatteryP2Y=0 # -NumLivesP1X=-92 -NumLivesP1Y=0 -NumLivesP2X=92 -NumLivesP2Y=0 NumLivesP2OnCommand=zoomx,-1 [LifeMeterBattery Percent] @@ -123,8 +169,59 @@ PercentP2Y=0 PercentP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) PercentP2OffCommand= -[NoteField] -ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" +[LifeMeterTime] + +[LyricDisplay] + +[NotesWriterSM] + +[OptionRow] +TitleOnCommand=shadowlength,0;skewx,-0.1;uppercase,true;wrapwidthpixels,136;maxheight,42;zoom,0.6 +TitleGainFocusCommand=stoptweening;zoom,0.6375*1.125;bounceend,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);strokecolor,Color("Black");zoom,0.6375; +# TitleGainFocusCommand=stoptweening;zoom,0.6375*1.25;bounceend,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);strokecolor,Color("Black");zoom,0.6375;thump;effectmagnitude,1,1.05,1;effectclock,'beat' +TitleLoseFocusCommand=diffuse,Color("White");strokecolor,Color("Black");stopeffect; + +[OptionRowExit] +Fallback="OptionRow" +FrameOnCommand=visible,true;diffuse,Color("Red"); +FrameX=SCREEN_CENTER_X +TitleOnCommand=visible,false + +ItemsMinBaseZoom=1 +ItemOnCommand=shadowlength,1;zoom,0.8;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75);shadowcolor,BoostColor(Color("Red"),0.35) +ItemGainFocusCommand=stoptweening;linear,0.2;zoom,1;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75) +ItemLoseFocusCommand=stoptweening;decelerate,0.5;zoom,0.8; +ColorSelected=Color("Red") +ColorNotSelected=Color("Red") +ColorDisabled=Color("Red") + +ItemsLongRowP1X=SCREEN_CENTER_X-1024 +ItemsLongRowP2X=SCREEN_CENTER_X+1024 +ItemsLongRowSharedX=SCREEN_CENTER_X + +[OptionsCursor] + +[OptionsCursorP1] +LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_1) +MiddleOnCommand=;diffuse,PlayerColor(PLAYER_1) +RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_1) + +[OptionsCursorP2] +LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) +MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) +RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) + +[OptionsUnderline] + +[OptionsUnderlineP1] +LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_1) +MiddleOnCommand=;diffuse,PlayerColor(PLAYER_1) +RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_1) + +[OptionsUnderlineP2] +LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) +MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) +RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) [MenuTimer] Text1OnCommand=stopeffect;stoptweening;shadowlength,0;strokecolor,Color("Outline") @@ -139,14 +236,10 @@ Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcol #~ end; [MusicWheel] -FadeSeconds=1 SwitchSeconds=0.08 -RandomPicksLockedSongs=true RouletteSwitchSeconds=0.05 RouletteSlowDownSwitches=5 LockedInitialVelocity=7 -ScrollBarHeight=300 -ScrollBarOnCommand=visible,false ; linear wheel example: ; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ ; self:y(offsetFromCenter*38); \ @@ -181,10 +274,7 @@ SectionColor1=Color("Orange") SongRealExtraColor=Color("Red") SortMenuColor=Color("Orange") # -ShowRoulette=true -ShowRandom=false -ShowPortal=false -MostPlayedSongsToShow=30 + #~ ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,Genre,Length" #~ ChoicePreferred="sort,Preferred" #~ ChoiceGroup="sort,Group" @@ -205,15 +295,11 @@ UseEasyMarkerFlag=true [MusicWheelItem] WheelNotifyIconX=-128-16+0.5 -WheelNotifyIconY=0 WheelNotifyIconOnCommand=shadowlength,2; # SongNameX=-120 -SongNameY=0 -SongNameOnCommand= # CourseX=-120 -CourseY=0 CourseOnCommand=maxwidth,208;horizalign,left # SectionExpandedX=-38 @@ -245,104 +331,24 @@ GradeP2X=110+16 GradeP2Y=8 GradesShowMachine=true -[OptionRow] -TitleOnCommand=shadowlength,0;skewx,-0.1;uppercase,true;wrapwidthpixels,136;maxheight,42;zoom,0.6 -TitleGainFocusCommand=stoptweening;zoom,0.6375*1.125;bounceend,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);strokecolor,Color("Black");zoom,0.6375; -# TitleGainFocusCommand=stoptweening;zoom,0.6375*1.25;bounceend,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);strokecolor,Color("Black");zoom,0.6375;thump;effectmagnitude,1,1.05,1;effectclock,'beat' -TitleLoseFocusCommand=diffuse,Color("White");strokecolor,Color("Black");stopeffect; -[OptionRowMiniMenu] -Fallback="OptionRow" - -TitleX=SCREEN_CENTER_X-320+48 -TitleOnCommand=horizalign,left;shadowlength,0;uppercase,true;zoom,0.6375;strokecolor,Color("Black"); -#~ TitleGainFocusCommand= -#~ TitleLoseFocusCommand= - -ColorSelected=color("1,1,1,1") -ColorNotSelected=color("0.9,0.9,0.9,1") -ColorDisabled=color("0.5,0.5,0.5,1") - -ItemOnCommand=zoom,0.6375 -ItemsLongRowP1X=SCREEN_CENTER_X-240 -ItemsLongRowP2X=SCREEN_CENTER_X+240 -ItemsLongRowSharedX=SCREEN_CENTER_X+200 - -[OptionRowMiniMenuContext] -Fallback="OptionRowMiniMenu" - -[OptionRowExit] -Fallback="OptionRow" -FrameOnCommand=visible,true;diffuse,Color("Red"); -FrameX=SCREEN_CENTER_X -TitleOnCommand=visible,false - -ItemsMinBaseZoom=1 -ItemOnCommand=shadowlength,1;zoom,0.8;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75);shadowcolor,BoostColor(Color("Red"),0.35) -ItemGainFocusCommand=stoptweening;linear,0.2;zoom,1;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75) -ItemLoseFocusCommand=stoptweening;decelerate,0.5;zoom,0.8; -ColorSelected=Color("Red") -ColorNotSelected=Color("Red") -ColorDisabled=Color("Red") - -ItemsLongRowP1X=SCREEN_CENTER_X-1024 -ItemsLongRowP2X=SCREEN_CENTER_X+1024 -ItemsLongRowSharedX=SCREEN_CENTER_X - -[OptionsCursorP1] -LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_1) -MiddleOnCommand=;diffuse,PlayerColor(PLAYER_1) -RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_1) -[OptionsCursorP2] -LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) -MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) -RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) -[OptionsUnderlineP1] -LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_1) -MiddleOnCommand=;diffuse,PlayerColor(PLAYER_1) -RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_1) -[OptionsUnderlineP2] -LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) -MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) -RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) -[Protiming] -ProtimingOnCommand=shadowlength,1;horizalign,right;x,30;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; -AverageOnCommand=shadowlength,1;horizalign,left;x,32;y,8;zoom,0.75;diffuse,ColorLightTone( Color("Green") );strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; -TextOnCommand=shadowlength,1;horizalign,left;x,32;y,-6;zoom,0.5;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; -# -ProtimingW1Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W1"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -ProtimingW2Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W2"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -ProtimingW3Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W3"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -ProtimingW4Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W4"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -ProtimingW5Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W5"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -ProtimingMissCommand=finishtweening;diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_Miss"];linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_Miss"];sleep,2;linear,0.5;diffuse,Color("Invisible"); -# -AveragePulseCommand=finishtweening;diffusealpha,1;zoom,0.75*1.025;decelerate,0.05;zoom,0.75;sleep,2;linear,0.5;diffusealpha,0; -TextPulseCommand=finishtweening;diffusealpha,1;zoom,0.5*1.025;decelerate,0.05;zoom,0.5;sleep,2;linear,0.5;diffusealpha,0; -[Player] -# ReceptorArrowsYStandard=GetTapPosition('Standard') -# ReceptorArrowsYReverse=GetTapPosition('Reverse') -# RollBodyIncrementsCombo=GetUserPrefB("UserPrefComboOnRolls") +[NoteField] +ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" [ScoreDisplayNormal] -FrameX= -FrameY= -FrameOnCommand= -FrameOffCommand= -TextX= -TextY= TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) -TextOffCommand= [ScoreDisplayOni] TextX= TextY= TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) TextOffCommand= + [ScoreDisplayOni Numbers] TextX= TextY= TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) TextOffCommand= + [ScoreDisplayLifeTime] FrameX= FrameY= @@ -355,23 +361,33 @@ TimeRemainingOnCommand=zoom,1;shadowlength,1;settext,"Hi!"; TimeRemainingOffCommand= # DeltaSecondsOnCommand=y,80;settext,Hi;spin; -DeltaSecondsNoneCommand= -DeltaSecondsHitMineCommand= -DeltaSecondsAvoidMineCommand= -DeltaSecondsCheckpointMissCommand= -DeltaSecondsCheckpointHitCommand= -DeltaSecondsMissCommand= -DeltaSecondsW5Command= -DeltaSecondsW4Command= -DeltaSecondsW3Command= -DeltaSecondsW2Command= -DeltaSecondsW1Command= -DeltaSecondsLetGoCommand= -DeltaSecondsHeldCommand= DeltaSecondsGainLifeCommand=zoom,0.5;settext,"Hi!"; + [ScoreDisplayPercentage Percent] PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);diffusetopedge,BoostColor(PlayerColor(PLAYER_1),1.5) PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);diffusetopedge,BoostColor(PlayerColor(PLAYER_2),1.5) + +[ScoreDisplayRave] +MeterP1X= +MeterP1Y= +MeterP1OnCommand=draworder,-1 +MeterP1OffCommand= +MeterP2X= +MeterP2Y= +MeterP2OnCommand=draworder,-1;zoomx,-1 +MeterP2OffCommand= + +LevelP1X= +LevelP1Y= +LevelP1OnCommand=draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) );x,-144;skewx,-0.125; +LevelP1OffCommand= +LevelP2X= +LevelP2Y= +LevelP2OnCommand=draworder,105;draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) );x,144;skewx,-0.125; +LevelP2OffCommand= + +[ScoreKeeperRave] + [ScreenEvaluation Percent] # This shouldn't even be named this but whatever man. PercentP1X=0 @@ -406,211 +422,13 @@ Format= PercentDecimalPlaces=2 PercentTotalSize=5 -[ScoreDisplayRave] -MeterP1X= -MeterP1Y= -MeterP1OnCommand=draworder,-1 -MeterP1OffCommand= -MeterP2X= -MeterP2Y= -MeterP2OnCommand=draworder,-1;zoomx,-1 -MeterP2OffCommand= +[SoundEffectControl] -LevelP1X= -LevelP1Y= -LevelP1OnCommand=draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) );x,-144;skewx,-0.125; -LevelP1OffCommand= -LevelP2X= -LevelP2Y= -LevelP2OnCommand=draworder,105;draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) );x,144;skewx,-0.125; -LevelP2OffCommand= -[SongManager] -SongGroupColor1=BoostColor(Color("Orange"),1.2) -SongGroupColor2=BoostColor(Color("Orange"),1.25) -SongGroupColor3=BoostColor(Color("Orange"),1.25) -SongGroupColor4=BoostColor(Color("Orange"),1.25) -SongGroupColor5=BoostColor(Color("Orange"),1.25) -SongGroupColor6=BoostColor(Color("Orange"),1.25) -SongGroupColor7=BoostColor(Color("Orange"),1.25) -SongGroupColor8=BoostColor(Color("Orange"),1.25) -SongGroupColor9=BoostColor(Color("Orange"),1.25) -SongGroupColor10=BoostColor(Color("Orange"),1.25) +[SoundEffectControl_Off] -CourseGroupColor1=color("1,1,1,1") -UnlockColor=color("1,0.5,0,1") -ExtraColor=color("#ff0000") -- red +[SoundEffectControl_Speed] -[SongMeterDisplay] -StreamWidth=380 - -ContainerX= -ContainerY= -ContainerOnCommand= -ContainerOffCommand= - -FrameX=0 -FrameY=0 -FrameOnCommand=sleep,2;linear,0.25;diffuse,Color("Orange");glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 -FrameOffCommand= - -StreamX=0 -StreamY=0 -StreamOnCommand=0 -StreamOffCommand=0 - -TipX=0 -TipY=0 -TipOnCommand= -TipOffCommand= -[SongMeterDisplayP1] -Fallback="SongMeterDisplay" -FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_1);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 -[SongMeterDisplayP2] -Fallback="SongMeterDisplay" -FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_2);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 -[StepsDisplay] -FrameX=0 -FrameY=0 -FrameOnCommand= -FrameLoadCommand=%function(self,param) end; -FrameSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - end; \ -end; -# -ShowTicks=false -NumTicks=10 -MaxTicks=14 -TicksX=0 -TicksY=0 -TicksOnCommand=shadowlength,0; -TicksSetCommand=%function(self,param) end; -# -ShowMeter=true -ZeroMeterString="?" -MeterX=56-32 -MeterY=0 -MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' -MeterSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ - end; \ - if param.Meter then \ - if param.Meter >= 100 then \ - self:basezoom(0.8); \ - self:glowshift(); \ - elseif param.Meter >= 10 then \ - self:basezoom(1); \ - self:glowshift(); \ - else \ - self:basezoom(1); \ - self:stopeffect(); \ - end; \ - end; \ -end; -# -ShowDescription=true -DescriptionX=-20-32 -DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 -# DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 -DescriptionOnCommand=shadowlength,1;uppercase,true;zoom,0.75;maxwidth,128+8 -DescriptionSetCommand=%function(self,param) \ - if self:GetText() == "" then \ - self:settext("Edit"); \ - end; \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ - end; \ -end; -# -ShowAutogen=false -AutogenX=40-32 -AutogenY=0 -AutogenOnCommand= -AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end -# -ShowStepsType=GetGamePrefB("AutoSetStyle") -# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") -StepsTypeX=-20-32 -StepsTypeY=7 -StepsTypeOnCommand=zoom,0.45 - -[StepsDisplayEdit] -Fallback="StepsDisplayGameplay" - -[StepsDisplayGameplay] -Fallback="StepsDisplay" - -FrameX=0 -FrameY=0 -FrameOnCommand= -FrameLoadCommand=%function(self,param) end; -FrameSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - end; \ -end; -# -ShowTicks=false -NumTicks=10 -MaxTicks=14 -TicksX=0 -TicksY=0 -TicksOnCommand=shadowlength,0; -TicksSetCommand=%function(self,param) end; -# -ShowMeter=true -ZeroMeterString="?" -MeterX=56 -MeterY=0 -MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' -MeterSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ - end; \ - if param.Meter then \ - if param.Meter >= 100 then \ - self:zoom(0.8); \ - else \ - self:zoom(1); \ - end; \ - end; \ -end; -# -ShowDescription=true -DescriptionX=-20 -DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 -# DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 -DescriptionOnCommand=shadowlength,1;uppercase,true;zoom,0.75;maxwidth,128+8 -DescriptionSetCommand=%function(self,param) \ - if self:GetText() == "" then \ - self:settext("Edit"); \ - end; \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ - end; \ - (cmd(finishtweening;diffusealpha,0;addx,-4;smooth,0.125;addx,4;diffusealpha,1))(self); \ -end; -# -ShowAutogen=false -AutogenX=40 -AutogenY=0 -AutogenOnCommand= -AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end -# -ShowStepsType=GetGamePrefB("AutoSetStyle") -# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") -StepsTypeX=-20 -StepsTypeY=7 -StepsTypeOnCommand=zoom,0.45 - -[StepsDisplayEvaluation] -Fallback="StepsDisplay" +[SoundEffectControl_Pitch] [StepsDisplayListRow] # @@ -680,11 +498,6 @@ AutogenY=0 AutogenOnCommand=blend,Blend.Add;diffuseshift;effectcolor1,color("#FFCC00FF");effectcolor2,color("#FFCC0088"); AutogenSetCommand= # -ShowStepsType=GetGamePrefB("AutoSetStyle") -# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") -StepsTypeX=-64-8 -StepsTypeY=0 -StepsTypeOnCommand= StepsTypeSetCommand= [StreamDisplay] @@ -717,6 +530,40 @@ TextureCoordScaleX=1 NumPills=1 AlwaysBounceNormalBar=false +[StepsDisplayEvaluation] +Fallback="StepsDisplay" + +[SongMeterDisplay] +StreamWidth=380 + +ContainerX= +ContainerY= +ContainerOnCommand= +ContainerOffCommand= + +FrameX=0 +FrameY=0 +FrameOnCommand=sleep,2;linear,0.25;diffuse,Color("Orange");glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 +FrameOffCommand= + +StreamX=0 +StreamY=0 +StreamOnCommand=0 +StreamOffCommand=0 + +TipX=0 +TipY=0 +TipOnCommand= +TipOffCommand= + +[SongMeterDisplayP1] +Fallback="SongMeterDisplay" +FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_1);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 + +[SongMeterDisplayP2] +Fallback="SongMeterDisplay" +FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_2);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 + [TextBanner] TitleOnCommand=horizalign,left;shadowlength,1; SubtitleOnCommand=horizalign,left;shadowlength,1; @@ -724,12 +571,28 @@ ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" AfterSetCommand=%TextBannerAfterSet +[WheelNotifyIcon] + +# 04 # +[Screen] + +[ScreenDebugOverlay] + [ScreenSystemLayer] CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_1); CreditsP1OffCommand= # CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_2); CreditsP2OffCommand= + +[ScreenConsoleOverlay] + +[ScreenInstallOverlay] + +[ScreenSyncOverlay] + +[ScreenStatsOverlay] + [ScreenWithMenuElements] WaitForChildrenBeforeTweening=true @@ -780,84 +643,14 @@ ArcadeOverlay.TextX=SCREEN_CENTER_X ArcadeOverlay.TextY=SCREEN_BOTTOM-48 ArcadeOverlay.TextOnCommand= ArcadeOverlay.TextOffCommand= + [ScreenWithMenuElementsBlank] ShowHeader=false ShowFooter=false -[ScreenOptions] -DisqualifyP1X=SCREEN_CENTER_X-176 -DisqualifyP1Y=SCREEN_BOTTOM-98 -DisqualifyP1OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_1 -DisqualifyP1OffCommand= -DisqualifyP2X=SCREEN_CENTER_X+176 -DisqualifyP2Y=SCREEN_BOTTOM-98 -DisqualifyP2OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_2 -DisqualifyP2OffCommand= +[ScreenSelectMaster] -ContainerOnCommand=x,-SCREEN_WIDTH;decelerate,0.35;x,SCREEN_LEFT -# PageOnCommand=fadetop,0.125;fadebottom,0.125;cropbottom,0.5;croptop,0.5;decelerate,0.25;croptop,0;cropbottom,0;fadetop,0;fadebottom,0; -CursorOnCommand= - -LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.25;fadeleft,0.05;faderight,0.05;diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25");effectclock,'beat' -LineHighlightChangeCommand=linear,0.1;diffuse,Color("White");diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25") -LineHighlightChangeToExitCommand=linear,0.1;diffuse,Color("Red");diffuseshift;effectcolor2,color("1,0,0,0.5");effectcolor1,color("1,0,0,0.25") - -[ScreenMiniMenu] -HeaderX=SCREEN_CENTER_X -HeaderY=SCREEN_TOP -HeaderOnCommand=draworder,100;visible,false -HeaderOffCommand= - -LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.3;fadeleft,0.25;faderight,0.25;diffusealpha,0.375 -LineHighlightChangeCommand= -LineHighlightChangeToExitCommand= - -[ScreenMiniMenuContext] -PageOnCommand=visible,false -LineHighlightX=SCREEN_CENTER_X/2 - -TitleX=SCREEN_CENTER_X -TitleOnCommand=shadowlength,1; -ItemsStartX=SCREEN_CENTER_X -ItemsEndX=SCREEN_CENTER_X -ItemsGapX=14 -ItemsLongRowP1X=SCREEN_CENTER_X -ItemsLongRowP2X=SCREEN_CENTER_X -ItemsLongRowSharedX=SCREEN_CENTER_X - -[ScreenOptionsTheme] -Fallback="ScreenOptionsServiceChild" -NextScreen="ScreenOptionsExtended" -PrevScreen="ScreenOptionsExtended" -LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter" -LinegNotePos="lua,UserPrefNotePosition()" -LinegScore="lua,UserPrefGameplayShowScore()" -LinegSScore="lua,UserPrefSpecialScoringMode()" -LinegSDisp="lua,UserPrefGameplayShowStepsDisplay()" -LinegOpts="lua,UserPrefShowLotsaOptions()" -LinegAuto="lua,UserPrefAutoSetStyle()" -LinegLongFail="lua,UserPrefLongFail()" -LinegComboUnderField="lua,UserPrefComboUnderField()" -LineFlashyCombo="lua,UserPrefFlashyCombo()" -LineGameplayFooter="lua,UserPrefGameplayFooter()" -[ScreenOptionsSystemDirection] -LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,15,16,LF,17,18,19,20,21,22" -LineLF="lua,UserPrefLongFail()" -LineRollCombo="lua,UserPrefComboOnRolls()" -LineFlashyCombo="lua,UserPrefFlashyCombo()" -[ScreenOptionsAdvanced] -LineNames="2,3,4,8,11,13,14,15,16,28,29,30,RollCombo" -LineRollCombo="lua,UserPrefComboOnRolls()" -[ScreenOptionsService] -ShowHeader=false - -# ScreenOptionsSystemDirection" - -NumRowsShown=14 -RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(SCREEN_CENTER_Y-170+24*offsetFromCenter) end - -SeparateExitRow=false -SeparateExitRowY=SCREEN_BOTTOM-40 +[ScreenSelectMasterBlank] [ScreenTextEntry] QuestionOnCommand=diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);wrapwidthpixels,600 @@ -934,25 +727,15 @@ DefaultChoice="1" #ChoiceSetup="text,Setup" ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" -[ScreenQuickSetupOverview] -IconStartX=SCREEN_CENTER_X-160 -IconStartY=SCREEN_BOTTOM-60 -IconSetX=SCREEN_CENTER_X-160 -IconSetY=SCREEN_BOTTOM-60 -IconBackX=SCREEN_CENTER_X+160 -IconBackY=SCREEN_BOTTOM-60 - -ExplanationX=SCREEN_CENTER_X -ExplanationY=SCREEN_BOTTOM-100 -ExplanationOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_WIDTH/0.75; -ExplanationOffCommand= [ScreenProfileLoad] # ShowHeader=true ShowFooter=true ShowHelp=true + [ScreenSelectProfile] WaitForChildrenBeforeTweening=true + [ScreenSelectStyle] UpdateOnMesage="" # @@ -1106,6 +889,23 @@ IconChoiceEndlessY=SCREEN_BOTTOM-88 IconChoiceEndlessOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceEndlessOffCommand=linear,0.1175;zoomx,0 +[ScreenQuickSetupOverview] +IconStartX=SCREEN_CENTER_X-160 +IconStartY=SCREEN_BOTTOM-60 +IconSetX=SCREEN_CENTER_X-160 +IconSetY=SCREEN_BOTTOM-60 +IconBackX=SCREEN_CENTER_X+160 +IconBackY=SCREEN_BOTTOM-60 + +ExplanationX=SCREEN_CENTER_X +ExplanationY=SCREEN_BOTTOM-100 +ExplanationOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_WIDTH/0.75; +ExplanationOffCommand= + +[ScreenSelectCharacter] + +[ScreenGameInformation] + [ScreenSelectMusic] UsePlayerSelectMenu=false # OptionsMenuAvailable=(getenv(sMode) ~= Oni) @@ -1320,6 +1120,7 @@ PercentScoreP2X=SCREEN_CENTER_X+240-1 PercentScoreP2Y=SCREEN_BOTTOM-60 PercentScoreP2OnCommand=player,PLAYER_2;addy,SCREEN_CENTER_Y;decelerate,0.35;addy,-SCREEN_CENTER_Y PercentScoreP2OffCommand=bouncebegin,0.15;zoomx,0; + [ScreenSelectCourse] #~ ScreenInitCommand=%function(self) \ #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_1); \ @@ -1339,39 +1140,288 @@ ShowPaneDisplayFrameP1=false ShowPaneDisplayTextP1=false ShowPaneDisplayFrameP2=false ShowPaneDisplayTextP2=false -[ScreenNetSelectMusic] -StepsDisplayP1X=SCREEN_CENTER_X-240 -StepsDisplayP1Y=SCREEN_CENTER_Y+185 -StepsDisplayP1OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 -StepsDisplayP1OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 -#--# -StepsDisplayP2X=SCREEN_CENTER_X-110 -StepsDisplayP2Y=SCREEN_CENTER_Y+185 -StepsDisplayP2OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 -StepsDisplayP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 -#====# -BPMDisplayX=SCREEN_CENTER_X-160-90+2 -BPMDisplayY=SCREEN_CENTER_Y+156 -BPMDisplayOnCommand=finishtweening;horizalign,left;strokecolor,Color("Outline");maxwidth,128;addx,320;zoomx,0;decelerate,0.35;addx,-320;zoomx,1 -BPMDisplayOffCommand=bouncebegin,0.15;zoomx,0; -#--# -ShowBPMLabel=true -BPMLabelX=SCREEN_CENTER_X-160-90 -BPMLabelY=SCREEN_CENTER_Y+156 -BPMLabelOnCommand=horizalign,right;zoom,0.75;strokecolor,Color("Outline");addx,-SCREEN_CENTER_X;decelerate,0.35;addx,SCREEN_CENTER_X -BPMLabelOffCommand=bouncebegin,0.15;zoomx,0; -UsersX=SCREEN_CENTER_X-272 -UsersY=SCREEN_CENTER_Y-172 -UsersDX=40 -UsersAY=16 -UsersOnCommand=draworder,2;zoom,0.75;shadowlength,1 +[CourseCodeDetector] + +[StepsDisplay] +FrameX=0 +FrameY=0 +FrameOnCommand= +FrameLoadCommand=%function(self,param) end; +FrameSetCommand=%function(self,param) \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + end; \ +end; # -ShowDifficultyDisplay=true -DifficultyDisplayX=SCREEN_CENTER_X-240+200 -DifficultyDisplayY=SCREEN_CENTER_Y+185 -DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1 -DifficultyDisplayOffCommand=linear,0.25;zoomy,0; +ShowTicks=false +NumTicks=10 +MaxTicks=14 +TicksX=0 +TicksY=0 +TicksOnCommand=shadowlength,0; +TicksSetCommand=%function(self,param) end; +# +ShowMeter=true +ZeroMeterString="?" +MeterX=56-32 +MeterY=0 +MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' +MeterSetCommand=%function(self,param) \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ + end; \ + if param.Meter then \ + if param.Meter >= 100 then \ + self:basezoom(0.8); \ + self:glowshift(); \ + elseif param.Meter >= 10 then \ + self:basezoom(1); \ + self:glowshift(); \ + else \ + self:basezoom(1); \ + self:stopeffect(); \ + end; \ + end; \ +end; +# +ShowDescription=true +DescriptionX=-20-32 +DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 +# DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 +DescriptionOnCommand=shadowlength,1;uppercase,true;zoom,0.75;maxwidth,128+8 +DescriptionSetCommand=%function(self,param) \ + if self:GetText() == "" then \ + self:settext("Edit"); \ + end; \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ + end; \ +end; +# +ShowAutogen=false +AutogenX=40-32 +AutogenY=0 +AutogenOnCommand= +AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end +# +ShowStepsType=GetGamePrefB("AutoSetStyle") +# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") +StepsTypeX=-20-32 +StepsTypeY=7 +StepsTypeOnCommand=zoom,0.45 + +[StepsDisplayGameplay] +Fallback="StepsDisplay" + +FrameX=0 +FrameY=0 +FrameOnCommand= +FrameLoadCommand=%function(self,param) end; +FrameSetCommand=%function(self,param) \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + end; \ +end; +# +ShowTicks=false +NumTicks=10 +MaxTicks=14 +TicksX=0 +TicksY=0 +TicksOnCommand=shadowlength,0; +TicksSetCommand=%function(self,param) end; +# +ShowMeter=true +ZeroMeterString="?" +MeterX=56 +MeterY=0 +MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' +MeterSetCommand=%function(self,param) \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ + end; \ + if param.Meter then \ + if param.Meter >= 100 then \ + self:zoom(0.8); \ + else \ + self:zoom(1); \ + end; \ + end; \ +end; +# +ShowDescription=true +DescriptionX=-20 +DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 +# DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 +DescriptionOnCommand=shadowlength,1;uppercase,true;zoom,0.75;maxwidth,128+8 +DescriptionSetCommand=%function(self,param) \ + if self:GetText() == "" then \ + self:settext("Edit"); \ + end; \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ + end; \ + (cmd(finishtweening;diffusealpha,0;addx,-4;smooth,0.125;addx,4;diffusealpha,1))(self); \ +end; +# +ShowAutogen=false +AutogenX=40 +AutogenY=0 +AutogenOnCommand= +AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end +# +ShowStepsType=GetGamePrefB("AutoSetStyle") +# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") +StepsTypeX=-20 +StepsTypeY=7 +StepsTypeOnCommand=zoom,0.45 + +[ScreenStageInformation] +ForceTimer=true +TimerOnCommand=visible,false +TimerSeconds=3 +# +WaitForChildrenBeforeTweening=true + +[ScreenOptions] +DisqualifyP1X=SCREEN_CENTER_X-176 +DisqualifyP1Y=SCREEN_BOTTOM-98 +DisqualifyP1OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_1 +DisqualifyP1OffCommand= +DisqualifyP2X=SCREEN_CENTER_X+176 +DisqualifyP2Y=SCREEN_BOTTOM-98 +DisqualifyP2OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_2 +DisqualifyP2OffCommand= + +ContainerOnCommand=x,-SCREEN_WIDTH;decelerate,0.35;x,SCREEN_LEFT +# PageOnCommand=fadetop,0.125;fadebottom,0.125;cropbottom,0.5;croptop,0.5;decelerate,0.25;croptop,0;cropbottom,0;fadetop,0;fadebottom,0; +CursorOnCommand= + +LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.25;fadeleft,0.05;faderight,0.05;diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25");effectclock,'beat' +LineHighlightChangeCommand=linear,0.1;diffuse,Color("White");diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25") +LineHighlightChangeToExitCommand=linear,0.1;diffuse,Color("Red");diffuseshift;effectcolor2,color("1,0,0,0.5");effectcolor1,color("1,0,0,0.25") + +[ScreenOptionsMaster] + +[ScreenOptionsSimple] + +[ScreenOptionsSimpleService] + +[ScreenOptionsService] +ShowHeader=false + +# ScreenOptionsSystemDirection" + +NumRowsShown=14 +RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(SCREEN_CENTER_Y-170+24*offsetFromCenter) end + +SeparateExitRow=false +SeparateExitRowY=SCREEN_BOTTOM-40 + +[ScreenOptionsExtended] + +[ScreenOptionsServiceChild] + +[ScreenOptionsServiceExtendedChild] + +[ScreenMiniMenu] +HeaderX=SCREEN_CENTER_X +HeaderY=SCREEN_TOP +HeaderOnCommand=draworder,100;visible,false +HeaderOffCommand= + +LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.3;fadeleft,0.25;faderight,0.25;diffusealpha,0.375 +LineHighlightChangeCommand= +LineHighlightChangeToExitCommand= + +[OptionRowMiniMenu] +Fallback="OptionRow" + +TitleX=SCREEN_CENTER_X-320+48 +TitleOnCommand=horizalign,left;shadowlength,0;uppercase,true;zoom,0.6375;strokecolor,Color("Black"); +#~ TitleGainFocusCommand= +#~ TitleLoseFocusCommand= + +ColorSelected=color("1,1,1,1") +ColorNotSelected=color("0.9,0.9,0.9,1") +ColorDisabled=color("0.5,0.5,0.5,1") + +ItemOnCommand=zoom,0.6375 +ItemsLongRowP1X=SCREEN_CENTER_X-240 +ItemsLongRowP2X=SCREEN_CENTER_X+240 +ItemsLongRowSharedX=SCREEN_CENTER_X+200 + +[ScreenMiniMenuContext] +PageOnCommand=visible,false +LineHighlightX=SCREEN_CENTER_X/2 + +TitleX=SCREEN_CENTER_X +TitleOnCommand=shadowlength,1; +ItemsStartX=SCREEN_CENTER_X +ItemsEndX=SCREEN_CENTER_X +ItemsGapX=14 +ItemsLongRowP1X=SCREEN_CENTER_X +ItemsLongRowP2X=SCREEN_CENTER_X +ItemsLongRowSharedX=SCREEN_CENTER_X + +[OptionRowMiniMenuContext] +Fallback="OptionRowMiniMenu" + +[ScreenMapControllers] + +[ScreenTestInput] + +[ScreenOptionsSystemDirection] +LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,15,16,LF,17,18,19,20,21,22" +LineLF="lua,UserPrefLongFail()" +LineRollCombo="lua,UserPrefComboOnRolls()" +LineFlashyCombo="lua,UserPrefFlashyCombo()" + +[ScreenOptionsGraphicsSound] + +[ScreenOptionsAdvanced] +LineNames="2,3,4,8,11,13,14,15,16,28,29,30,RollCombo" +LineRollCombo="lua,UserPrefComboOnRolls()" + +[ScreenAppearanceOptions] + +[ScreenOptionsUI] + +[ScreenOptionsInput] + +[ScreenOptionsArcade] + +[ScreenOptionsTheme] +Fallback="ScreenOptionsServiceChild" +NextScreen="ScreenOptionsExtended" +PrevScreen="ScreenOptionsExtended" +LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter" +LinegNotePos="lua,UserPrefNotePosition()" +LinegScore="lua,UserPrefGameplayShowScore()" +LinegSScore="lua,UserPrefSpecialScoringMode()" +LinegSDisp="lua,UserPrefGameplayShowStepsDisplay()" +LinegOpts="lua,UserPrefShowLotsaOptions()" +LinegAuto="lua,UserPrefAutoSetStyle()" +LinegLongFail="lua,UserPrefLongFail()" +LinegComboUnderField="lua,UserPrefComboUnderField()" +LineFlashyCombo="lua,UserPrefFlashyCombo()" +LineGameplayFooter="lua,UserPrefGameplayFooter()" + +[ScreenSelectGame] + +[ScreenNetworkOptions] + +[ScreenOptionsManageProfiles] + +[ScreenOptionsEditProfile] + +[ScreenReloadSongs] + [ScreenPlayerOptions] LineNames=GetDefaultOptionLines() #~ LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17" @@ -1395,15 +1445,18 @@ Line15="list,ScoreDisplay" Line16="list,Steps" Line17="lua,OptionRowProTiming()" Line18="list,Characters" -[ScreenEditOptions] -Line1="lua,SpeedMods()" -[ScreenStageInformation] -ForceTimer=true -TimerOnCommand=visible,false -TimerSeconds=3 -# -WaitForChildrenBeforeTweening=true +[ScreenPlayerOptionsRestricted] + +[ScreenSongOptions] + +[ScreenExit] + +[ScreenAttract] + +[ScreenRanking] + +# 05 # C [ScreenGameplay] ShowLifeMeterForDisabledPlayers=false # @@ -1589,15 +1642,7 @@ LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; LyricDisplayDefaultColor=Color("White") -[ScreenGameplaySyncMachine] -SongMeterDisplayP1OnCommand=visible,false -SongMeterDisplayP2OnCommand=visible,false -StepsDescriptionP1OnCommand=visible,false -StepsDescriptionP2OnCommand=visible,false -StepsDisplayP1OnCommand=visible,false -StepsDisplayP2OnCommand=visible,false -PlayerOptionsP1OnCommand=visible,false -PlayerOptionsP2OnCommand=visible,false +[ScreenGameplayShared] [ScreenEvaluation] Class="ScreenEvaluation" @@ -1925,6 +1970,7 @@ SongInformationX=SCREEN_CENTER_X SongInformationY=SCREEN_TOP+100 SongInformationOnCommand=playcommand,"Set";draworder,105 SongInformationOffCommand= + [ScreenEvaluationNormal] Fallback="ScreenEvaluation" # @@ -1979,6 +2025,186 @@ SmallBanner6Y=SCREEN_TOP+100+24 SmallBanner6OnCommand=zoom,0.5 SmallBanner6OffCommand= +[ScreenProfileSave] + +[ScreenProfileSaveSummary] + +[ScreenGameOver] + +[ScreenPrompt] + +[ScreenOptionsEdit] + +[EditMenu] + +[TextBannerEditMode] + +[ScreenEditMenu] + +[ScreenEdit] + +[ScreenPracticeMenu] + +[PracticeMenu] + +[ScreenPractice] + +[ScreenEditOptions] +Line1="lua,SpeedMods()" + +[StepsDisplayEdit] +Fallback="StepsDisplayGameplay" + +[ScreenMiniMenuEditHelp] + +[OptionRowMiniMenuEditHelp] + +[ScreenMiniMenuMainMenu] + +[ScreenMiniMenuAreaMenu] + +[ScreenMiniMenuStepsInformation] + +[ScreenMiniMenuTimingDataInformation] + +[ScreenMiniMenuBackgroundChange] + +[ScreenMiniMenuPreferences] + +[ScreenMiniMenuInsertTapAttack] + +[ScreenMiniMenuInsertCourseAttack] + +[ScreenMiniMenuCourseDisplay] + +[ScreenMiniMenuCourseOptions] + +# Export Packages +[ScreenOptionsExportPackage] + +[ScreenOptionsManage] + +[OptionRowManage] + +# Manage Courses +[OptionRowCourseOverview] + +[ScreenOptionsManageCourses] + +[OptionRowCourse] + +[ScreenOptionsEditCourse] + +[OptionRowEditCourse] + +[ScreenOptionsCourseOverview] + +# visual/interactive syncing +[ScreenGameplaySyncMachine] +SongMeterDisplayP1OnCommand=visible,false +SongMeterDisplayP2OnCommand=visible,false +StepsDescriptionP1OnCommand=visible,false +StepsDescriptionP2OnCommand=visible,false +StepsDisplayP1OnCommand=visible,false +StepsDisplayP2OnCommand=visible,false +PlayerOptionsP1OnCommand=visible,false +PlayerOptionsP2OnCommand=visible,false + +[PlayerSyncMachine] + +# sm-ssc helper screens +[ScreenHowToInstallSongs] +Class="ScreenSelectMaster" +Fallback="ScreenSelectMaster" +ShowHeader=false + +ShowScroller=true +PerChoiceScrollElement=false +# +ShowIcon=true +UseIconMetrics=false +PerChoiceIconElement=false +# +ScrollerX=SCREEN_LEFT+32 +ScrollerY=SCREEN_CENTER_Y +ScrollerTransform=function(self,offset,itemIndex,numItems) self:y(24*(itemIndex-(numItems-1)/2)); end +ScrollerNumItemsToDraw=20 +ScrollerOffCommand=bouncebegin,0.25;addx,-SCREEN_CENTER_X + +ChoiceNames="WhereToFind,HowToInstall,AdditionalFolders,ReloadSongs,Exit" +ChoiceWhereToFind="urlnoexit,http://code.google.com/p/sm-ssc/wiki/FindingContent;text,"..Screen.String("Finding Songs") +ChoiceHowToInstall="urlnoexit,http://code.google.com/p/sm-ssc/wiki/InstallingContent;text,"..Screen.String("Installing Songs") +ChoiceAdditionalFolders="text,"..Screen.String("Importing Songs") +ChoiceReloadSongs="screen,ScreenReloadSongs;text,"..Screen.String("Reload Songs") +ChoiceExit="screen,"..Branch.TitleMenu()..";text,"..Screen.String("Exit") +DefaultChoice="WhereToFind" + +OptionOrderUp="5:4,4:3,3:2,2:1,1:5" +OptionOrderDown="1:2,2:3,3:4,4:5,5:1" + +# stuff for online mode: +[ScreenSMOnlineLogin] + +[ScreenNetSelectBase] + +[ScreenNetSelectMusic] +StepsDisplayP1X=SCREEN_CENTER_X-240 +StepsDisplayP1Y=SCREEN_CENTER_Y+185 +StepsDisplayP1OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 +StepsDisplayP1OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 +#--# +StepsDisplayP2X=SCREEN_CENTER_X-110 +StepsDisplayP2Y=SCREEN_CENTER_Y+185 +StepsDisplayP2OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 +StepsDisplayP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 +#====# +BPMDisplayX=SCREEN_CENTER_X-160-90+2 +BPMDisplayY=SCREEN_CENTER_Y+156 +BPMDisplayOnCommand=finishtweening;horizalign,left;strokecolor,Color("Outline");maxwidth,128;addx,320;zoomx,0;decelerate,0.35;addx,-320;zoomx,1 +BPMDisplayOffCommand=bouncebegin,0.15;zoomx,0; +#--# +ShowBPMLabel=true +BPMLabelX=SCREEN_CENTER_X-160-90 +BPMLabelY=SCREEN_CENTER_Y+156 +BPMLabelOnCommand=horizalign,right;zoom,0.75;strokecolor,Color("Outline");addx,-SCREEN_CENTER_X;decelerate,0.35;addx,SCREEN_CENTER_X +BPMLabelOffCommand=bouncebegin,0.15;zoomx,0; + +UsersX=SCREEN_CENTER_X-272 +UsersY=SCREEN_CENTER_Y-172 +UsersDX=40 +UsersAY=16 +UsersOnCommand=draworder,2;zoom,0.75;shadowlength,1 +# +ShowDifficultyDisplay=true +DifficultyDisplayX=SCREEN_CENTER_X-240+200 +DifficultyDisplayY=SCREEN_CENTER_Y+185 +DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1 +DifficultyDisplayOffCommand=linear,0.25;zoomy,0; + +[ScreenDisplayNet] + +[ScreenNetRoom] + +[RoomWheel] + +[RoomWheelItem] + +[RoomInfoDisplay] + +[ScreenSMOnlineSelectMusic] + +[ModIcon] + +[ModIconSelectMusic] + +[ModIconRow] + +[ModIconRowSelectMusic] + +[GraphDisplay] + +[ComboGraph] + [ScreenNetEvaluation] UserTier02OrBetterCommand=diffuseshift;effectperiod,0.75;effectcolor1,color("1,0.95,0.8,1");effectcolor2,color("0.8,0.95,1,1") @@ -1993,6 +2219,9 @@ LogoOffCommand=stopeffect;bouncebegin,0.35;zoom,0 ArcadeOverlay.TextY=SCREEN_BOTTOM-60 # + +[ScreenHowToPlay] + [ScreenTitleJoin] ShowHelp=false HelpText=Screen.String("HelpTextTitleJoin") @@ -2037,53 +2266,6 @@ ShowBPMDisplay=false # PlayMusic=false -# sm-ssc helper screens -[ScreenHowToInstallSongs] -Class="ScreenSelectMaster" -Fallback="ScreenSelectMaster" -ShowHeader=false +[ScreenJukeboxMenu] -ShowScroller=true -PerChoiceScrollElement=false -# -ShowIcon=true -UseIconMetrics=false -PerChoiceIconElement=false -# -ScrollerX=SCREEN_LEFT+32 -ScrollerY=SCREEN_CENTER_Y -ScrollerTransform=function(self,offset,itemIndex,numItems) self:y(24*(itemIndex-(numItems-1)/2)); end -ScrollerNumItemsToDraw=20 -ScrollerOffCommand=bouncebegin,0.25;addx,-SCREEN_CENTER_X - -ChoiceNames="WhereToFind,HowToInstall,AdditionalFolders,ReloadSongs,Exit" -ChoiceWhereToFind="urlnoexit,http://code.google.com/p/sm-ssc/wiki/FindingContent;text,"..Screen.String("Finding Songs") -ChoiceHowToInstall="urlnoexit,http://code.google.com/p/sm-ssc/wiki/InstallingContent;text,"..Screen.String("Installing Songs") -ChoiceAdditionalFolders="text,"..Screen.String("Importing Songs") -ChoiceReloadSongs="screen,ScreenReloadSongs;text,"..Screen.String("Reload Songs") -ChoiceExit="screen,"..Branch.TitleMenu()..";text,"..Screen.String("Exit") -DefaultChoice="WhereToFind" - -OptionOrderUp="5:4,4:3,3:2,2:1,1:5" -OptionOrderDown="1:2,2:3,3:4,4:5,5:1" -[CustomScoring] -# So special scoring works properly, we zero this out -ComboAboveThresholdAddsToScoreBonus=0 -ComboScoreBonusThreshold=0 -ComboScoreBonusValue=0 -ComboMultiplier=0 -DoubleNoteScoreMultiplier=0 -TripleNoteScoreMultiplier=0 -QuadOrHigherNoteScoreMultiplier=0 -PointsW1=0 -PointsW2=0 -PointsW3=0 -PointsW4=0 -PointsW5=0 -PointsMiss=0 -PointsHitMine=0 -PointsCheckpointHit=0 -PointsCheckpointMiss=0 -PointsNone=0 -PointsHoldHeld=0 -PointsHoldLetGo=0 +[ScreenJukebox] From 594bbbd2bc6cb2214b4e0f23e4dffcb98cbcd6ef Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 15:35:01 -0500 Subject: [PATCH 139/241] scroll wheel is an axis, remove comment --- src/arch/InputHandler/InputHandler_DirectInputHelper.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/arch/InputHandler/InputHandler_DirectInputHelper.cpp b/src/arch/InputHandler/InputHandler_DirectInputHelper.cpp index 6699b16910..a493502baf 100644 --- a/src/arch/InputHandler/InputHandler_DirectInputHelper.cpp +++ b/src/arch/InputHandler/InputHandler_DirectInputHelper.cpp @@ -331,7 +331,6 @@ static BOOL CALLBACK DIMouse_EnumDevObjectsProc(LPCDIDEVICEOBJECTINSTANCE dev, L in.ofs = dev->dwOfs; - // xxx: does this check for scrollwheels? -aj if(dev->dwType & DIDFT_BUTTON) { in.type = in.BUTTON; From 60c86c4b99f372a84eb63ce4abf24a8604f18764 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 15:38:25 -0500 Subject: [PATCH 140/241] slight update to comments in here --- src/tests/test_timing_data.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/test_timing_data.cpp b/src/tests/test_timing_data.cpp index 06118d6fc9..de995caab9 100644 --- a/src/tests/test_timing_data.cpp +++ b/src/tests/test_timing_data.cpp @@ -101,7 +101,7 @@ void run() CHECK( test.GetElapsedTimeFromBeat(15.0f), 14.5f ); // stopped CHECK( test.GetElapsedTimeFromBeat(16), 20.0f ); - /* todo: add warp tests once the warp code is done */ + // todo: add warp tests -aj RageTimer foobar; /* We can look up the time of any given beat, then look up the beat of that @@ -124,10 +124,10 @@ int q = 0; } LOG->Trace("... %i in %f", q, foobar.GetDeltaTime()); - // todo: add warp segments TimingData test2; test2.AddBPMSegment( BPMSegment(0, 60) ); test2.AddStopSegment( StopSegment(0, 1) ); + //test2.AddWarpSegment( WarpSegment() ); CHECK( test2.GetBeatFromElapsedTime(-1), -1.0f ); CHECK( test2.GetBeatFromElapsedTime(0), 0.0f ); CHECK( test2.GetBeatFromElapsedTime(1), 0.0f ); From d466870e5de384035294b46e307c9a80eaaa51e6 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 16:00:23 -0500 Subject: [PATCH 141/241] remove comments that aren't really needed --- src/RoomWheel.cpp | 1 - src/ScreenEdit.cpp | 7 ------- 2 files changed, 8 deletions(-) diff --git a/src/RoomWheel.cpp b/src/RoomWheel.cpp index 9678d3701f..0541b90b4e 100644 --- a/src/RoomWheel.cpp +++ b/src/RoomWheel.cpp @@ -151,7 +151,6 @@ bool RoomWheel::Select() { // Since this is not actually an option outside of this wheel, NULL is a good idea. m_LastSelection = NULL; - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_BackFromRoomName, ENTER_ROOM_NAME, "", 255 ); } return false; diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 30d900fa2b..b315b74098 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3531,7 +3531,6 @@ void ScreenEdit::HandleStepsInformationChoice( StepsInformationChoice c, const v switch( c ) { case description: - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_None, ENTER_NEW_DESCRIPTION, @@ -3580,8 +3579,6 @@ void ScreenEdit::HandleSongInformationChoice( SongInformationChoice c, const vec { Song* pSong = GAMESTATE->m_pCurSong; - // todo: Call a screen with class ScreenTextEntry instead. - // multiple times in this section, so I'm only saying it here. -aj switch( c ) { DEFAULT_FAIL(c); @@ -3628,7 +3625,6 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice { DEFAULT_FAIL( c ); case bpm: - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_BackFromBPMChange, ENTER_BPM_VALUE, @@ -3637,7 +3633,6 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice ); break; case stop: - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_BackFromStopChange, ENTER_STOP_VALUE, @@ -3646,7 +3641,6 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice ); break; case delay: - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_BackFromDelayChange, ENTER_DELAY_VALUE, @@ -3687,7 +3681,6 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice ); break; case warp: - // todo: Call a screen with class ScreenTextEntry instead. -aj ScreenTextEntry::TextEntry( SM_BackFromWarpChange, ENTER_WARP_VALUE, From 6a458cc83627e50ce846bf6df11805c3451145d9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 16:00:46 -0500 Subject: [PATCH 142/241] small comment changes --- src/ScreenSelectMusic.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ScreenSelectMusic.cpp b/src/ScreenSelectMusic.cpp index a7335d68ba..14cb6bf61c 100644 --- a/src/ScreenSelectMusic.cpp +++ b/src/ScreenSelectMusic.cpp @@ -485,7 +485,7 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) m_bStepsChosen[input.pn] ) return; // ignore - // todo: use mousewheel to scroll MusicWheel -aj + // todo: Allow mousewheel to scroll MusicWheel -aj if( USE_PLAYER_SELECT_MENU ) { @@ -1528,9 +1528,8 @@ void ScreenSelectMusic::AfterStepsOrTrailChange( const vector &vpn } else { - // I don't like how numbers just stay up there if the current - // selection is NULL. - // todo: Let themers set the text instead of just using 0. -aj + // The numbers shouldn't stay if the current selection is NULL. + // todo: Let themers set the text value instead of just using 0. -aj m_textHighScore[pn].SetText( ssprintf("%*i", NUM_SCORE_DIGITS, 0) ); } } From 6e56c0e7f526f45dcaa52b6ad8a6e59c0d3bec2a Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 16:01:08 -0500 Subject: [PATCH 143/241] change the todo comment here to something more concrete --- src/ScreenSelectMaster.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScreenSelectMaster.cpp b/src/ScreenSelectMaster.cpp index 03b8058b30..3d76c7cdfa 100644 --- a/src/ScreenSelectMaster.cpp +++ b/src/ScreenSelectMaster.cpp @@ -809,8 +809,7 @@ void ScreenSelectMaster::MenuStart( const InputEventPlus &input ) mc.ApplyToAllPlayers(); // We want to be able to broadcast a Start message to the theme, in // case a themer wants to handle something. -aj - // TODO: Find a way to differentiate this from the message below, for - // less ambiguousness? + // TODO: Add a param to differentiate this from the message below. MESSAGEMAN->Broadcast( (MessageID)(Message_MenuStartP1+pn) ); return; } From 30b04b3180ea52be58bc2f02821aa8fb0436b4c3 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 3 Apr 2011 16:01:45 -0500 Subject: [PATCH 144/241] refer to ScreenOptionsToggleSongs for ScreenOptionsExportPackage restructuring --- src/ScreenOptionsExportPackage.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ScreenOptionsExportPackage.cpp b/src/ScreenOptionsExportPackage.cpp index 6bbdf66f2d..eda77e4ac9 100644 --- a/src/ScreenOptionsExportPackage.cpp +++ b/src/ScreenOptionsExportPackage.cpp @@ -25,8 +25,8 @@ void ScreenOptionsExportPackage::Init() void ScreenOptionsExportPackage::BeginScreen() { // Fill m_vsPossibleDirsToExport - // todo: split these out over multiple screens so the scroller - // isn't so overloaded. -freem + // todo: Split these out over multiple screens so the scroller + // isn't so overloaded. (See ScreenOptionsToggleSongs) -freem { // Add themes { From 48bbb4e2526e70e6d64c09febfb35099f1956480 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 17:46:08 -0400 Subject: [PATCH 145/241] [metricClean] Fix Combo metrics. --- Themes/default/metrics.ini | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 1fdca10835..0df3e9d818 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -23,8 +23,6 @@ SongGroupColor9=BoostColor(Color("Orange"),1.25) SongGroupColor10=BoostColor(Color("Orange"),1.25) CourseGroupColor1=color("1,1,1,1") -UnlockColor=color("1,0.5,0,1") -ExtraColor=color("#ff0000") -- red [UnlockManager] @@ -53,6 +51,12 @@ MeterHeight=40 [Combo] ShowComboAt=2 +LabelMaxZoom=0.75*1 + +PulseCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.125*param.Zoom); self:linear(0.05); self:zoom(param.Zoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; +PulseLabelCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.075*param.LabelZoom); self:linear(0.05); self:zoom(param.LabelZoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; +NumberOnCommand=y,240-216-1.5;shadowlength,1;horizalign,right;vertalign,bottom;skewx,-0.125; +LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");horizalign,left;vertalign,bottom [HoldJudgment] HoldJudgmentLetGoCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 @@ -61,18 +65,6 @@ HoldJudgmentHeldCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;l [HelpDisplay] TipShowTime=7 - -NumberMinZoom=0.8 -NumberMaxZoom=1 -NumberMaxZoomAt=100 -LabelMinZoom=0.75*0.75 -LabelMaxZoom=0.75*1 - -PulseCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.125*param.Zoom); self:linear(0.05); self:zoom(param.Zoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; -PulseLabelCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.075*param.LabelZoom); self:linear(0.05); self:zoom(param.LabelZoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; -NumberOnCommand=y,240-216-1.5;shadowlength,1;horizalign,right;vertalign,bottom;skewx,-0.125; -LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");horizalign,left;vertalign,bottom - [Judgment] JudgmentW1Command=finishtweening;shadowlength,0;y,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.8 JudgmentW2Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 From 3d0c2af473482f0de36eae59b79699ef6a813468 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 18:45:51 -0400 Subject: [PATCH 146/241] [metricClean] more removal of duplicates. I may have removed something in a rush: there are more items on the MusicWheel showing. --- Themes/_fallback/metrics.ini | 2 +- Themes/default/metrics.ini | 250 ++++------------------------------- 2 files changed, 28 insertions(+), 224 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 56624e357f..f5638d1633 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -342,6 +342,7 @@ TipShowTime=4 TipSwitchTime=1 # The Command when its made TipOnCommand=shadowlength,0;diffuseblink + [Judgment] # New # JudgmentOnCommand= @@ -633,7 +634,6 @@ DancePointsP2Y=0 DancePointsP2OnCommand=zoom,0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) DancePointsP2OffCommand= - [LifeMeterTime] # The Lifemeter that shows up when you're playing survival. diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 0df3e9d818..cc5f4b82f9 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -153,13 +153,9 @@ NumLivesP2OnCommand=zoomx,-1 # still asking for this even though it's in fallback... -aj Format= # -DancePointsP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) -DancePointsP2OffCommand= -# -PercentP2X=0 -PercentP2Y=0 PercentP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) -PercentP2OffCommand= +# +DancePointsP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) [LifeMeterTime] @@ -174,10 +170,8 @@ TitleGainFocusCommand=stoptweening;zoom,0.6375*1.125;bounceend,0.2;diffuse,Color TitleLoseFocusCommand=diffuse,Color("White");strokecolor,Color("Black");stopeffect; [OptionRowExit] -Fallback="OptionRow" FrameOnCommand=visible,true;diffuse,Color("Red"); FrameX=SCREEN_CENTER_X -TitleOnCommand=visible,false ItemsMinBaseZoom=1 ItemOnCommand=shadowlength,1;zoom,0.8;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75);shadowcolor,BoostColor(Color("Red"),0.35) @@ -220,17 +214,14 @@ Text1OnCommand=stopeffect;stoptweening;shadowlength,0;strokecolor,Color("Outline Text1FormatFunction=function(fSeconds) \ return string.format("%0.1f", fSeconds); \ end -FrameOnCommand= Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"); -#~ Warning10Command=%function(self) \ - #~ MESSAGEMAN:Broadcast("TimerWarning"); \ - #~ cmd(diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"))(self); \ -#~ end; + +[MenuTimerNoSound] + +[MusicList] [MusicWheel] SwitchSeconds=0.08 -RouletteSwitchSeconds=0.05 -RouletteSlowDownSwitches=5 LockedInitialVelocity=7 ; linear wheel example: ; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ @@ -246,21 +237,15 @@ LockedInitialVelocity=7 ; self:z( -100 + WHEEL_3D_RADIUS * math.cos(rotationx_radians) ); \ ; self:rotationx( rotationx_radians * 180/math.pi ); --[[ to degrees end]] \ ; end; -ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*44 ); self:y( offsetFromCenter*46 ); end -NumWheelItems=11 MusicWheelSortOnCommand=fov,90; MusicWheelSortOffCommand=fov,90; MusicWheelItemSortOnCommand=zoomy,0;bounceend,0.15;zoomy,1 MusicWheelItemSortOffCommand=linear,0.175;zoomy,0 HighlightOnCommand=diffuseshift;effecttiming,(1/8),0,(7/8),0;effectcolor2,Color("White");effectcolor1,color("1,1,1,0.5");effectclock,'beatnooffset' -HighlightOffCommand= HighlightSortOnCommand=stoptweening;decelerate,0.125;glow,Color("Stealth");zoom,1 HighlightSortOffCommand=stoptweening;accelerate,0.125;glow,Color("Orange");zoom,1.05 WheelItemOnDelayOffset=0.04 WheelItemOffDelayOffset=0.04 -WheelItemLockedColor=color("0,0,0,0.5") -# -NumSectionColors=1 SectionColor1=Color("Orange") # SongRealExtraColor=Color("Red") @@ -302,11 +287,8 @@ SectionCollapsedX=-38 SectionCollapsedY=-2 SectionCollapsedOnCommand=maxwidth,194;shadowlength,1;shadowcolor,color("0.1,0.1,0.1,0.2") SectionCountX=112 -SectionCountY=0 SectionCountOnCommand=zoom,0.75;strokecolor,Color("Outline") # -RouletteX=0 -RouletteY=0 RouletteOnCommand=maxwidth,400;shadowlength,1;zoom,0.75;rainbowscroll,true;thump,2; # SortX=-132 @@ -321,7 +303,6 @@ GradeP1X=106+16 GradeP1Y=-8 GradeP2X=110+16 GradeP2Y=8 -GradesShowMachine=true [NoteField] ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" @@ -342,15 +323,10 @@ TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) TextOffCommand= [ScoreDisplayLifeTime] -FrameX= -FrameY= FrameOnCommand=visible,false;spin -FrameOffCommand= # -TimeRemainingX= TimeRemainingY=80 TimeRemainingOnCommand=zoom,1;shadowlength,1;settext,"Hi!"; -TimeRemainingOffCommand= # DeltaSecondsOnCommand=y,80;settext,Hi;spin; DeltaSecondsGainLifeCommand=zoom,0.5;settext,"Hi!"; @@ -360,44 +336,20 @@ PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);diffusetopedge,B PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);diffusetopedge,BoostColor(PlayerColor(PLAYER_2),1.5) [ScoreDisplayRave] -MeterP1X= -MeterP1Y= MeterP1OnCommand=draworder,-1 -MeterP1OffCommand= -MeterP2X= -MeterP2Y= MeterP2OnCommand=draworder,-1;zoomx,-1 -MeterP2OffCommand= -LevelP1X= -LevelP1Y= LevelP1OnCommand=draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) );x,-144;skewx,-0.125; -LevelP1OffCommand= -LevelP2X= -LevelP2Y= LevelP2OnCommand=draworder,105;draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) );x,144;skewx,-0.125; -LevelP2OffCommand= [ScoreKeeperRave] [ScreenEvaluation Percent] -# This shouldn't even be named this but whatever man. -PercentP1X=0 -PercentP1Y=0 +# TODO: Come up with a better name? PercentP1OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); -PercentP1OffCommand= -PercentP2X=0 -PercentP2Y=0 PercentP2OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); -PercentP2OffCommand= -PercentRemainderP1X=0 -PercentRemainderP1Y=0 PercentRemainderP1OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); -PercentRemainderP1OffCommand= -PercentRemainderP2X=0 -PercentRemainderP2Y=0 PercentRemainderP2OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); -PercentRemainderP2OffCommand= DancePointsP1X=0 DancePointsP1Y=0 DancePointsP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); @@ -407,10 +359,7 @@ DancePointsP2Y=0 DancePointsP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); DancePointsP2OffCommand= DancePointsDigits=2 -PercentUseRemainder=true ApplyScoreDisplayOptions=true -FormatPercentScore=FormatPercentScore -Format= PercentDecimalPlaces=2 PercentTotalSize=5 @@ -423,16 +372,12 @@ PercentTotalSize=5 [SoundEffectControl_Pitch] [StepsDisplayListRow] -# CapitalizeDifficultyNames=false NumShownItems=5 ItemsSpacingY=24 MoveCommand=decelerate,0.3 # FrameX= -FrameY=0 -FrameOnCommand= -FrameOffCommand= FrameSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(ColorMidTone( CustomDifficultyToColor(param.CustomDifficulty) )); \ @@ -441,17 +386,12 @@ FrameSetCommand=%function(self,param) \ end; \ end; # -ShowTicks=false NumTicks=10 MaxTicks=10 -TicksSetCommand= # ShowMeter=true -ZeroMeterString="0" MeterX=56 -MeterY=0 MeterOnCommand=shadowlength,1;zoom,0.65;textglowmode,'TextGlowMode_Inner'; -MeterOffCommand= MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ @@ -470,7 +410,6 @@ end; ShowDescription=true DescriptionX=GetGamePrefB("AutoSetStyle") and (-64-8+20) or (-64-8) # DescriptionX=GetUserPrefB("UserPrefAutoSetStyle") and (-64-8+20) or (-64-8) -DescriptionY=0 DescriptionOnCommand=shadowlength,1;horizalign,left;zoom,0.65;maxwidth,128+8-20;uppercase,true; DescriptionOffCommand= DescriptionSetCommand=%function(self,param) \ @@ -488,39 +427,15 @@ AutogenX=0 AutogenY=0 #AutogenOnCommand=diffuseshift;effectcolor1,Colors.Alpha( Color("Green") , 0.5 );effectcolor2,ColorLightTone( Color("Green") ); AutogenOnCommand=blend,Blend.Add;diffuseshift;effectcolor1,color("#FFCC00FF");effectcolor2,color("#FFCC0088"); -AutogenSetCommand= # -StepsTypeSetCommand= [StreamDisplay] -; a simple bar life meter: -; PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) local native_width=32; local zoomed_width=12; self:zoomx(zoomed_width/native_width); self:x((itemIndex-(numItems/2))*zoomed_width); end -# PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ - # local fItemWidth = ( 256 / numItems ) \ - # self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ - # self:zoomtowidth(fItemWidth); \ - # self:diffuseramp(); \ - # self:effectperiod(4); \ - # self:effectoffset((itemIndex-1)/numItems * -1); \ - # self:effectcolor2(color("1,1,1,1")); \ - # self:effectcolor1(color("0.5,0.5,0.5,1")); \ - # self:effectclock('beatnooffset'); \ -# end; PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ local fItemWidth = ( 256 / numItems ) \ self:zoomtowidth(fItemWidth); \ end; -# PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ - # local fItemWidth = ( 256 / numItems ) \ - # self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ - # self:zoomtowidth(fItemWidth); \ - # self:diffuseramp(); \ - # self:effecttiming(1,0.01875*itemIndex,1,1-(0.01875*itemIndex)); \ - # self:effectclock('beatnooffset'); \ -# end; TextureCoordScaleX=1 NumPills=1 -AlwaysBounceNormalBar=false [StepsDisplayEvaluation] Fallback="StepsDisplay" @@ -561,7 +476,6 @@ TitleOnCommand=horizalign,left;shadowlength,1; SubtitleOnCommand=horizalign,left;shadowlength,1; ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" -AfterSetCommand=%TextBannerAfterSet [WheelNotifyIcon] @@ -572,10 +486,8 @@ AfterSetCommand=%TextBannerAfterSet [ScreenSystemLayer] CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_1); -CreditsP1OffCommand= # CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_2); -CreditsP2OffCommand= [ScreenConsoleOverlay] @@ -620,8 +532,6 @@ TimerX=SCREEN_RIGHT-36-4 TimerY=SCREEN_TOP+22 TimerOnCommand=draworder,6;visible,PREFSMAN:GetPreference("MenuTimer"); # TimerOnCommand=fov,90;vanishpoint,SCREEN_RIGHT-36-4,SCREEN_TOP+20;draworder,5;visible,PREFSMAN:GetPreference("MenuTimer");rotationy,90;decelerate,0.4;rotationy,0; -TimerOffCommand= -# TimerOffCommand=accelerate,0.4;rotationx,90; StageDisplayNumberOffset=1 @@ -647,7 +557,6 @@ ShowFooter=false [ScreenTextEntry] QuestionOnCommand=diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);wrapwidthpixels,600 AnswerOnCommand=diffuse,Color("Blue");glowshift; -KeysInitCommand=zoom,0.8;shadowlength,0 [ScreenInit] PrepareScreens="ScreenTitleMenu,ScreenTitleJoin" @@ -753,8 +662,8 @@ Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode() ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode() # ShowScroller=false -ShowIcon=true WrapScroller=false +ShowIcon=true UseIconMetrics=true # IconGainFocusCommand=stoptweening;bounceend,0.125;zoom,1; @@ -823,10 +732,6 @@ ScreenOutDelay=3 DefaultChoice="Easy" # ChoiceNames="Normal,Extended" # -PerChoiceIconElement=false -# -ShowScroller=true -WrapScroller=true ScrollerX=SCREEN_CENTER_X ScrollerY=SCREEN_CENTER_Y-60 ScrollerOnCommand=SetFastCatchup,true; @@ -1064,29 +969,6 @@ CDTitleBackCommand=cullmode,'CullMode_Back' CDTitleOnCommand=draworder,106;shadowlength,1;zoom,0.75;diffusealpha,1;zoom,0;bounceend,0.35;zoom,0.75;spin;effectmagnitude,0,180,0; CDTitleOffCommand=bouncebegin,0.15;zoomx,0; # -ScoreFrameP1X= -ScoreFrameP1Y= -ScoreFrameP1OnCommand=visible,false -ScoreFrameP1OffCommand= -ScoreP1X= -ScoreP1Y= -ScoreP1OnCommand=visible,false -ScoreP1OffCommand= -# -ScoreP2X= -ScoreP2Y= -ScoreP2OnCommand=visible,false -ScoreP2OffCommand= -ScoreFrameP2X= -ScoreFrameP2Y= -ScoreFrameP2OnCommand=visible,false -ScoreFrameP2OffCommand= -# -ScoreP1SortChangeCommand=stoptweening; -ScoreP2SortChangeCommand=stoptweening; -ScoreFrameP1SortChangeCommand=stoptweening; -ScoreFrameP2SortChangeCommand=stoptweening; -# ShowStepsDisplayP1=GAMESTATE:IsHumanPlayer(PLAYER_1) StepsDisplayP1X=SCREEN_CENTER_X-160 StepsDisplayP1Y=SCREEN_BOTTOM-60 @@ -1114,13 +996,6 @@ PercentScoreP2OnCommand=player,PLAYER_2;addy,SCREEN_CENTER_Y;decelerate,0.35;add PercentScoreP2OffCommand=bouncebegin,0.15;zoomx,0; [ScreenSelectCourse] -#~ ScreenInitCommand=%function(self) \ - #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_1); \ - #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_2); \ -#~ end; -# -DefaultSort="Nonstop" -# ShowDifficultyList=false ShowCourseContentsList=true ShowNumCourseSongs=true @@ -1136,9 +1011,6 @@ ShowPaneDisplayTextP2=false [CourseCodeDetector] [StepsDisplay] -FrameX=0 -FrameY=0 -FrameOnCommand= FrameLoadCommand=%function(self,param) end; FrameSetCommand=%function(self,param) \ if param.CustomDifficulty then \ @@ -1147,17 +1019,9 @@ FrameSetCommand=%function(self,param) \ end; # ShowTicks=false -NumTicks=10 -MaxTicks=14 -TicksX=0 -TicksY=0 -TicksOnCommand=shadowlength,0; TicksSetCommand=%function(self,param) end; # -ShowMeter=true -ZeroMeterString="?" MeterX=56-32 -MeterY=0 MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \ @@ -1178,7 +1042,6 @@ MeterSetCommand=%function(self,param) \ end; \ end; # -ShowDescription=true DescriptionX=-20-32 DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 # DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 @@ -1195,8 +1058,6 @@ end; # ShowAutogen=false AutogenX=40-32 -AutogenY=0 -AutogenOnCommand= AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end # ShowStepsType=GetGamePrefB("AutoSetStyle") @@ -1206,8 +1067,6 @@ StepsTypeY=7 StepsTypeOnCommand=zoom,0.45 [StepsDisplayGameplay] -Fallback="StepsDisplay" - FrameX=0 FrameY=0 FrameOnCommand= @@ -1274,7 +1133,6 @@ StepsTypeY=7 StepsTypeOnCommand=zoom,0.45 [ScreenStageInformation] -ForceTimer=true TimerOnCommand=visible,false TimerSeconds=3 # @@ -1284,15 +1142,12 @@ WaitForChildrenBeforeTweening=true DisqualifyP1X=SCREEN_CENTER_X-176 DisqualifyP1Y=SCREEN_BOTTOM-98 DisqualifyP1OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_1 -DisqualifyP1OffCommand= DisqualifyP2X=SCREEN_CENTER_X+176 DisqualifyP2Y=SCREEN_BOTTOM-98 DisqualifyP2OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_2 -DisqualifyP2OffCommand= ContainerOnCommand=x,-SCREEN_WIDTH;decelerate,0.35;x,SCREEN_LEFT # PageOnCommand=fadetop,0.125;fadebottom,0.125;cropbottom,0.5;croptop,0.5;decelerate,0.25;croptop,0;cropbottom,0;fadetop,0;fadebottom,0; -CursorOnCommand= LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.25;fadeleft,0.05;faderight,0.05;diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25");effectclock,'beat' LineHighlightChangeCommand=linear,0.1;diffuse,Color("White");diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25") @@ -1307,8 +1162,6 @@ LineHighlightChangeToExitCommand=linear,0.1;diffuse,Color("Red");diffuseshift;ef [ScreenOptionsService] ShowHeader=false -# ScreenOptionsSystemDirection" - NumRowsShown=14 RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(SCREEN_CENTER_Y-170+24*offsetFromCenter) end @@ -1322,26 +1175,19 @@ SeparateExitRowY=SCREEN_BOTTOM-40 [ScreenOptionsServiceExtendedChild] [ScreenMiniMenu] -HeaderX=SCREEN_CENTER_X HeaderY=SCREEN_TOP HeaderOnCommand=draworder,100;visible,false -HeaderOffCommand= LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.3;fadeleft,0.25;faderight,0.25;diffusealpha,0.375 LineHighlightChangeCommand= LineHighlightChangeToExitCommand= [OptionRowMiniMenu] -Fallback="OptionRow" - TitleX=SCREEN_CENTER_X-320+48 TitleOnCommand=horizalign,left;shadowlength,0;uppercase,true;zoom,0.6375;strokecolor,Color("Black"); -#~ TitleGainFocusCommand= -#~ TitleLoseFocusCommand= ColorSelected=color("1,1,1,1") ColorNotSelected=color("0.9,0.9,0.9,1") -ColorDisabled=color("0.5,0.5,0.5,1") ItemOnCommand=zoom,0.6375 ItemsLongRowP1X=SCREEN_CENTER_X-240 @@ -1362,7 +1208,6 @@ ItemsLongRowP2X=SCREEN_CENTER_X ItemsLongRowSharedX=SCREEN_CENTER_X [OptionRowMiniMenuContext] -Fallback="OptionRowMiniMenu" [ScreenMapControllers] @@ -1389,9 +1234,6 @@ LineRollCombo="lua,UserPrefComboOnRolls()" [ScreenOptionsArcade] [ScreenOptionsTheme] -Fallback="ScreenOptionsServiceChild" -NextScreen="ScreenOptionsExtended" -PrevScreen="ScreenOptionsExtended" LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter" LinegNotePos="lua,UserPrefNotePosition()" LinegScore="lua,UserPrefGameplayShowScore()" @@ -1416,25 +1258,6 @@ LineGameplayFooter="lua,UserPrefGameplayFooter()" [ScreenPlayerOptions] LineNames=GetDefaultOptionLines() -#~ LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17" -Line1="lua,SpeedMods()" -#~ Line1="list,Speed" -Line2="list,Accel" -Line3="list,Effect" -Line4="list,Appearance" -Line5="list,Turn" -Line6="list,Insert" -LineR="list,Remove" -Line7="list,Scroll" -Line8="list,NoteSkins" -Line9="list,Holds" -Line10="list,Mines" -Line11="list,Attacks" -Line12="list,PlayerAutoPlay" -Line13="list,Hide" -Line14="list,Persp" -Line15="list,ScoreDisplay" -Line16="list,Steps" Line17="lua,OptionRowProTiming()" Line18="list,Characters" @@ -1442,6 +1265,7 @@ Line18="list,Characters" [ScreenSongOptions] +# 05 # A [ScreenExit] [ScreenAttract] @@ -1450,8 +1274,6 @@ Line18="list,Characters" # 05 # C [ScreenGameplay] -ShowLifeMeterForDisabledPlayers=false -# SongMeterDisplayX=SCREEN_CENTER_X SongMeterDisplayY=SCREEN_TOP+50 SongMeterDisplayOnCommand=draworder,50;zoom,0;y,SCREEN_TOP-24;sleep,1.5;decelerate,0.5;zoom,1;y,SCREEN_TOP+50 @@ -1583,6 +1405,21 @@ PlayerOptionsP2Y=SCREEN_CENTER_Y+24 PlayerOptionsP2OnCommand=draworder,101;vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 PlayerOptionsP2OffCommand= # +LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 +LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 +# This is used if one player is in reverse and the other isn't. +LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; +LyricDisplayDefaultColor=Color("White") +# +ActiveAttackListP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") +ActiveAttackListP1Y= +ActiveAttackListP1OnCommand=visible,false +ActiveAttackListP1OffCommand= +ActiveAttackListP2X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") +ActiveAttackListP2Y= +ActiveAttackListP2OnCommand=visible,false +ActiveAttackListP2OffCommand= +# StepsDisplayP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # StepsDisplayP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") StepsDisplayP1Y=SCREEN_CENTER_Y @@ -1604,42 +1441,15 @@ SongOptionsY=SCREEN_BOTTOM-32 SongOptionsOnCommand=draworder,101;zoom,0.5 SongOptionsOffCommand= # -OniGameOverP1X= -OniGameOverP1Y= -OniGameOverP1OnCommand= -OniGameOverP1OffCommand= -# -OniGameOverP2X= -OniGameOverP2Y= -OniGameOverP2OnCommand= -OniGameOverP2OffCommand= -# SurviveTimeX=SCREEN_CENTER_X SurviveTimeY=SCREEN_CENTER_Y+40 SurviveTimeOnCommand=shadowlength,1;zoomx,0;bounceend,1;zoomx,1 SurviveTimeOffCommand=shadowlength,1;linear,1;zoom,0.75;diffusealpha,0 -# -ActiveAttackListP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") -ActiveAttackListP1Y= -ActiveAttackListP1OnCommand=visible,false -ActiveAttackListP1OffCommand= -ActiveAttackListP2X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") -ActiveAttackListP2Y= -ActiveAttackListP2OnCommand=visible,false -ActiveAttackListP2OffCommand= -# -LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 -LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 -# This is used if one player is in reverse and the other isn't. -LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; -LyricDisplayDefaultColor=Color("White") + [ScreenGameplayShared] [ScreenEvaluation] -Class="ScreenEvaluation" -Fallback="ScreenWithMenuElements" -# StageDisplayNumberOffset=0 # NextScreen=Branches.AfterEvaluation() @@ -1964,8 +1774,6 @@ SongInformationOnCommand=playcommand,"Set";draworder,105 SongInformationOffCommand= [ScreenEvaluationNormal] -Fallback="ScreenEvaluation" -# PlayMusic=false # ShowBannerFrame=false @@ -1977,14 +1785,10 @@ StageDisplayOnCommand=draworder,105;fov,90;vertalign,bottom;vanishpoint,SCREEN_C StageDisplayOffCommand= [ScreenEvaluationSummary] -Fallback="ScreenEvaluation" -# NextScreen=Branch.AfterSummary # PlayMusic=false # -Summary=true -# ShowStageDisplay=false # SmallBanner1X=SCREEN_CENTER_X-72 @@ -2017,6 +1821,8 @@ SmallBanner6Y=SCREEN_TOP+100+24 SmallBanner6OnCommand=zoom,0.5 SmallBanner6OffCommand= +[ScreenNameEntry] + [ScreenProfileSave] [ScreenProfileSaveSummary] @@ -2255,8 +2061,6 @@ ScoreP2OnCommand=visible,false StepsDisplayP1OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 StepsDisplayP2OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 ShowBPMDisplay=false -# -PlayMusic=false [ScreenJukeboxMenu] From a93169daa0e0aa0b76336c428611a5cd9ee0aba7 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 19:37:49 -0400 Subject: [PATCH 147/241] [metricClean] Add other blanks, fix MusicWheel. --- Themes/default/metrics.ini | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index cc5f4b82f9..ea124393db 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -237,6 +237,7 @@ LockedInitialVelocity=7 ; self:z( -100 + WHEEL_3D_RADIUS * math.cos(rotationx_radians) ); \ ; self:rotationx( rotationx_radians * 180/math.pi ); --[[ to degrees end]] \ ; end; +ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*44 ); self:y( offsetFromCenter*46 ); end MusicWheelSortOnCommand=fov,90; MusicWheelSortOffCommand=fov,90; MusicWheelItemSortOnCommand=zoomy,0;bounceend,0.15;zoomy,1 @@ -268,7 +269,10 @@ SortMenuColor=Color("Orange") #~ ChoiceLength="sort,Length" #~ ChoiceCourses="sort,AllCourses;" UseEasyMarkerFlag=true -# + +[CourseWheel] + +[OnlineMusicWheel] [MusicWheelItem] WheelNotifyIconX=-128-16+0.5 From cc0d89fe19ba0ab377a4e54ec8427be27523acc3 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 21:29:46 -0400 Subject: [PATCH 148/241] [metricClean] establish consistent spacing (or try to anyway). --- Themes/_fallback/metrics.ini | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index f5638d1633..d6a2ce0e92 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -64,6 +64,7 @@ OverlayScreens="ScreenSystemLayer,ScreenSyncOverlay,ScreenStatsOverlay,ScreenDeb PercentScoreDecimalPlaces=2 # 02 # + [LightsManager] # Mostly useless since it doesn't work, as well as that barely anyone has # lights to play around with. @@ -128,6 +129,7 @@ AutoLockChallengeSteps=false UnlockNames="" # 03 # + [ArrowEffects] # Complicated stuff you probably shouldn't ever mess with or else you'll # destroy mods completely! @@ -284,6 +286,7 @@ SaveScreenshot1="MenuLeft-MenuRight" SaveScreenshot2="" CancelAllPlayerOptions="Left,Right,Left,Right,Left,Right" BackInEventMode="" + [CodeDetectorOnline] Fallback="CodeDetector" PrevSteps1="MenuUp,MenuUp" @@ -444,6 +447,7 @@ PumpRoutineString="Routine" # Difficulty_Edit-StepsType_Pump_Halfdouble=Edit # Difficulty_Edit-StepsType_Pump_Double=Edit # Course=Progressive + [CustomScoring] # Custom scoring, usually good for custom games. @@ -470,6 +474,7 @@ PointsCheckpointMiss=-5 PointsNone=0 PointsHoldHeld=+5 PointsHoldLetGo=-5 + [DifficultyList] # A list that shows difficulties in a song. CapitalizeDifficultyNames=false @@ -1333,6 +1338,7 @@ ShowTraining=false BlinkPlayersBest=true # 04 # + [Screen] ScreenInitCommand= ScreenOnCommand= @@ -1383,6 +1389,7 @@ HeaderTextOffCommand= LineOnCommand=zoom,0.75 # + [ScreenSystemLayer] Class="ScreenSystemLayer" Fallback="Screen" @@ -1433,6 +1440,7 @@ Fallback="Screen" StatusOnCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+150;shadowlength,2;strokecolor,color("#000000"); AdjustmentsOnCommand=x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y; # + [ScreenStatsOverlay] Class="ScreenStatsOverlay" Fallback="Screen" @@ -1446,6 +1454,7 @@ SkipOnCommand=zoom,0.5 SkipWidth=190 SkipSpacingY=14 # + [ScreenWithMenuElements] Class="ScreenWithMenuElements" Fallback="Screen" @@ -2846,12 +2855,14 @@ Line16="list,Steps" Line17="list,Characters" # + [ScreenPlayerOptionsRestricted] Fallback="ScreenPlayerOptions" NextScreen="ScreenStageInformation" LineNames="1,8,16,17" # funny + [ScreenSongOptions] Fallback="ScreenOptions" Class="ScreenSongOptions" @@ -2886,6 +2897,7 @@ AllowStartToSkip=false PrepareScreen= # 05 # A + [ScreenExit] # Midiman: # Fun fact, if you don't enable this screen, Force Crashing will hang @@ -3298,6 +3310,7 @@ DisqualifiedP2OffCommand= # DetailLineFormat="%3d/%3d" # + [ScreenEvaluationNormal] Fallback="ScreenEvaluation" # @@ -3419,6 +3432,7 @@ Answer3Of3OffCommand= # # stuff for edit mode: # + [ScreenOptionsEdit] Class="ScreenOptionsMaster" Fallback="ScreenOptionsSimpleService" @@ -3547,6 +3561,7 @@ TimerSeconds=-1 HelpText=Screen.String("HelpTextOptionsAndBack") # could use a redo but whatever + [ScreenEdit] Class="ScreenEdit" Fallback="ScreenWithMenuElementsBlank" @@ -3652,6 +3667,7 @@ OutCancelCommand= Fallback="StepsDisplay" # oh, right, minimenus. + [ScreenMiniMenuEditHelp] Fallback="ScreenMiniMenu" ShowFooter=false @@ -3713,6 +3729,7 @@ Fallback="ScreenMiniMenu" Fallback="ScreenMiniMenu" # Export Packages + [ScreenOptionsExportPackage] Class="ScreenOptionsExportPackage" Fallback="ScreenOptionsSimpleService" @@ -3730,6 +3747,7 @@ Fallback="OptionRowService" TitleX=SCREEN_CENTER_X-150 # Manage Courses + [OptionRowCourseOverview] Fallback="OptionRowService" ItemsLongRowSharedX=SCREEN_CENTER_X-100 @@ -3778,6 +3796,7 @@ EditScreen="ScreenOptionsEditCourse" OptionRowNormalMetricsGroup="OptionRowCourseOverview" # visual/interactive syncing + [ScreenGameplaySyncMachine] Class="ScreenGameplaySyncMachine" Fallback="ScreenGameplay" @@ -3807,6 +3826,7 @@ Fallback="Player" ComboOnCommand=visible,false # sm-ssc helper screens + [ScreenHowToInstallSongs] Class="ScreenSplash" Fallback="ScreenSplash" @@ -3817,6 +3837,7 @@ TimerSeconds=-1 ShowHelp=false # stuff for online mode: + [ScreenSMOnlineLogin] Class="ScreenSMOnlineLogin" Fallback="ScreenOptionsServiceChild" @@ -4061,6 +4082,7 @@ UserOnCommand= UserOffCommand= # Arcade + [ScreenLogo] Fallback="ScreenAttract" # From 68083077c793d6defa2259839f1a73fb0308d966 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 21:32:01 -0400 Subject: [PATCH 149/241] [metricClean] Partial revert. Restore the diff order, but don't remove individuals yet. One step at a time I think. --- Themes/default/metrics.ini | 446 +++++++++++++++++++++++++++++++------ 1 file changed, 375 insertions(+), 71 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index ea124393db..91f95a189b 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -4,6 +4,9 @@ FallbackTheme=_fallback [Common] FirstAttractScreen="" +InitialScreen="ScreenInit" + +# AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle") # 02 # [LightsManager] @@ -23,6 +26,8 @@ SongGroupColor9=BoostColor(Color("Orange"),1.25) SongGroupColor10=BoostColor(Color("Orange"),1.25) CourseGroupColor1=color("1,1,1,1") +UnlockColor=color("1,0.5,0,1") +ExtraColor=color("#ff0000") -- red [UnlockManager] @@ -43,14 +48,33 @@ SetNormalCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("White");dif SetChangeCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5); SetRandomCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Blue");diffusetopedge,BoostColor(Color("Blue"),1.5); SetExtraCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.5); +Cycle=true +NoBpmText="000" RandomCycleSpeed=0.2 -- smaller numbers mean the bpm cycles faster +Separator="-" +ShowQMarksInRandomCycle=true + +[CodeDetector] +# For Future Reference: +# @ = Holding +# - = In Conjuction With / Then +# ~ = Released +# + = At The Same Time + +[CodeDetectorOnline] [CombinedLifeMeterTug] +# We dont use it. MeterWidth=512-8 MeterHeight=40 [Combo] ShowComboAt=2 + +NumberMinZoom=0.8 +NumberMaxZoom=1 +NumberMaxZoomAt=100 +LabelMinZoom=0.75*0.75 LabelMaxZoom=0.75*1 PulseCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.125*param.Zoom); self:linear(0.05); self:zoom(param.Zoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; @@ -59,13 +83,33 @@ NumberOnCommand=y,240-216-1.5;shadowlength,1;horizalign,right;vertalign,bottom;s LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");horizalign,left;vertalign,bottom [HoldJudgment] +# !!! # +# HoldJudgmentLetGoCommand=HoldJudgmentLetGo() +# HoldJudgmentHeldCommand=HoldJudgmentHeld() HoldJudgmentLetGoCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 HoldJudgmentHeldCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 +# HoldJudgmentLetGoCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; +# HoldJudgmentHeldCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; +# HoldJudgmentLetGoCommand=function(self) \ + # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ + # return (cmd(visible,false))(self); \ + # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ + # end; \ +# end; +# HoldJudgmentHeldCommand=function(self) \ + # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ + # return (cmd(visible,false)); \ + # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ + # end; \ +# end; [HelpDisplay] TipShowTime=7 [Judgment] +# New # +JudgmentOnCommand= +# !!! # JudgmentW1Command=finishtweening;shadowlength,0;y,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.8 JudgmentW2Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 JudgmentW3Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.2;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0; @@ -119,12 +163,15 @@ PointsHoldHeld=0 PointsHoldLetGo=0 [DifficultyList] -ItemsSpacingY=24 +CapitalizeDifficultyNames=false NumShownItems=8 +ItemsSpacingY=24 [FadingBanner] +BannerOnCommand= BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;accelerate,0.05;glow,Colors.Alpha( Color("White"), 0.45 );decelerate,0.175;diffusealpha,0;glow,Color("Invisible"); BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0 +BannerResetFadeCommand=diffusealpha,1 [Gameplay] @@ -132,6 +179,8 @@ BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0 [GrooveRadar] +[GroupList] + [HighScore] [Inventory] @@ -147,17 +196,23 @@ BatteryP1Y=0 BatteryP2X=0 BatteryP2Y=0 # +NumLivesP1X=-92 +NumLivesP1Y=0 +NumLivesP2X=92 +NumLivesP2Y=0 NumLivesP2OnCommand=zoomx,-1 [LifeMeterBattery Percent] # still asking for this even though it's in fallback... -aj Format= # -PercentP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) -# DancePointsP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) - -[LifeMeterTime] +DancePointsP2OffCommand= +# +PercentP2X=0 +PercentP2Y=0 +PercentP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) +PercentP2OffCommand= [LyricDisplay] @@ -169,9 +224,13 @@ TitleGainFocusCommand=stoptweening;zoom,0.6375*1.125;bounceend,0.2;diffuse,Color # TitleGainFocusCommand=stoptweening;zoom,0.6375*1.25;bounceend,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);strokecolor,Color("Black");zoom,0.6375;thump;effectmagnitude,1,1.05,1;effectclock,'beat' TitleLoseFocusCommand=diffuse,Color("White");strokecolor,Color("Black");stopeffect; +[OptionRowService] + [OptionRowExit] +Fallback="OptionRow" FrameOnCommand=visible,true;diffuse,Color("Red"); FrameX=SCREEN_CENTER_X +TitleOnCommand=visible,false ItemsMinBaseZoom=1 ItemOnCommand=shadowlength,1;zoom,0.8;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75);shadowcolor,BoostColor(Color("Red"),0.35) @@ -208,21 +267,29 @@ RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_1) LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) - [MenuTimer] Text1OnCommand=stopeffect;stoptweening;shadowlength,0;strokecolor,Color("Outline") Text1FormatFunction=function(fSeconds) \ return string.format("%0.1f", fSeconds); \ end +FrameOnCommand= Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"); +#~ Warning10Command=%function(self) \ + #~ MESSAGEMAN:Broadcast("TimerWarning"); \ + #~ cmd(diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"))(self); \ +#~ end; [MenuTimerNoSound] -[MusicList] - [MusicWheel] +FadeSeconds=1 SwitchSeconds=0.08 +RandomPicksLockedSongs=true +RouletteSwitchSeconds=0.05 +RouletteSlowDownSwitches=5 LockedInitialVelocity=7 +ScrollBarHeight=300 +ScrollBarOnCommand=visible,false ; linear wheel example: ; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ ; self:y(offsetFromCenter*38); \ @@ -238,21 +305,29 @@ LockedInitialVelocity=7 ; self:rotationx( rotationx_radians * 180/math.pi ); --[[ to degrees end]] \ ; end; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*44 ); self:y( offsetFromCenter*46 ); end +NumWheelItems=11 MusicWheelSortOnCommand=fov,90; MusicWheelSortOffCommand=fov,90; MusicWheelItemSortOnCommand=zoomy,0;bounceend,0.15;zoomy,1 MusicWheelItemSortOffCommand=linear,0.175;zoomy,0 HighlightOnCommand=diffuseshift;effecttiming,(1/8),0,(7/8),0;effectcolor2,Color("White");effectcolor1,color("1,1,1,0.5");effectclock,'beatnooffset' +HighlightOffCommand= HighlightSortOnCommand=stoptweening;decelerate,0.125;glow,Color("Stealth");zoom,1 HighlightSortOffCommand=stoptweening;accelerate,0.125;glow,Color("Orange");zoom,1.05 WheelItemOnDelayOffset=0.04 WheelItemOffDelayOffset=0.04 +WheelItemLockedColor=color("0,0,0,0.5") +# +NumSectionColors=1 SectionColor1=Color("Orange") # SongRealExtraColor=Color("Red") SortMenuColor=Color("Orange") # - +ShowRoulette=true +ShowRandom=false +ShowPortal=false +MostPlayedSongsToShow=30 #~ ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,Genre,Length" #~ ChoicePreferred="sort,Preferred" #~ ChoiceGroup="sort,Group" @@ -269,6 +344,7 @@ SortMenuColor=Color("Orange") #~ ChoiceLength="sort,Length" #~ ChoiceCourses="sort,AllCourses;" UseEasyMarkerFlag=true +# [CourseWheel] @@ -276,11 +352,15 @@ UseEasyMarkerFlag=true [MusicWheelItem] WheelNotifyIconX=-128-16+0.5 +WheelNotifyIconY=0 WheelNotifyIconOnCommand=shadowlength,2; # SongNameX=-120 +SongNameY=0 +SongNameOnCommand= # CourseX=-120 +CourseY=0 CourseOnCommand=maxwidth,208;horizalign,left # SectionExpandedX=-38 @@ -291,8 +371,11 @@ SectionCollapsedX=-38 SectionCollapsedY=-2 SectionCollapsedOnCommand=maxwidth,194;shadowlength,1;shadowcolor,color("0.1,0.1,0.1,0.2") SectionCountX=112 +SectionCountY=0 SectionCountOnCommand=zoom,0.75;strokecolor,Color("Outline") # +RouletteX=0 +RouletteY=0 RouletteOnCommand=maxwidth,400;shadowlength,1;zoom,0.75;rainbowscroll,true;thump,2; # SortX=-132 @@ -307,12 +390,41 @@ GradeP1X=106+16 GradeP1Y=-8 GradeP2X=110+16 GradeP2Y=8 +GradesShowMachine=true [NoteField] ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" +[PlayerStageStats] + +[Player] +# ReceptorArrowsYStandard=GetTapPosition('Standard') +# ReceptorArrowsYReverse=GetTapPosition('Reverse') +# RollBodyIncrementsCombo=GetUserPrefB("UserPrefComboOnRolls") + +[PlayerOptions] + +[PlayerShared] + +[Profile] + +[RadarValues] + +[RollingNumbers] + +[RollingNumbersEvaluation] + +[RollingNumbersJudgment] + [ScoreDisplayNormal] +FrameX= +FrameY= +FrameOnCommand= +FrameOffCommand= +TextX= +TextY= TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) +TextOffCommand= [ScoreDisplayOni] TextX= @@ -327,12 +439,30 @@ TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) TextOffCommand= [ScoreDisplayLifeTime] +FrameX= +FrameY= FrameOnCommand=visible,false;spin +FrameOffCommand= # +TimeRemainingX= TimeRemainingY=80 TimeRemainingOnCommand=zoom,1;shadowlength,1;settext,"Hi!"; +TimeRemainingOffCommand= # DeltaSecondsOnCommand=y,80;settext,Hi;spin; +DeltaSecondsNoneCommand= +DeltaSecondsHitMineCommand= +DeltaSecondsAvoidMineCommand= +DeltaSecondsCheckpointMissCommand= +DeltaSecondsCheckpointHitCommand= +DeltaSecondsMissCommand= +DeltaSecondsW5Command= +DeltaSecondsW4Command= +DeltaSecondsW3Command= +DeltaSecondsW2Command= +DeltaSecondsW1Command= +DeltaSecondsLetGoCommand= +DeltaSecondsHeldCommand= DeltaSecondsGainLifeCommand=zoom,0.5;settext,"Hi!"; [ScoreDisplayPercentage Percent] @@ -340,20 +470,44 @@ PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);diffusetopedge,B PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);diffusetopedge,BoostColor(PlayerColor(PLAYER_2),1.5) [ScoreDisplayRave] +MeterP1X= +MeterP1Y= MeterP1OnCommand=draworder,-1 +MeterP1OffCommand= +MeterP2X= +MeterP2Y= MeterP2OnCommand=draworder,-1;zoomx,-1 +MeterP2OffCommand= +LevelP1X= +LevelP1Y= LevelP1OnCommand=draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) );x,-144;skewx,-0.125; +LevelP1OffCommand= +LevelP2X= +LevelP2Y= LevelP2OnCommand=draworder,105;draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) );x,144;skewx,-0.125; +LevelP2OffCommand= [ScoreKeeperRave] [ScreenEvaluation Percent] -# TODO: Come up with a better name? +# This shouldn't even be named this but whatever man. +PercentP1X=0 +PercentP1Y=0 PercentP1OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); +PercentP1OffCommand= +PercentP2X=0 +PercentP2Y=0 PercentP2OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); +PercentP2OffCommand= +PercentRemainderP1X=0 +PercentRemainderP1Y=0 PercentRemainderP1OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); +PercentRemainderP1OffCommand= +PercentRemainderP2X=0 +PercentRemainderP2Y=0 PercentRemainderP2OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); +PercentRemainderP2OffCommand= DancePointsP1X=0 DancePointsP1Y=0 DancePointsP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); @@ -363,7 +517,10 @@ DancePointsP2Y=0 DancePointsP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); DancePointsP2OffCommand= DancePointsDigits=2 +PercentUseRemainder=true ApplyScoreDisplayOptions=true +FormatPercentScore=FormatPercentScore +Format= PercentDecimalPlaces=2 PercentTotalSize=5 @@ -376,12 +533,16 @@ PercentTotalSize=5 [SoundEffectControl_Pitch] [StepsDisplayListRow] +# CapitalizeDifficultyNames=false NumShownItems=5 ItemsSpacingY=24 MoveCommand=decelerate,0.3 # FrameX= +FrameY=0 +FrameOnCommand= +FrameOffCommand= FrameSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(ColorMidTone( CustomDifficultyToColor(param.CustomDifficulty) )); \ @@ -390,12 +551,17 @@ FrameSetCommand=%function(self,param) \ end; \ end; # +ShowTicks=false NumTicks=10 MaxTicks=10 +TicksSetCommand= # ShowMeter=true +ZeroMeterString="0" MeterX=56 +MeterY=0 MeterOnCommand=shadowlength,1;zoom,0.65;textglowmode,'TextGlowMode_Inner'; +MeterOffCommand= MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ @@ -414,6 +580,7 @@ end; ShowDescription=true DescriptionX=GetGamePrefB("AutoSetStyle") and (-64-8+20) or (-64-8) # DescriptionX=GetUserPrefB("UserPrefAutoSetStyle") and (-64-8+20) or (-64-8) +DescriptionY=0 DescriptionOnCommand=shadowlength,1;horizalign,left;zoom,0.65;maxwidth,128+8-20;uppercase,true; DescriptionOffCommand= DescriptionSetCommand=%function(self,param) \ @@ -431,18 +598,14 @@ AutogenX=0 AutogenY=0 #AutogenOnCommand=diffuseshift;effectcolor1,Colors.Alpha( Color("Green") , 0.5 );effectcolor2,ColorLightTone( Color("Green") ); AutogenOnCommand=blend,Blend.Add;diffuseshift;effectcolor1,color("#FFCC00FF");effectcolor2,color("#FFCC0088"); +AutogenSetCommand= # - -[StreamDisplay] -PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ - local fItemWidth = ( 256 / numItems ) \ - self:zoomtowidth(fItemWidth); \ -end; -TextureCoordScaleX=1 -NumPills=1 - -[StepsDisplayEvaluation] -Fallback="StepsDisplay" +ShowStepsType=GetGamePrefB("AutoSetStyle") +# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") +StepsTypeX=-64-8 +StepsTypeY=0 +StepsTypeOnCommand= +StepsTypeSetCommand= [SongMeterDisplay] StreamWidth=380 @@ -466,32 +629,65 @@ TipX=0 TipY=0 TipOnCommand= TipOffCommand= - [SongMeterDisplayP1] Fallback="SongMeterDisplay" FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_1);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 - [SongMeterDisplayP2] Fallback="SongMeterDisplay" FrameOnCommand=sleep,2;linear,0.25;diffuse,PlayerColor(PLAYER_2);glow,1,1,1,0.5;decelerate,0.6;glow,1,1,1,0 +[StepsDisplayEvaluation] +Fallback="StepsDisplay" + +[StreamDisplay] +; a simple bar life meter: +; PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) local native_width=32; local zoomed_width=12; self:zoomx(zoomed_width/native_width); self:x((itemIndex-(numItems/2))*zoomed_width); end +# PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ + # local fItemWidth = ( 256 / numItems ) \ + # self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ + # self:zoomtowidth(fItemWidth); \ + # self:diffuseramp(); \ + # self:effectperiod(4); \ + # self:effectoffset((itemIndex-1)/numItems * -1); \ + # self:effectcolor2(color("1,1,1,1")); \ + # self:effectcolor1(color("0.5,0.5,0.5,1")); \ + # self:effectclock('beatnooffset'); \ +# end; +PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ + local fItemWidth = ( 256 / numItems ) \ + self:zoomtowidth(fItemWidth); \ +end; +# PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ + # local fItemWidth = ( 256 / numItems ) \ + # self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ + # self:zoomtowidth(fItemWidth); \ + # self:diffuseramp(); \ + # self:effecttiming(1,0.01875*itemIndex,1,1-(0.01875*itemIndex)); \ + # self:effectclock('beatnooffset'); \ +# end; +TextureCoordScaleX=1 +NumPills=1 +AlwaysBounceNormalBar=false + [TextBanner] TitleOnCommand=horizalign,left;shadowlength,1; SubtitleOnCommand=horizalign,left;shadowlength,1; ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" +AfterSetCommand=%TextBannerAfterSet -[WheelNotifyIcon] +[WheelnotifyIcon] -# 04 # [Screen] [ScreenDebugOverlay] [ScreenSystemLayer] CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_1); +CreditsP1OffCommand= # CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_2); +CreditsP2OffCommand= [ScreenConsoleOverlay] @@ -536,6 +732,8 @@ TimerX=SCREEN_RIGHT-36-4 TimerY=SCREEN_TOP+22 TimerOnCommand=draworder,6;visible,PREFSMAN:GetPreference("MenuTimer"); # TimerOnCommand=fov,90;vanishpoint,SCREEN_RIGHT-36-4,SCREEN_TOP+20;draworder,5;visible,PREFSMAN:GetPreference("MenuTimer");rotationy,90;decelerate,0.4;rotationy,0; +TimerOffCommand= +# TimerOffCommand=accelerate,0.4;rotationx,90; StageDisplayNumberOffset=1 @@ -561,6 +759,7 @@ ShowFooter=false [ScreenTextEntry] QuestionOnCommand=diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);wrapwidthpixels,600 AnswerOnCommand=diffuse,Color("Blue");glowshift; +KeysInitCommand=zoom,0.8;shadowlength,0 [ScreenInit] PrepareScreens="ScreenTitleMenu,ScreenTitleJoin" @@ -632,6 +831,20 @@ DefaultChoice="1" #ChoiceSetup="text,Setup" ChoiceSetup="screen,ScreenQuickSetupOverview;text,Setup" +[ScreenQuickSetupOverview] +IconStartX=SCREEN_CENTER_X-160 +IconStartY=SCREEN_BOTTOM-60 +IconSetX=SCREEN_CENTER_X-160 +IconSetY=SCREEN_BOTTOM-60 +IconBackX=SCREEN_CENTER_X+160 +IconBackY=SCREEN_BOTTOM-60 + +ExplanationX=SCREEN_CENTER_X +ExplanationY=SCREEN_BOTTOM-100 +ExplanationOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_WIDTH/0.75; +ExplanationOffCommand= + + [ScreenProfileLoad] # ShowHeader=true @@ -666,8 +879,8 @@ Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode() ChoiceKB7="name,kb7;style,single;screen,"..Branch.AfterSelectPlayMode() # ShowScroller=false -WrapScroller=false ShowIcon=true +WrapScroller=false UseIconMetrics=true # IconGainFocusCommand=stoptweening;bounceend,0.125;zoom,1; @@ -736,6 +949,10 @@ ScreenOutDelay=3 DefaultChoice="Easy" # ChoiceNames="Normal,Extended" # +PerChoiceIconElement=false +# +ShowScroller=true +WrapScroller=true ScrollerX=SCREEN_CENTER_X ScrollerY=SCREEN_CENTER_Y-60 ScrollerOnCommand=SetFastCatchup,true; @@ -790,19 +1007,6 @@ IconChoiceEndlessY=SCREEN_BOTTOM-88 IconChoiceEndlessOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceEndlessOffCommand=linear,0.1175;zoomx,0 -[ScreenQuickSetupOverview] -IconStartX=SCREEN_CENTER_X-160 -IconStartY=SCREEN_BOTTOM-60 -IconSetX=SCREEN_CENTER_X-160 -IconSetY=SCREEN_BOTTOM-60 -IconBackX=SCREEN_CENTER_X+160 -IconBackY=SCREEN_BOTTOM-60 - -ExplanationX=SCREEN_CENTER_X -ExplanationY=SCREEN_BOTTOM-100 -ExplanationOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_WIDTH/0.75; -ExplanationOffCommand= - [ScreenSelectCharacter] [ScreenGameInformation] @@ -973,6 +1177,29 @@ CDTitleBackCommand=cullmode,'CullMode_Back' CDTitleOnCommand=draworder,106;shadowlength,1;zoom,0.75;diffusealpha,1;zoom,0;bounceend,0.35;zoom,0.75;spin;effectmagnitude,0,180,0; CDTitleOffCommand=bouncebegin,0.15;zoomx,0; # +ScoreFrameP1X= +ScoreFrameP1Y= +ScoreFrameP1OnCommand=visible,false +ScoreFrameP1OffCommand= +ScoreP1X= +ScoreP1Y= +ScoreP1OnCommand=visible,false +ScoreP1OffCommand= +# +ScoreP2X= +ScoreP2Y= +ScoreP2OnCommand=visible,false +ScoreP2OffCommand= +ScoreFrameP2X= +ScoreFrameP2Y= +ScoreFrameP2OnCommand=visible,false +ScoreFrameP2OffCommand= +# +ScoreP1SortChangeCommand=stoptweening; +ScoreP2SortChangeCommand=stoptweening; +ScoreFrameP1SortChangeCommand=stoptweening; +ScoreFrameP2SortChangeCommand=stoptweening; +# ShowStepsDisplayP1=GAMESTATE:IsHumanPlayer(PLAYER_1) StepsDisplayP1X=SCREEN_CENTER_X-160 StepsDisplayP1Y=SCREEN_BOTTOM-60 @@ -1000,6 +1227,13 @@ PercentScoreP2OnCommand=player,PLAYER_2;addy,SCREEN_CENTER_Y;decelerate,0.35;add PercentScoreP2OffCommand=bouncebegin,0.15;zoomx,0; [ScreenSelectCourse] +#~ ScreenInitCommand=%function(self) \ + #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_1); \ + #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_2); \ +#~ end; +# +DefaultSort="Nonstop" +# ShowDifficultyList=false ShowCourseContentsList=true ShowNumCourseSongs=true @@ -1015,6 +1249,9 @@ ShowPaneDisplayTextP2=false [CourseCodeDetector] [StepsDisplay] +FrameX=0 +FrameY=0 +FrameOnCommand= FrameLoadCommand=%function(self,param) end; FrameSetCommand=%function(self,param) \ if param.CustomDifficulty then \ @@ -1023,9 +1260,17 @@ FrameSetCommand=%function(self,param) \ end; # ShowTicks=false +NumTicks=10 +MaxTicks=14 +TicksX=0 +TicksY=0 +TicksOnCommand=shadowlength,0; TicksSetCommand=%function(self,param) end; # +ShowMeter=true +ZeroMeterString="?" MeterX=56-32 +MeterY=0 MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \ @@ -1046,6 +1291,7 @@ MeterSetCommand=%function(self,param) \ end; \ end; # +ShowDescription=true DescriptionX=-20-32 DescriptionY=GetGamePrefB("AutoSetStyle") and -5 or 0 # DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 @@ -1062,6 +1308,8 @@ end; # ShowAutogen=false AutogenX=40-32 +AutogenY=0 +AutogenOnCommand= AutogenSetCommand=%function(self,param) if param.Difficulty then self:diffuse(CustomDifficultyToLightColor(param.Difficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.Difficulty)); end end # ShowStepsType=GetGamePrefB("AutoSetStyle") @@ -1071,6 +1319,8 @@ StepsTypeY=7 StepsTypeOnCommand=zoom,0.45 [StepsDisplayGameplay] +Fallback="StepsDisplay" + FrameX=0 FrameY=0 FrameOnCommand= @@ -1136,22 +1386,19 @@ StepsTypeX=-20 StepsTypeY=7 StepsTypeOnCommand=zoom,0.45 -[ScreenStageInformation] -TimerOnCommand=visible,false -TimerSeconds=3 -# -WaitForChildrenBeforeTweening=true - [ScreenOptions] DisqualifyP1X=SCREEN_CENTER_X-176 DisqualifyP1Y=SCREEN_BOTTOM-98 DisqualifyP1OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_1 +DisqualifyP1OffCommand= DisqualifyP2X=SCREEN_CENTER_X+176 DisqualifyP2Y=SCREEN_BOTTOM-98 DisqualifyP2OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_2 +DisqualifyP2OffCommand= ContainerOnCommand=x,-SCREEN_WIDTH;decelerate,0.35;x,SCREEN_LEFT # PageOnCommand=fadetop,0.125;fadebottom,0.125;cropbottom,0.5;croptop,0.5;decelerate,0.25;croptop,0;cropbottom,0;fadetop,0;fadebottom,0; +CursorOnCommand= LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.25;fadeleft,0.05;faderight,0.05;diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25");effectclock,'beat' LineHighlightChangeCommand=linear,0.1;diffuse,Color("White");diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25") @@ -1166,6 +1413,8 @@ LineHighlightChangeToExitCommand=linear,0.1;diffuse,Color("Red");diffuseshift;ef [ScreenOptionsService] ShowHeader=false +# ScreenOptionsSystemDirection" + NumRowsShown=14 RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(SCREEN_CENTER_Y-170+24*offsetFromCenter) end @@ -1179,19 +1428,26 @@ SeparateExitRowY=SCREEN_BOTTOM-40 [ScreenOptionsServiceExtendedChild] [ScreenMiniMenu] +HeaderX=SCREEN_CENTER_X HeaderY=SCREEN_TOP HeaderOnCommand=draworder,100;visible,false +HeaderOffCommand= LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.3;fadeleft,0.25;faderight,0.25;diffusealpha,0.375 LineHighlightChangeCommand= LineHighlightChangeToExitCommand= [OptionRowMiniMenu] +Fallback="OptionRow" + TitleX=SCREEN_CENTER_X-320+48 TitleOnCommand=horizalign,left;shadowlength,0;uppercase,true;zoom,0.6375;strokecolor,Color("Black"); +#~ TitleGainFocusCommand= +#~ TitleLoseFocusCommand= ColorSelected=color("1,1,1,1") ColorNotSelected=color("0.9,0.9,0.9,1") +ColorDisabled=color("0.5,0.5,0.5,1") ItemOnCommand=zoom,0.6375 ItemsLongRowP1X=SCREEN_CENTER_X-240 @@ -1212,6 +1468,7 @@ ItemsLongRowP2X=SCREEN_CENTER_X ItemsLongRowSharedX=SCREEN_CENTER_X [OptionRowMiniMenuContext] +Fallback="OptionRowMiniMenu" [ScreenMapControllers] @@ -1238,6 +1495,9 @@ LineRollCombo="lua,UserPrefComboOnRolls()" [ScreenOptionsArcade] [ScreenOptionsTheme] +Fallback="ScreenOptionsServiceChild" +NextScreen="ScreenOptionsExtended" +PrevScreen="ScreenOptionsExtended" LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter" LinegNotePos="lua,UserPrefNotePosition()" LinegScore="lua,UserPrefGameplayShowScore()" @@ -1262,22 +1522,41 @@ LineGameplayFooter="lua,UserPrefGameplayFooter()" [ScreenPlayerOptions] LineNames=GetDefaultOptionLines() +#~ LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17" +Line1="lua,SpeedMods()" +#~ Line1="list,Speed" +Line2="list,Accel" +Line3="list,Effect" +Line4="list,Appearance" +Line5="list,Turn" +Line6="list,Insert" +LineR="list,Remove" +Line7="list,Scroll" +Line8="list,NoteSkins" +Line9="list,Holds" +Line10="list,Mines" +Line11="list,Attacks" +Line12="list,PlayerAutoPlay" +Line13="list,Hide" +Line14="list,Persp" +Line15="list,ScoreDisplay" +Line16="list,Steps" Line17="lua,OptionRowProTiming()" Line18="list,Characters" [ScreenPlayerOptionsRestricted] -[ScreenSongOptions] +[ScreenSplash] -# 05 # A [ScreenExit] -[ScreenAttract] +[ScreenAttact] [ScreenRanking] -# 05 # C [ScreenGameplay] +ShowLifeMeterForDisabledPlayers=false +# SongMeterDisplayX=SCREEN_CENTER_X SongMeterDisplayY=SCREEN_TOP+50 SongMeterDisplayOnCommand=draworder,50;zoom,0;y,SCREEN_TOP-24;sleep,1.5;decelerate,0.5;zoom,1;y,SCREEN_TOP+50 @@ -1409,21 +1688,6 @@ PlayerOptionsP2Y=SCREEN_CENTER_Y+24 PlayerOptionsP2OnCommand=draworder,101;vertalign,top;wrapwidthpixels,256*2;zoom,0.5;diffusealpha,0;addy,10;smooth,0.3;diffusealpha,1;addy,-10;sleep,3;smooth,0.5;addy,10;diffusealpha,0 PlayerOptionsP2OffCommand= # -LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 -LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 -# This is used if one player is in reverse and the other isn't. -LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; -LyricDisplayDefaultColor=Color("White") -# -ActiveAttackListP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") -ActiveAttackListP1Y= -ActiveAttackListP1OnCommand=visible,false -ActiveAttackListP1OffCommand= -ActiveAttackListP2X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") -ActiveAttackListP2Y= -ActiveAttackListP2OnCommand=visible,false -ActiveAttackListP2OffCommand= -# StepsDisplayP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") # StepsDisplayP1X=(PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") StepsDisplayP1Y=SCREEN_CENTER_Y @@ -1445,15 +1709,42 @@ SongOptionsY=SCREEN_BOTTOM-32 SongOptionsOnCommand=draworder,101;zoom,0.5 SongOptionsOffCommand= # +OniGameOverP1X= +OniGameOverP1Y= +OniGameOverP1OnCommand= +OniGameOverP1OffCommand= +# +OniGameOverP2X= +OniGameOverP2Y= +OniGameOverP2OnCommand= +OniGameOverP2OffCommand= +# SurviveTimeX=SCREEN_CENTER_X SurviveTimeY=SCREEN_CENTER_Y+40 SurviveTimeOnCommand=shadowlength,1;zoomx,0;bounceend,1;zoomx,1 SurviveTimeOffCommand=shadowlength,1;linear,1;zoom,0.75;diffusealpha,0 - +# +ActiveAttackListP1X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") +ActiveAttackListP1Y= +ActiveAttackListP1OnCommand=visible,false +ActiveAttackListP1OffCommand= +ActiveAttackListP2X=THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX") +ActiveAttackListP2Y= +ActiveAttackListP2OnCommand=visible,false +ActiveAttackListP2OffCommand= +# +LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 +LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 +# This is used if one player is in reverse and the other isn't. +LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; +LyricDisplayDefaultColor=Color("White") [ScreenGameplayShared] [ScreenEvaluation] +Class="ScreenEvaluation" +Fallback="ScreenWithMenuElements" +# StageDisplayNumberOffset=0 # NextScreen=Branches.AfterEvaluation() @@ -1778,6 +2069,8 @@ SongInformationOnCommand=playcommand,"Set";draworder,105 SongInformationOffCommand= [ScreenEvaluationNormal] +Fallback="ScreenEvaluation" +# PlayMusic=false # ShowBannerFrame=false @@ -1789,10 +2082,14 @@ StageDisplayOnCommand=draworder,105;fov,90;vertalign,bottom;vanishpoint,SCREEN_C StageDisplayOffCommand= [ScreenEvaluationSummary] +Fallback="ScreenEvaluation" +# NextScreen=Branch.AfterSummary # PlayMusic=false # +Summary=true +# ShowStageDisplay=false # SmallBanner1X=SCREEN_CENTER_X-72 @@ -1867,6 +2164,8 @@ Fallback="StepsDisplayGameplay" [ScreenMiniMenuStepsInformation] +[ScreenMiniMenuSongInformation] + [ScreenMiniMenuTimingDataInformation] [ScreenMiniMenuBackgroundChange] @@ -1881,14 +2180,12 @@ Fallback="StepsDisplayGameplay" [ScreenMiniMenuCourseOptions] -# Export Packages [ScreenOptionsExportPackage] [ScreenOptionsManage] [OptionRowManage] -# Manage Courses [OptionRowCourseOverview] [ScreenOptionsManageCourses] @@ -1901,7 +2198,6 @@ Fallback="StepsDisplayGameplay" [ScreenOptionsCourseOverview] -# visual/interactive syncing [ScreenGameplaySyncMachine] SongMeterDisplayP1OnCommand=visible,false SongMeterDisplayP2OnCommand=visible,false @@ -1914,7 +2210,6 @@ PlayerOptionsP2OnCommand=visible,false [PlayerSyncMachine] -# sm-ssc helper screens [ScreenHowToInstallSongs] Class="ScreenSelectMaster" Fallback="ScreenSelectMaster" @@ -1944,7 +2239,6 @@ DefaultChoice="WhereToFind" OptionOrderUp="5:4,4:3,3:2,2:1,1:5" OptionOrderDown="1:2,2:3,3:4,4:5,5:1" -# stuff for online mode: [ScreenSMOnlineLogin] [ScreenNetSelectBase] @@ -1983,7 +2277,7 @@ DifficultyDisplayY=SCREEN_CENTER_Y+185 DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1 DifficultyDisplayOffCommand=linear,0.25;zoomy,0; -[ScreenDisplayNet] +[StepsDisplayNet] [ScreenNetRoom] @@ -2011,6 +2305,7 @@ DifficultyDisplayOffCommand=linear,0.25;zoomy,0; UserTier02OrBetterCommand=diffuseshift;effectperiod,0.75;effectcolor1,color("1,0.95,0.8,1");effectcolor2,color("0.8,0.95,1,1") # arcade stuff + [ScreenLogo] TimerSeconds=10 ShowLogo=true @@ -2054,6 +2349,13 @@ ScrollerOnCommand=visible,false; ArcadeOverlay.TextY=SCREEN_BOTTOM-128 +[ScreenStageInformation] +ForceTimer=true +TimerOnCommand=visible,false +TimerSeconds=3 +# +WaitForChildrenBeforeTweening=true + [ScreenDemonstration] SongMeterDisplayOnCommand=visible,false SongMeterDisplayP1OnCommand=visible,false @@ -2065,6 +2367,8 @@ ScoreP2OnCommand=visible,false StepsDisplayP1OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 StepsDisplayP2OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 ShowBPMDisplay=false +# +PlayMusic=false [ScreenJukeboxMenu] From 108ca53691e2007c40a980104b499aa8562c3679 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 21:46:37 -0400 Subject: [PATCH 150/241] [metricClean] cleanup and diff matching. So far, nothing obvious is broken here. --- Themes/default/metrics.ini | 62 ++++---------------------------------- 1 file changed, 6 insertions(+), 56 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 91f95a189b..c24020d661 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -4,9 +4,6 @@ FallbackTheme=_fallback [Common] FirstAttractScreen="" -InitialScreen="ScreenInit" - -# AutoSetStyle=GetUserPrefB("UserPrefAutoSetStyle") # 02 # [LightsManager] @@ -26,8 +23,6 @@ SongGroupColor9=BoostColor(Color("Orange"),1.25) SongGroupColor10=BoostColor(Color("Orange"),1.25) CourseGroupColor1=color("1,1,1,1") -UnlockColor=color("1,0.5,0,1") -ExtraColor=color("#ff0000") -- red [UnlockManager] @@ -48,11 +43,7 @@ SetNormalCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("White");dif SetChangeCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5); SetRandomCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Blue");diffusetopedge,BoostColor(Color("Blue"),1.5); SetExtraCommand=stoptweening;maxwidth,128;linear,0.2;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.5); -Cycle=true -NoBpmText="000" RandomCycleSpeed=0.2 -- smaller numbers mean the bpm cycles faster -Separator="-" -ShowQMarksInRandomCycle=true [CodeDetector] # For Future Reference: @@ -64,17 +55,13 @@ ShowQMarksInRandomCycle=true [CodeDetectorOnline] [CombinedLifeMeterTug] -# We dont use it. +# We don't use it. MeterWidth=512-8 MeterHeight=40 [Combo] ShowComboAt=2 -NumberMinZoom=0.8 -NumberMaxZoom=1 -NumberMaxZoomAt=100 -LabelMinZoom=0.75*0.75 LabelMaxZoom=0.75*1 PulseCommand=%function(self,param) self:finishtweening(); self:diffusealpha(1); self:zoom(1.125*param.Zoom); self:linear(0.05); self:zoom(param.Zoom); self:sleep(2); self:linear(0.5); self:diffusealpha(0); end; @@ -83,33 +70,13 @@ NumberOnCommand=y,240-216-1.5;shadowlength,1;horizalign,right;vertalign,bottom;s LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");horizalign,left;vertalign,bottom [HoldJudgment] -# !!! # -# HoldJudgmentLetGoCommand=HoldJudgmentLetGo() -# HoldJudgmentHeldCommand=HoldJudgmentHeld() HoldJudgmentLetGoCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 HoldJudgmentHeldCommand=finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 -# HoldJudgmentLetGoCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; -# HoldJudgmentHeldCommand=GAMESTATE:GetCurrentGame():GetName() == "pump" and "visible,false" or "finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0"; -# HoldJudgmentLetGoCommand=function(self) \ - # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ - # return (cmd(visible,false))(self); \ - # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1;y,-10;linear,0.8;y,10;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ - # end; \ -# end; -# HoldJudgmentHeldCommand=function(self) \ - # if GAMESTATE:GetCurrentGame():GetName() == "pump" then \ - # return (cmd(visible,false)); \ - # else return (cmd(finishtweening;shadowlength,0;diffusealpha,1;zoom,1.25;linear,0.3;zoomx,1;zoomy,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0))(self); \ - # end; \ -# end; [HelpDisplay] TipShowTime=7 [Judgment] -# New # -JudgmentOnCommand= -# !!! # JudgmentW1Command=finishtweening;shadowlength,0;y,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.8;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0;glowblink;effectperiod,0.05;effectcolor1,1,1,1,0;effectcolor2,1,1,1,0.8 JudgmentW2Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.3;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0 JudgmentW3Command=finishtweening;y,0;shadowlength,0;diffusealpha,1;zoom,1.2;linear,0.05;zoom,1;sleep,0.5;linear,0.1;zoomy,0.5;zoomx,2;diffusealpha,0; @@ -163,15 +130,11 @@ PointsHoldHeld=0 PointsHoldLetGo=0 [DifficultyList] -CapitalizeDifficultyNames=false -NumShownItems=8 ItemsSpacingY=24 +NumShownItems=8 [FadingBanner] -BannerOnCommand= BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;accelerate,0.05;glow,Colors.Alpha( Color("White"), 0.45 );decelerate,0.175;diffusealpha,0;glow,Color("Invisible"); -BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.25;diffusealpha,0 -BannerResetFadeCommand=diffusealpha,1 [Gameplay] @@ -196,23 +159,16 @@ BatteryP1Y=0 BatteryP2X=0 BatteryP2Y=0 # -NumLivesP1X=-92 -NumLivesP1Y=0 -NumLivesP2X=92 -NumLivesP2Y=0 NumLivesP2OnCommand=zoomx,-1 [LifeMeterBattery Percent] # still asking for this even though it's in fallback... -aj Format= # -DancePointsP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) -DancePointsP2OffCommand= -# -PercentP2X=0 -PercentP2Y=0 PercentP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) -PercentP2OffCommand= +DancePointsP2OnCommand=zoom,0.7;zoomx,-0.7;shadowlength,0;diffuse,PlayerColor(PLAYER_2) + +[LifeMeterTime] [LyricDisplay] @@ -227,10 +183,8 @@ TitleLoseFocusCommand=diffuse,Color("White");strokecolor,Color("Black");stopeffe [OptionRowService] [OptionRowExit] -Fallback="OptionRow" FrameOnCommand=visible,true;diffuse,Color("Red"); FrameX=SCREEN_CENTER_X -TitleOnCommand=visible,false ItemsMinBaseZoom=1 ItemOnCommand=shadowlength,1;zoom,0.8;diffuse,Color("Red");diffusebottomedge,BoostColor(Color("Red"),0.75);shadowcolor,BoostColor(Color("Red"),0.35) @@ -272,12 +226,8 @@ Text1OnCommand=stopeffect;stoptweening;shadowlength,0;strokecolor,Color("Outline Text1FormatFunction=function(fSeconds) \ return string.format("%0.1f", fSeconds); \ end -FrameOnCommand= + Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"); -#~ Warning10Command=%function(self) \ - #~ MESSAGEMAN:Broadcast("TimerWarning"); \ - #~ cmd(diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"))(self); \ -#~ end; [MenuTimerNoSound] From 4caccb906a5e06bde83c0a8628f3787fb73214bd Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 22:38:51 -0400 Subject: [PATCH 151/241] [metricClean] More diff progress. --- Themes/_fallback/metrics.ini | 12 ++++---- Themes/default/metrics.ini | 56 ++++++++++-------------------------- 2 files changed, 21 insertions(+), 47 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index d6a2ce0e92..524bda0550 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -849,19 +849,19 @@ PortalColor=color("1,0,0,1") SortOrders={ "SortOrder_Preferred", "SortOrder_Group", "SortOrder_Title", "SortOrder_BPM", "SortOrder_Artist", "SortOrder_Genre" } # SortOrders={ "SortOrder_Preferred", "SortOrder_Group", "SortOrder_Title", "SortOrder_BPM", "SortOrder_Popularity", "SortOrder_Artist", "SortOrder_Genre" } -# + ShowRoulette=true ShowRandom=false ShowPortal=false -# + SortBPMDivision=20 SortLengthDivision=5 -# + MostPlayedSongsToShow=30 RecentSongsToShow=30 -# + UseEasyMarkerFlag=false -# + ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent" # ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent,NormalMode,BattleMode" ChoicePreferred="sort,Preferred" @@ -884,7 +884,7 @@ ChoiceLength="sort,Length" ChoiceRecent="sort,Recent" ChoiceNormalMode="playmode,regular" ChoiceBattleMode="playmode,battle" -# + CustomWheelItemNames="" [CourseWheel] diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index c24020d661..5e02892de7 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -232,14 +232,9 @@ Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcol [MenuTimerNoSound] [MusicWheel] -FadeSeconds=1 SwitchSeconds=0.08 -RandomPicksLockedSongs=true -RouletteSwitchSeconds=0.05 -RouletteSlowDownSwitches=5 LockedInitialVelocity=7 -ScrollBarHeight=300 -ScrollBarOnCommand=visible,false + ; linear wheel example: ; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ ; self:y(offsetFromCenter*38); \ @@ -255,46 +250,25 @@ ScrollBarOnCommand=visible,false ; self:rotationx( rotationx_radians * 180/math.pi ); --[[ to degrees end]] \ ; end; ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*44 ); self:y( offsetFromCenter*46 ); end -NumWheelItems=11 MusicWheelSortOnCommand=fov,90; MusicWheelSortOffCommand=fov,90; MusicWheelItemSortOnCommand=zoomy,0;bounceend,0.15;zoomy,1 MusicWheelItemSortOffCommand=linear,0.175;zoomy,0 HighlightOnCommand=diffuseshift;effecttiming,(1/8),0,(7/8),0;effectcolor2,Color("White");effectcolor1,color("1,1,1,0.5");effectclock,'beatnooffset' -HighlightOffCommand= HighlightSortOnCommand=stoptweening;decelerate,0.125;glow,Color("Stealth");zoom,1 HighlightSortOffCommand=stoptweening;accelerate,0.125;glow,Color("Orange");zoom,1.05 WheelItemOnDelayOffset=0.04 WheelItemOffDelayOffset=0.04 -WheelItemLockedColor=color("0,0,0,0.5") -# -NumSectionColors=1 + SectionColor1=Color("Orange") # SongRealExtraColor=Color("Red") SortMenuColor=Color("Orange") + # -ShowRoulette=true -ShowRandom=false -ShowPortal=false -MostPlayedSongsToShow=30 -#~ ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,Genre,Length" -#~ ChoicePreferred="sort,Preferred" -#~ ChoiceGroup="sort,Group" -#~ ChoiceTitle="sort,Title" -#~ ChoiceBpm="sort,BPM" -#~ ChoicePopularity="sort,Popularity" -#~ ChoiceTopGrades="sort,TopGrades" -#~ ChoiceArtist="sort,Artist" -#~ ChoiceGenre="sort,Genre" -#~ ChoiceEasyMeter="sort,EasyMeter" -#~ ChoiceMediumMeter="sort,MediumMeter" -#~ ChoiceHardMeter="sort,HardMeter" -#~ ChoiceChallengeMeter="sort,ChallengeMeter" -#~ ChoiceLength="sort,Length" -#~ ChoiceCourses="sort,AllCourses;" + UseEasyMarkerFlag=true -# + [CourseWheel] @@ -1500,10 +1474,12 @@ Line18="list,Characters" [ScreenExit] -[ScreenAttact] +[ScreenAttract] [ScreenRanking] +# 05 # B +# 05 # C [ScreenGameplay] ShowLifeMeterForDisabledPlayers=false # @@ -2194,6 +2170,11 @@ OptionOrderDown="1:2,2:3,3:4,4:5,5:1" [ScreenNetSelectBase] [ScreenNetSelectMusic] +BPMDisplayX=SCREEN_CENTER_X-160-90+2 +BPMDisplayY=SCREEN_CENTER_Y+156 +BPMDisplayOnCommand=finishtweening;horizalign,left;strokecolor,Color("Outline");maxwidth,128;addx,320;zoomx,0;decelerate,0.35;addx,-320;zoomx,1 +BPMDisplayOffCommand=bouncebegin,0.15;zoomx,0; + StepsDisplayP1X=SCREEN_CENTER_X-240 StepsDisplayP1Y=SCREEN_CENTER_Y+185 StepsDisplayP1OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 @@ -2204,10 +2185,7 @@ StepsDisplayP2Y=SCREEN_CENTER_Y+185 StepsDisplayP2OnCommand=horizalign,right;zoomx,0.0;zoomy,0.0;linear,0.5;zoomy,1.0;zoomx,1.0 StepsDisplayP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0 #====# -BPMDisplayX=SCREEN_CENTER_X-160-90+2 -BPMDisplayY=SCREEN_CENTER_Y+156 -BPMDisplayOnCommand=finishtweening;horizalign,left;strokecolor,Color("Outline");maxwidth,128;addx,320;zoomx,0;decelerate,0.35;addx,-320;zoomx,1 -BPMDisplayOffCommand=bouncebegin,0.15;zoomx,0; + #--# ShowBPMLabel=true BPMLabelX=SCREEN_CENTER_X-160-90 @@ -2254,7 +2232,7 @@ DifficultyDisplayOffCommand=linear,0.25;zoomy,0; [ScreenNetEvaluation] UserTier02OrBetterCommand=diffuseshift;effectperiod,0.75;effectcolor1,color("1,0.95,0.8,1");effectcolor2,color("0.8,0.95,1,1") -# arcade stuff +# Arcade [ScreenLogo] TimerSeconds=10 @@ -2294,9 +2272,7 @@ LogoOffCommand=stopeffect;bouncebegin,0.35;rotationz,360;zoom,0 VersionInfoX=SCREEN_CENTER_X+114 VersionInfoY=SCREEN_CENTER_Y+44 VersionInfoOnCommand=settext,ProductVersion();horizalign,right;vertalign,bottom;bob;effectperiod,4;effectmagnitude,0,5.25,0;zoom,0;bounceend,0.35;zoom,0.65;shadowlength,1;shadowcolor,color("0.2,0.2,0.2,0.925"); - ScrollerOnCommand=visible,false; - ArcadeOverlay.TextY=SCREEN_BOTTOM-128 [ScreenStageInformation] @@ -2317,8 +2293,6 @@ ScoreP2OnCommand=visible,false StepsDisplayP1OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 StepsDisplayP2OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 ShowBPMDisplay=false -# -PlayMusic=false [ScreenJukeboxMenu] From 3c9bf6c54dd8e46684e70bae98aeba0b0762a820 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 23:19:37 -0400 Subject: [PATCH 152/241] [metricClean] More cleaning. --- Themes/default/metrics.ini | 157 ++----------------------------------- 1 file changed, 5 insertions(+), 152 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 5e02892de7..ecfbe23c26 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -276,15 +276,11 @@ UseEasyMarkerFlag=true [MusicWheelItem] WheelNotifyIconX=-128-16+0.5 -WheelNotifyIconY=0 WheelNotifyIconOnCommand=shadowlength,2; # SongNameX=-120 -SongNameY=0 -SongNameOnCommand= # CourseX=-120 -CourseY=0 CourseOnCommand=maxwidth,208;horizalign,left # SectionExpandedX=-38 @@ -295,11 +291,8 @@ SectionCollapsedX=-38 SectionCollapsedY=-2 SectionCollapsedOnCommand=maxwidth,194;shadowlength,1;shadowcolor,color("0.1,0.1,0.1,0.2") SectionCountX=112 -SectionCountY=0 SectionCountOnCommand=zoom,0.75;strokecolor,Color("Outline") # -RouletteX=0 -RouletteY=0 RouletteOnCommand=maxwidth,400;shadowlength,1;zoom,0.75;rainbowscroll,true;thump,2; # SortX=-132 @@ -314,7 +307,6 @@ GradeP1X=106+16 GradeP1Y=-8 GradeP2X=110+16 GradeP2Y=8 -GradesShowMachine=true [NoteField] ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" @@ -322,9 +314,6 @@ ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" [PlayerStageStats] [Player] -# ReceptorArrowsYStandard=GetTapPosition('Standard') -# ReceptorArrowsYReverse=GetTapPosition('Reverse') -# RollBodyIncrementsCombo=GetUserPrefB("UserPrefComboOnRolls") [PlayerOptions] @@ -341,14 +330,7 @@ ShowBoard=GAMESTATE:GetCurrentGame():GetName() == "kb7" [RollingNumbersJudgment] [ScoreDisplayNormal] -FrameX= -FrameY= -FrameOnCommand= -FrameOffCommand= -TextX= -TextY= TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) -TextOffCommand= [ScoreDisplayOni] TextX= @@ -363,30 +345,12 @@ TextOnCommand=shadowlength,1;diffusebottomedge,BoostColor(Color('White'),0.75) TextOffCommand= [ScoreDisplayLifeTime] -FrameX= -FrameY= FrameOnCommand=visible,false;spin -FrameOffCommand= # -TimeRemainingX= TimeRemainingY=80 TimeRemainingOnCommand=zoom,1;shadowlength,1;settext,"Hi!"; -TimeRemainingOffCommand= # DeltaSecondsOnCommand=y,80;settext,Hi;spin; -DeltaSecondsNoneCommand= -DeltaSecondsHitMineCommand= -DeltaSecondsAvoidMineCommand= -DeltaSecondsCheckpointMissCommand= -DeltaSecondsCheckpointHitCommand= -DeltaSecondsMissCommand= -DeltaSecondsW5Command= -DeltaSecondsW4Command= -DeltaSecondsW3Command= -DeltaSecondsW2Command= -DeltaSecondsW1Command= -DeltaSecondsLetGoCommand= -DeltaSecondsHeldCommand= DeltaSecondsGainLifeCommand=zoom,0.5;settext,"Hi!"; [ScoreDisplayPercentage Percent] @@ -394,44 +358,19 @@ PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);diffusetopedge,B PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);diffusetopedge,BoostColor(PlayerColor(PLAYER_2),1.5) [ScoreDisplayRave] -MeterP1X= -MeterP1Y= MeterP1OnCommand=draworder,-1 -MeterP1OffCommand= -MeterP2X= -MeterP2Y= MeterP2OnCommand=draworder,-1;zoomx,-1 -MeterP2OffCommand= - -LevelP1X= -LevelP1Y= LevelP1OnCommand=draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_1) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) );x,-144;skewx,-0.125; -LevelP1OffCommand= -LevelP2X= -LevelP2Y= LevelP2OnCommand=draworder,105;draworder,105;zoom,0.75;diffuse,ColorLightTone( PlayerColor(PLAYER_2) );strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) );x,144;skewx,-0.125; -LevelP2OffCommand= [ScoreKeeperRave] [ScreenEvaluation Percent] -# This shouldn't even be named this but whatever man. -PercentP1X=0 -PercentP1Y=0 +# TODO: Better name? PercentP1OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); -PercentP1OffCommand= -PercentP2X=0 -PercentP2Y=0 PercentP2OnCommand=horizalign,right;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); -PercentP2OffCommand= -PercentRemainderP1X=0 -PercentRemainderP1Y=0 PercentRemainderP1OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); -PercentRemainderP1OffCommand= -PercentRemainderP2X=0 -PercentRemainderP2Y=0 PercentRemainderP2OnCommand=horizalign,left;shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); -PercentRemainderP2OffCommand= DancePointsP1X=0 DancePointsP1Y=0 DancePointsP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone( PlayerColor(PLAYER_1) ); @@ -441,10 +380,7 @@ DancePointsP2Y=0 DancePointsP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone( PlayerColor(PLAYER_2) ); DancePointsP2OffCommand= DancePointsDigits=2 -PercentUseRemainder=true ApplyScoreDisplayOptions=true -FormatPercentScore=FormatPercentScore -Format= PercentDecimalPlaces=2 PercentTotalSize=5 @@ -457,7 +393,7 @@ PercentTotalSize=5 [SoundEffectControl_Pitch] [StepsDisplayListRow] -# +# TODO: Make this use DifficultyList? CapitalizeDifficultyNames=false NumShownItems=5 ItemsSpacingY=24 @@ -475,17 +411,12 @@ FrameSetCommand=%function(self,param) \ end; \ end; # -ShowTicks=false NumTicks=10 MaxTicks=10 -TicksSetCommand= # ShowMeter=true -ZeroMeterString="0" MeterX=56 -MeterY=0 MeterOnCommand=shadowlength,1;zoom,0.65;textglowmode,'TextGlowMode_Inner'; -MeterOffCommand= MeterSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ @@ -504,9 +435,7 @@ end; ShowDescription=true DescriptionX=GetGamePrefB("AutoSetStyle") and (-64-8+20) or (-64-8) # DescriptionX=GetUserPrefB("UserPrefAutoSetStyle") and (-64-8+20) or (-64-8) -DescriptionY=0 DescriptionOnCommand=shadowlength,1;horizalign,left;zoom,0.65;maxwidth,128+8-20;uppercase,true; -DescriptionOffCommand= DescriptionSetCommand=%function(self,param) \ if self:GetText() == "" then \ self:settext("Edit"); \ @@ -522,10 +451,8 @@ AutogenX=0 AutogenY=0 #AutogenOnCommand=diffuseshift;effectcolor1,Colors.Alpha( Color("Green") , 0.5 );effectcolor2,ColorLightTone( Color("Green") ); AutogenOnCommand=blend,Blend.Add;diffuseshift;effectcolor1,color("#FFCC00FF");effectcolor2,color("#FFCC0088"); -AutogenSetCommand= # ShowStepsType=GetGamePrefB("AutoSetStyle") -# ShowStepsType=GetUserPrefB("UserPrefAutoSetStyle") StepsTypeX=-64-8 StepsTypeY=0 StepsTypeOnCommand= @@ -591,16 +518,15 @@ end; # end; TextureCoordScaleX=1 NumPills=1 -AlwaysBounceNormalBar=false + [TextBanner] TitleOnCommand=horizalign,left;shadowlength,1; SubtitleOnCommand=horizalign,left;shadowlength,1; ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" -AfterSetCommand=%TextBannerAfterSet -[WheelnotifyIcon] +[WheelNotifyIcon] [Screen] @@ -608,10 +534,8 @@ AfterSetCommand=%TextBannerAfterSet [ScreenSystemLayer] CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_1); -CreditsP1OffCommand= # CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffusebottomedge,PlayerColor(PLAYER_2); -CreditsP2OffCommand= [ScreenConsoleOverlay] @@ -683,7 +607,7 @@ ShowFooter=false [ScreenTextEntry] QuestionOnCommand=diffuse,Color("Orange");diffusetopedge,BoostColor(Color("Orange"),1.5);wrapwidthpixels,600 AnswerOnCommand=diffuse,Color("Blue");glowshift; -KeysInitCommand=zoom,0.8;shadowlength,0 + [ScreenInit] PrepareScreens="ScreenTitleMenu,ScreenTitleJoin" @@ -694,7 +618,6 @@ PersistScreens="ScreenInit,ScreenTitleJoin,ScreenTitleMenu" ShowHeader=false ShowFooter=false # -ShowScroller=true WrapScroller=false ScrollerTransform=function(self,offset,itemIndex,numItems) self:y((28)*(itemIndex-(numItems-1)/2)); end; ScrollerSecondsPerItem=0 @@ -786,17 +709,6 @@ FOV=90 PerChoiceScrollElement=false PerChoiceIconElement=false # -DefaultChoice="Single" -ChoiceNames=GameCompatibleModes() -# -OptionOrderAuto="1:2,2:1" -ChoiceSingle="name,Single;style,single;screen,"..Branch.AfterSelectPlayMode() -ChoiceDouble="name,Double;style,double;screen,"..Branch.AfterSelectPlayMode() -ChoiceSolo="name,Solo;style,solo;screen,"..Branch.AfterSelectPlayMode() -ChoiceVersus="name,Versus;style,versus;screen,"..Branch.AfterSelectPlayMode() -ChoiceCouple="name,Couple;style,couple;screen,"..Branch.AfterSelectPlayMode() -ChoiceHalfDouble="name,HalfDouble;style,halfdouble;screen,"..Branch.AfterSelectPlayMode() -Choice5Keys="name,5Keys;style,single5;;screen,"..Branch.AfterSelectPlayMode() Choice7Keys="name,7Keys;style,single7;screen,"..Branch.AfterSelectPlayMode() Choice10Keys="name,10Keys;style,double10;screen,"..Branch.AfterSelectPlayMode() Choice14Keys="name,14Keys;style,double14;screen,"..Branch.AfterSelectPlayMode() @@ -1101,23 +1013,7 @@ CDTitleBackCommand=cullmode,'CullMode_Back' CDTitleOnCommand=draworder,106;shadowlength,1;zoom,0.75;diffusealpha,1;zoom,0;bounceend,0.35;zoom,0.75;spin;effectmagnitude,0,180,0; CDTitleOffCommand=bouncebegin,0.15;zoomx,0; # -ScoreFrameP1X= -ScoreFrameP1Y= -ScoreFrameP1OnCommand=visible,false -ScoreFrameP1OffCommand= -ScoreP1X= -ScoreP1Y= -ScoreP1OnCommand=visible,false -ScoreP1OffCommand= # -ScoreP2X= -ScoreP2Y= -ScoreP2OnCommand=visible,false -ScoreP2OffCommand= -ScoreFrameP2X= -ScoreFrameP2Y= -ScoreFrameP2OnCommand=visible,false -ScoreFrameP2OffCommand= # ScoreP1SortChangeCommand=stoptweening; ScoreP2SortChangeCommand=stoptweening; @@ -1151,12 +1047,6 @@ PercentScoreP2OnCommand=player,PLAYER_2;addy,SCREEN_CENTER_Y;decelerate,0.35;add PercentScoreP2OffCommand=bouncebegin,0.15;zoomx,0; [ScreenSelectCourse] -#~ ScreenInitCommand=%function(self) \ - #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_1); \ - #~ GAMESTATE:ApplyGameCommand("sort,AllCourses",PLAYER_2); \ -#~ end; -# -DefaultSort="Nonstop" # ShowDifficultyList=false ShowCourseContentsList=true @@ -1173,26 +1063,13 @@ ShowPaneDisplayTextP2=false [CourseCodeDetector] [StepsDisplay] -FrameX=0 -FrameY=0 -FrameOnCommand= FrameLoadCommand=%function(self,param) end; -FrameSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - end; \ -end; -# -ShowTicks=false NumTicks=10 MaxTicks=14 TicksX=0 TicksY=0 TicksOnCommand=shadowlength,0; TicksSetCommand=%function(self,param) end; -# -ShowMeter=true -ZeroMeterString="?" MeterX=56-32 MeterY=0 MeterOnCommand=shadowlength,1;textglowmode,'TextGlowMode_Inner' @@ -1245,23 +1122,6 @@ StepsTypeOnCommand=zoom,0.45 [StepsDisplayGameplay] Fallback="StepsDisplay" -FrameX=0 -FrameY=0 -FrameOnCommand= -FrameLoadCommand=%function(self,param) end; -FrameSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - end; \ -end; -# -ShowTicks=false -NumTicks=10 -MaxTicks=14 -TicksX=0 -TicksY=0 -TicksOnCommand=shadowlength,0; -TicksSetCommand=%function(self,param) end; # ShowMeter=true ZeroMeterString="?" @@ -2275,13 +2135,6 @@ VersionInfoOnCommand=settext,ProductVersion();horizalign,right;vertalign,bottom; ScrollerOnCommand=visible,false; ArcadeOverlay.TextY=SCREEN_BOTTOM-128 -[ScreenStageInformation] -ForceTimer=true -TimerOnCommand=visible,false -TimerSeconds=3 -# -WaitForChildrenBeforeTweening=true - [ScreenDemonstration] SongMeterDisplayOnCommand=visible,false SongMeterDisplayP1OnCommand=visible,false From eca1754dbf0310961631b6221e40b11ef4b23d7b Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 23:43:22 -0400 Subject: [PATCH 153/241] [metricClean] Make DiffMerge happy. Anyone know of a diff tool that will let me specify points to diff instead of relying on automatic tools? --- Themes/default/metrics.ini | 74 +++++++++++++++----------------------- 1 file changed, 28 insertions(+), 46 deletions(-) diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index ecfbe23c26..ddba187e95 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -398,11 +398,9 @@ CapitalizeDifficultyNames=false NumShownItems=5 ItemsSpacingY=24 MoveCommand=decelerate,0.3 -# + FrameX= -FrameY=0 -FrameOnCommand= -FrameOffCommand= + FrameSetCommand=%function(self,param) \ if param.CustomDifficulty then \ self:diffuse(ColorMidTone( CustomDifficultyToColor(param.CustomDifficulty) )); \ @@ -519,7 +517,6 @@ end; TextureCoordScaleX=1 NumPills=1 - [TextBanner] TitleOnCommand=horizalign,left;shadowlength,1; SubtitleOnCommand=horizalign,left;shadowlength,1; @@ -1174,14 +1171,11 @@ StepsTypeOnCommand=zoom,0.45 DisqualifyP1X=SCREEN_CENTER_X-176 DisqualifyP1Y=SCREEN_BOTTOM-98 DisqualifyP1OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_1 -DisqualifyP1OffCommand= DisqualifyP2X=SCREEN_CENTER_X+176 DisqualifyP2Y=SCREEN_BOTTOM-98 DisqualifyP2OnCommand=draworder,100;zoom,0.5;shadowlength,1;player,PLAYER_2 -DisqualifyP2OffCommand= ContainerOnCommand=x,-SCREEN_WIDTH;decelerate,0.35;x,SCREEN_LEFT -# PageOnCommand=fadetop,0.125;fadebottom,0.125;cropbottom,0.5;croptop,0.5;decelerate,0.25;croptop,0;cropbottom,0;fadetop,0;fadebottom,0; CursorOnCommand= LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.25;fadeleft,0.05;faderight,0.05;diffuseshift;effectcolor2,color("1,1,1,0.5");effectcolor1,color("1,1,1,0.25");effectclock,'beat' @@ -1212,31 +1206,23 @@ SeparateExitRowY=SCREEN_BOTTOM-40 [ScreenOptionsServiceExtendedChild] [ScreenMiniMenu] -HeaderX=SCREEN_CENTER_X HeaderY=SCREEN_TOP HeaderOnCommand=draworder,100;visible,false -HeaderOffCommand= - LineHighlightOnCommand=cropleft,0.1;cropright,0.1;zoomx,1.3;fadeleft,0.25;faderight,0.25;diffusealpha,0.375 LineHighlightChangeCommand= LineHighlightChangeToExitCommand= [OptionRowMiniMenu] Fallback="OptionRow" - TitleX=SCREEN_CENTER_X-320+48 TitleOnCommand=horizalign,left;shadowlength,0;uppercase,true;zoom,0.6375;strokecolor,Color("Black"); -#~ TitleGainFocusCommand= -#~ TitleLoseFocusCommand= - -ColorSelected=color("1,1,1,1") -ColorNotSelected=color("0.9,0.9,0.9,1") -ColorDisabled=color("0.5,0.5,0.5,1") - -ItemOnCommand=zoom,0.6375 ItemsLongRowP1X=SCREEN_CENTER_X-240 ItemsLongRowP2X=SCREEN_CENTER_X+240 ItemsLongRowSharedX=SCREEN_CENTER_X+200 +ItemOnCommand=zoom,0.6375 + +ColorSelected=color("1,1,1,1") +ColorNotSelected=color("0.9,0.9,0.9,1") [ScreenMiniMenuContext] PageOnCommand=visible,false @@ -1252,7 +1238,6 @@ ItemsLongRowP2X=SCREEN_CENTER_X ItemsLongRowSharedX=SCREEN_CENTER_X [OptionRowMiniMenuContext] -Fallback="OptionRowMiniMenu" [ScreenMapControllers] @@ -1306,25 +1291,6 @@ LineGameplayFooter="lua,UserPrefGameplayFooter()" [ScreenPlayerOptions] LineNames=GetDefaultOptionLines() -#~ LineNames="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17" -Line1="lua,SpeedMods()" -#~ Line1="list,Speed" -Line2="list,Accel" -Line3="list,Effect" -Line4="list,Appearance" -Line5="list,Turn" -Line6="list,Insert" -LineR="list,Remove" -Line7="list,Scroll" -Line8="list,NoteSkins" -Line9="list,Holds" -Line10="list,Mines" -Line11="list,Attacks" -Line12="list,PlayerAutoPlay" -Line13="list,Hide" -Line14="list,Persp" -Line15="list,ScoreDisplay" -Line16="list,Steps" Line17="lua,OptionRowProTiming()" Line18="list,Characters" @@ -1336,12 +1302,26 @@ Line18="list,Characters" [ScreenAttract] +# +# +# +# + [ScreenRanking] +# + +# + +# + +# + +# + # 05 # B # 05 # C [ScreenGameplay] -ShowLifeMeterForDisabledPlayers=false # SongMeterDisplayX=SCREEN_CENTER_X SongMeterDisplayY=SCREEN_TOP+50 @@ -1495,6 +1475,12 @@ SongOptionsY=SCREEN_BOTTOM-32 SongOptionsOnCommand=draworder,101;zoom,0.5 SongOptionsOffCommand= # +LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 +LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 +# This is used if one player is in reverse and the other isn't. +LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; +LyricDisplayDefaultColor=Color("White") +# OniGameOverP1X= OniGameOverP1Y= OniGameOverP1OnCommand= @@ -1519,11 +1505,7 @@ ActiveAttackListP2Y= ActiveAttackListP2OnCommand=visible,false ActiveAttackListP2OffCommand= # -LyricDisplaySetNoReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+160 -LyricDisplaySetReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-140 -# This is used if one player is in reverse and the other isn't. -LyricDisplaySetOneReverseCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160; -LyricDisplayDefaultColor=Color("White") + [ScreenGameplayShared] From 883080470802ec6fbd2e4784ba13c0632324f83a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 23:53:07 -0400 Subject: [PATCH 154/241] [metricClean] Space this out too. --- Themes/default/Languages/en.ini | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index 125ed3b51f..cb15bb4c97 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -1,7 +1,9 @@ [Screen] HelpText=&BACK; Exit &START; Select &SELECT; Options &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Move + [ScreenWithMenuElements] HelpText=&BACK; Exit &START; Select &MENULEFT;&MENURIGHT; Move + [ScreenTitleMenu] HelpText=&BACK; Exit &START; Select &MENUUP;&MENUDOWN; Move Network OK=Network OK @@ -10,6 +12,7 @@ Connected to %s=Connected to %s CurrentGametype=Current Gametype: %s LifeDifficulty=Life Difficulty: %s TimingDifficulty=Timing Difficulty: %s + [ScreenTitleJoin] HelpText=Press &START; to Play HelpTextJoin=Press &START; to Play @@ -19,16 +22,22 @@ JointPremiumMain=Joint Premium JointPremiumSecondary=Two players can play with one credit! DoublesPremiumMain=Doubles Premium DoublesPremiumSecondary=Play doubles for one credit! + [ScreenDemonstration] Demonstration=Demonstration + [ScreenQuickSetupOverview] Explanation=Quick Setup provides a easy way to set commonly-changed and useful preferences. + [ScreenProfileLoad] HelpText=... Loading profiles, please wait ... + [ScreenSelectProfile] HelpText=&MENUUP;&MENUDOWN; Switch Profile &START; Choose/Join &BACK; Unselect + [ScreenSelectMaster] HelpText=&BACK; Exit &START; Select / Join &MENULEFT;&MENURIGHT; Move + [ScreenSelectPlayMode] HelpText=&BACK; Exit &START; Select / Join &MENULEFT;&MENURIGHT; Move EasyExplanation=A mode for beginners. @@ -39,25 +48,34 @@ RaveExplanation=Battle against friend or foe. ExtendedExplanation=Several Songs in a row OniExplanation=A true test of skill. EndlessExplanation=It don't stop, it keep rollin'. + [ScreenSelectPlayStyle] HelpText=&BACK; Exit &START; Select &MENULEFT;&MENURIGHT; Move + [ScreenGameInformation] HelpText=&BACK; Exit &START; Skip + [ScreenSelectMusic] HelpText=&BACK; Exit &START; Select / Join &SELECT; Magic Codes &MENULEFT;&MENURIGHT; Move::&AUXWHITE;+[KEY] Sort To [KEY] AlternateHelpText=&SELECT;+&MENULEFT;&MENURIGHT; Change Difficulties &SELECT;+&START; Quick Sort + [ScreenSelectCourse] HelpText=&BACK; Exit &START; Select / Join &SELECT; Magic Codes &MENULEFT;&MENURIGHT; Move::&UP;&DOWN;&UP;&DOWN; for other course types + [ScreenOptions] HelpText=&BACK; Exit &START; Choose &SELECT; Go Up &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Move + [ScreenStageInformation] HelpText= + [ScreenGameplay] HelpText= + [ScreenEvaluation] HelpText=&BACK; Exit &START; Move On &MENULEFT;+&MENURIGHT; or &SELECT; Snapshot LifeDifficulty=Life Difficulty: %s TimingDifficulty=Timing Difficulty: %s + [OptionTitles] GamePrefAutoSetStyle=Auto Set Style UserPrefSpecialScoringMode=Special Scoring Mode @@ -71,6 +89,7 @@ UserPrefShowLotsaOptions=Options Density UserPrefLongFail=Fail Length UserPrefFlashyCombo=Flashy Combo UserPrefGameplayFooter=Gameplay Footer + [OptionExplanations] GamePrefAutoSetStyle=Allow the game to list all one player and two player modes at once instead of one style only. This might require a restart of StepMania\n( or alternatively hit F2! ) GamePrefNotePosition=Determines where the arrow receptors are placed in gameplay. @@ -107,6 +126,7 @@ Steps=Adjust the difficulty of the steps. Characters=Dancing buddies. SaveToProfileHelp=Requires profile or memory card. MusicRateHelp=Play the music at a faster rate. + [StepsListDisplayRow StepsType] Dance_Single=4 Dance_Double=8 @@ -160,4 +180,4 @@ Explanation-Exit=Return to the title menu. Custom=Special [ScreenTestInput] -HelpText=Hold &BACK; or &START; to exit. \ No newline at end of file +HelpText=Hold &BACK; or &START; to exit. From 6b0de06a050023479af3d4355c8ee3c17d8c720d Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 23:55:35 -0400 Subject: [PATCH 155/241] [metricClean] Update file to address resolved bug. Guess I'll have to merge this branch in soon. --- Themes/default/Languages/en.ini | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index cb15bb4c97..0c6b61d7c8 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -79,9 +79,9 @@ TimingDifficulty=Timing Difficulty: %s [OptionTitles] GamePrefAutoSetStyle=Auto Set Style UserPrefSpecialScoringMode=Special Scoring Mode -GamePrefNotePosition=Note Positions -GamePrefComboOnRolls=Rolls Increment Combo -GamePrefComboUnderField=Combo Under Field +UserPrefNotePosition=Note Positions +UserPrefComboOnRolls=Rolls Increment Combo +UserPrefComboUnderField=Combo Under Field UserPrefGameplayShowScore=Show Score UserPrefGameplayShowStepsDisplay=Show Steps @@ -92,9 +92,9 @@ UserPrefGameplayFooter=Gameplay Footer [OptionExplanations] GamePrefAutoSetStyle=Allow the game to list all one player and two player modes at once instead of one style only. This might require a restart of StepMania\n( or alternatively hit F2! ) -GamePrefNotePosition=Determines where the arrow receptors are placed in gameplay. -GamePrefComboOnRolls=Choose if rolls should increment the combo or not. -GamePrefComboUnderField=Determine if the combo should display under the notes or not. +UserPrefNotePosition=Determines where the arrow receptors are placed in gameplay. +UserPrefComboOnRolls=Choose if rolls should increment the combo or not. +UserPrefComboUnderField=Determine if the combo should display under the notes or not. UserPrefGameplayShowScore=Show or Hide the score display in gameplay. UserPrefSpecialScoringMode=Select the scoring mode to be used if the Special scoring type is selected. From 3740c328ba04cd5da843a71a4507fd04a251e6f5 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 3 Apr 2011 23:57:53 -0400 Subject: [PATCH 156/241] [metricClean] Guess no more GamePrefs. --- Themes/default/Languages/en.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index 0c6b61d7c8..1afd38fa53 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -77,7 +77,7 @@ LifeDifficulty=Life Difficulty: %s TimingDifficulty=Timing Difficulty: %s [OptionTitles] -GamePrefAutoSetStyle=Auto Set Style +UserPrefAutoSetStyle=Auto Set Style UserPrefSpecialScoringMode=Special Scoring Mode UserPrefNotePosition=Note Positions UserPrefComboOnRolls=Rolls Increment Combo @@ -91,7 +91,7 @@ UserPrefFlashyCombo=Flashy Combo UserPrefGameplayFooter=Gameplay Footer [OptionExplanations] -GamePrefAutoSetStyle=Allow the game to list all one player and two player modes at once instead of one style only. This might require a restart of StepMania\n( or alternatively hit F2! ) +UserPrefAutoSetStyle=Allow the game to list all one player and two player modes at once instead of one style only. This might require a restart of StepMania\n( or alternatively hit F2! ) UserPrefNotePosition=Determines where the arrow receptors are placed in gameplay. UserPrefComboOnRolls=Choose if rolls should increment the combo or not. UserPrefComboUnderField=Determine if the combo should display under the notes or not. From dae8bc3cecac47fca51ea05481ec82646147ae2e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 4 Apr 2011 00:58:18 -0400 Subject: [PATCH 157/241] Part of OpenITG's profile bugfix. Needs some lua hooks on our end though apparently. --- src/Profile.h | 13 ++++++++----- src/ProfileManager.cpp | 11 +++++++++++ src/ProfileManager.h | 2 ++ src/ScreenNameEntryTraditional.cpp | 3 ++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/Profile.h b/src/Profile.h index b95fd8d3a7..1115192911 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -85,11 +85,12 @@ public: m_iNumExtraStagesPassed(0), m_iNumExtraStagesFailed(0), m_iNumToasties(0), m_iTotalTapsAndHolds(0), m_iTotalJumps(0), m_iTotalHolds(0), m_iTotalRolls(0), m_iTotalMines(0), - m_iTotalHands(0), m_iTotalLifts(0), m_UnlockedEntryIDs(), - m_sLastPlayedMachineGuid(""), m_LastPlayedDate(), - m_iNumSongsPlayedByStyle(), m_iNumTotalSongsPlayed(0), - m_UserData(), m_SongHighScores(), m_CourseHighScores(), - m_vScreenshots(), m_mapDayToCaloriesBurned() + m_iTotalHands(0), m_iTotalLifts(0), m_bNewProfile(false), + m_UnlockedEntryIDs(), m_sLastPlayedMachineGuid(""), + m_LastPlayedDate(),m_iNumSongsPlayedByStyle(), + m_iNumTotalSongsPlayed(0), m_UserData(), m_SongHighScores(), + m_CourseHighScores(), m_vScreenshots(), + m_mapDayToCaloriesBurned() { m_lastSong.Unset(); m_lastCourse.Unset(); @@ -182,6 +183,8 @@ public: int m_iTotalMines; int m_iTotalHands; int m_iTotalLifts; + /** @brief Is this a brand new profile? */ + bool m_bNewProfile; set m_UnlockedEntryIDs; /** * @brief Which machine did we play on last, based on the Guid? diff --git a/src/ProfileManager.cpp b/src/ProfileManager.cpp index aa103b4e6b..bd84550431 100644 --- a/src/ProfileManager.cpp +++ b/src/ProfileManager.cpp @@ -97,6 +97,7 @@ void ProfileManager::Init() m_bLastLoadWasTamperedOrCorrupt[p] = false; m_bLastLoadWasFromLastGood[p] = false; m_bNeedToBackUpLastLoad[p] = false; + m_bNewProfile[p] = false; } LoadMachineProfile(); @@ -222,6 +223,7 @@ bool ProfileManager::LoadProfileFromMemoryCard( PlayerNumber pn, bool bLoadEdits vector asDirsToTry; GetMemoryCardProfileDirectoriesToTry( asDirsToTry ); + m_bNewProfile[pn] = true; for( unsigned i = 0; i < asDirsToTry.size(); ++i ) { @@ -239,6 +241,7 @@ bool ProfileManager::LoadProfileFromMemoryCard( PlayerNumber pn, bool bLoadEdits ProfileLoadResult res = LoadProfile( pn, sDir, true ); if( res == ProfileLoadResult_Success ) { + m_bNewProfile[pn] = false; /* If importing, store the directory we imported from, for display purposes. */ if( i > 0 ) m_sProfileDirImportedFrom[pn] = asDirsToTry[i]; @@ -246,7 +249,10 @@ bool ProfileManager::LoadProfileFromMemoryCard( PlayerNumber pn, bool bLoadEdits } if( res == ProfileLoadResult_FailedTampered ) + { + m_bNewProfile[pn] = false; break; + } } /* If we imported a profile fallback directory, change the memory card @@ -544,6 +550,11 @@ bool ProfileManager::ProfileWasLoadedFromMemoryCard( PlayerNumber pn ) const return !m_sProfileDir[pn].empty() && m_bWasLoadedFromMemoryCard[pn]; } +bool ProfileManager::ProfileFromMemoryCardIsNew( PlayerNumber pn ) const +{ + return GetProfile(pn) && m_bWasLoadedFromMemoryCard[pn] && m_bNewProfile[pn]; +} + bool ProfileManager::LastLoadWasTamperedOrCorrupt( PlayerNumber pn ) const { return !m_sProfileDir[pn].empty() && m_bLastLoadWasTamperedOrCorrupt[pn]; diff --git a/src/ProfileManager.h b/src/ProfileManager.h index e083d13636..6cb5632388 100644 --- a/src/ProfileManager.h +++ b/src/ProfileManager.h @@ -77,6 +77,7 @@ public: RString GetPlayerName( PlayerNumber pn ) const; bool ProfileWasLoadedFromMemoryCard( PlayerNumber pn ) const; + bool ProfileFromMemoryCardIsNew( PlayerNumber pn ) const; bool LastLoadWasTamperedOrCorrupt( PlayerNumber pn ) const; bool LastLoadWasFromLastGood( PlayerNumber pn ) const; @@ -117,6 +118,7 @@ private: bool m_bLastLoadWasTamperedOrCorrupt[NUM_PLAYERS]; // true if Stats.xml was present, but failed to load (probably because of a signature failure) bool m_bLastLoadWasFromLastGood[NUM_PLAYERS]; // if true, then m_bLastLoadWasTamperedOrCorrupt is also true mutable bool m_bNeedToBackUpLastLoad[NUM_PLAYERS]; // if true, back up profile on next save + bool m_bNewProfile[NUM_PLAYERS]; Profile *m_pMemoryCardProfile[NUM_PLAYERS]; // holds Profile for the currently inserted card Profile *m_pMachineProfile; diff --git a/src/ScreenNameEntryTraditional.cpp b/src/ScreenNameEntryTraditional.cpp index 6c0c229e3f..3663641412 100644 --- a/src/ScreenNameEntryTraditional.cpp +++ b/src/ScreenNameEntryTraditional.cpp @@ -81,7 +81,8 @@ void ScreenNameEntryTraditional::BeginScreen() GAMESTATE->GetRankingFeats( pn, aFeats ); bool bNoStagesLeft = GAMESTATE->m_iPlayerStageTokens[pn] <= 0; - m_bEnteringName[pn] = aFeats.size() > 0 && bNoStagesLeft; + m_bEnteringName[pn] = ( aFeats.size() > 0 || + PROFILEMAN->ProfileFromMemoryCardIsNew(pn) ) && bNoStagesLeft; m_bFinalized[pn] = !m_bEnteringName[pn]; } From 16f46584a34f4449ef33dce8f2fde82990ddeb66 Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Mon, 4 Apr 2011 13:14:45 -0700 Subject: [PATCH 158/241] 3D Midi-note by Jousway. StreamHead fix, CourseFormat --- Docs/CourseFormat.txt | 83 ++ .../Down Hold Body Active (doubleres).png | Bin 0 -> 3195 bytes .../Down Hold Body Inactive (doubleres).png | Bin 0 -> 3255 bytes ...Down Hold BottomCap Active (doubleres).png | Bin 0 -> 4606 bytes ...wn Hold BottomCap Inactive (doubleres).png | Bin 0 -> 4563 bytes .../midi-note-3d/Down Hold Explosion.redir | 1 + .../midi-note-3d/Down Hold Head Active.png | Bin 0 -> 1949 bytes .../midi-note-3d/Down Hold Head Inactive.lua | 4 + .../dance/midi-note-3d/Down Receptor.lua | 26 + .../Down Roll Body Active (doubleres).png | Bin 0 -> 3245 bytes .../Down Roll Body Inactive (doubleres).png | Bin 0 -> 3246 bytes ...Down Roll BottomCap Active (doubleres).png | Bin 0 -> 4649 bytes ...wn Roll BottomCap Inactive (doubleres).png | Bin 0 -> 4330 bytes .../midi-note-3d/Down Roll BottomCap.png | Bin 0 -> 1267 bytes .../midi-note-3d/Down Roll Explosion.redir | 1 + .../midi-note-3d/Down Roll Head Active.png | Bin 0 -> 2091 bytes .../midi-note-3d/Down Roll Head Inactive.lua | 4 + .../Down Tap Explosion Bright.png | Bin 0 -> 4513 bytes .../midi-note-3d/Down Tap Explosion Dim.redir | 1 + .../Down Tap Fake (doubleres).png | Bin 0 -> 7841 bytes .../dance/midi-note-3d/Down Tap Lift.png | Bin 0 -> 2068 bytes .../dance/midi-note-3d/Down Tap Mine.lua | 9 + .../dance/midi-note-3d/Down Tap Note.lua | 7 + .../Left Hold BottomCap Active.png | Bin 0 -> 1216 bytes .../Left Hold BottomCap Inactive.lua | 4 + .../Left Roll BottomCap Active.png | Bin 0 -> 1480 bytes .../Left Roll BottomCap Inactive.lua | 4 + NoteSkins/dance/midi-note-3d/NoteSkin.lua | 128 +++ .../midi-note-3d/Up Hold BottomCap Active.png | Bin 0 -> 979 bytes .../Up Hold BottomCap Inactive.lua | 4 + .../midi-note-3d/Up Roll BottomCap Active.png | Bin 0 -> 1121 bytes .../Up Roll BottomCap Inactive.lua | 4 + .../dance/midi-note-3d/_Down Tap Flash.png | Bin 0 -> 3304 bytes .../dance/midi-note-3d/_Down Tap Mine.png | Bin 0 -> 2156 bytes .../_Down Tap Receptor (doubleres).png | Bin 0 -> 5781 bytes .../midi-note-3d/_down Tap Note materials.txt | 28 + .../dance/midi-note-3d/_down tap bones.txt | 1 + .../midi-note-3d/_down tap note meshes.txt | 949 +++++++++++++++++ NoteSkins/dance/midi-note-3d/metrics.ini | 85 ++ NoteSkins/dance/midi-note-3d/res/Resource.psd | Bin 0 -> 2133837 bytes .../res/down hold tail active.psd | Bin 0 -> 62317 bytes .../res/down hold tail inactive.psd | Bin 0 -> 68090 bytes .../res/down roll tail active.psd | Bin 0 -> 68860 bytes .../res/down roll tail inactive.psd | Bin 0 -> 68388 bytes .../midi-note-3d/res/hold body active.psd | Bin 0 -> 73614 bytes .../midi-note-3d/res/hold body inactive.psd | Bin 0 -> 91652 bytes .../midi-note-3d/res/roll body active.psd | Bin 0 -> 91758 bytes .../midi-note-3d/res/roll body inactive.psd | Bin 0 -> 95516 bytes NoteSkins/dance/midi-note-3d/tex/black.png | Bin 0 -> 2791 bytes NoteSkins/dance/midi-note-3d/tex/color in.jpg | Bin 0 -> 151703 bytes NoteSkins/dance/midi-note-3d/tex/color.ini | 17 + NoteSkins/dance/midi-note-3d/tex/color1.png | Bin 0 -> 77856 bytes NoteSkins/dance/midi-note-3d/tex/color2.png | Bin 0 -> 110377 bytes NoteSkins/dance/midi-note-3d/tex/color3.png | Bin 0 -> 122823 bytes NoteSkins/dance/midi-note-3d/tex/color4.png | Bin 0 -> 160604 bytes NoteSkins/dance/midi-note-3d/tex/color5.png | Bin 0 -> 24043 bytes NoteSkins/dance/midi-note-3d/tex/color6.png | Bin 0 -> 27001 bytes NoteSkins/dance/midi-note-3d/tex/color7.png | Bin 0 -> 30480 bytes NoteSkins/dance/midi-note-3d/tex/color8.png | Bin 0 -> 46952 bytes .../dance/midi-note-3d/tex/res/color in.psd | Bin 0 -> 316420 bytes .../dance/midi-note-3d/tex/res/color1.psd | Bin 0 -> 208680 bytes .../dance/midi-note-3d/tex/res/color2.psd | Bin 0 -> 250156 bytes .../dance/midi-note-3d/tex/res/color3.psd | Bin 0 -> 321798 bytes .../dance/midi-note-3d/tex/res/color4.psd | Bin 0 -> 360044 bytes .../midi-note-3d/tex/res/midi-note-3d.txt | 984 ++++++++++++++++++ .../midi-note-3d/tex/res/midinote3d.ms3d | Bin 0 -> 38931 bytes .../midi-note-3d/tex/res/midinote3d1.ms3d | Bin 0 -> 22358 bytes .../midi-note-3d/tex/res/midinote3d2.ms3d | Bin 0 -> 24998 bytes .../midi-note-3d/tex/res/midinote3d3.ms3d | Bin 0 -> 27710 bytes NoteSkins/dance/midi-note/NoteSkin.lua | 4 +- 70 files changed, 2346 insertions(+), 2 deletions(-) create mode 100644 Docs/CourseFormat.txt create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold Body Active (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold Body Inactive (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold BottomCap Active (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold BottomCap Inactive (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold Explosion.redir create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold Head Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Down Hold Head Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/Down Receptor.lua create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll Body Active (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll Body Inactive (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll BottomCap Active (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll BottomCap Inactive (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll BottomCap.png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll Explosion.redir create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll Head Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Down Roll Head Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Explosion Bright.png create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Explosion Dim.redir create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Fake (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Lift.png create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Mine.lua create mode 100644 NoteSkins/dance/midi-note-3d/Down Tap Note.lua create mode 100644 NoteSkins/dance/midi-note-3d/Left Hold BottomCap Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Left Hold BottomCap Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/Left Roll BottomCap Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Left Roll BottomCap Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/NoteSkin.lua create mode 100644 NoteSkins/dance/midi-note-3d/Up Hold BottomCap Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Up Hold BottomCap Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/Up Roll BottomCap Active.png create mode 100644 NoteSkins/dance/midi-note-3d/Up Roll BottomCap Inactive.lua create mode 100644 NoteSkins/dance/midi-note-3d/_Down Tap Flash.png create mode 100644 NoteSkins/dance/midi-note-3d/_Down Tap Mine.png create mode 100644 NoteSkins/dance/midi-note-3d/_Down Tap Receptor (doubleres).png create mode 100644 NoteSkins/dance/midi-note-3d/_down Tap Note materials.txt create mode 100644 NoteSkins/dance/midi-note-3d/_down tap bones.txt create mode 100644 NoteSkins/dance/midi-note-3d/_down tap note meshes.txt create mode 100644 NoteSkins/dance/midi-note-3d/metrics.ini create mode 100644 NoteSkins/dance/midi-note-3d/res/Resource.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/down hold tail active.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/down hold tail inactive.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/down roll tail active.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/down roll tail inactive.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/hold body active.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/hold body inactive.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/roll body active.psd create mode 100644 NoteSkins/dance/midi-note-3d/res/roll body inactive.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/black.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color in.jpg create mode 100644 NoteSkins/dance/midi-note-3d/tex/color.ini create mode 100644 NoteSkins/dance/midi-note-3d/tex/color1.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color2.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color3.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color4.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color5.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color6.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color7.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/color8.png create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/color in.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/color1.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/color2.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/color3.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/color4.psd create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/midi-note-3d.txt create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/midinote3d.ms3d create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/midinote3d1.ms3d create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/midinote3d2.ms3d create mode 100644 NoteSkins/dance/midi-note-3d/tex/res/midinote3d3.ms3d diff --git a/Docs/CourseFormat.txt b/Docs/CourseFormat.txt new file mode 100644 index 0000000000..68a5cbc80b --- /dev/null +++ b/Docs/CourseFormat.txt @@ -0,0 +1,83 @@ +Complete Course Template + +[[ Header Content ]] +-- Header Content is comprimised with any course-defining data such as the +-- title, banner and other parameters. +#COURSE:My Course!; +-- The title of the course. +#COURSETRANSLIT:My Course, Translated!; +-- The title of the course, translated into english. +#REPEAT:YES; +-- If this is present, the course does not end. Useful for endless & workout +-- courses. +#LIVES:4; +-- The maximum(?) number of lives attainable in the course. Enabling this will +-- automatically force your course into an Oni course. +#BANNER:My Banner.png; +-- A banner for your course. +#BACKGROUND:My Background.png; +-- A background for your course. Currently only available in SM-SSC. +#STYLE:SINGLE,VERSUS; +-- Denote which styles may be played on this course. This is useful in +-- particular to clone courses for doubles and single courses. +#METER:Beginner:3; +-- A custom-set meter for that course difficulty. You may set the difficulty +-- for Beginner, Easy, Medium, Hard, Challenge and Edit difficulties. + +[[ Song Content ]] +-- Song Content is comprimised with any song-changing data such as modifiers, +-- followed by an actual song for teh game to play. + +-- Modifiers can be assigned in a variety of formats, the most effective three being the following: + +1.) Repeated Modifier Block w/ Length: +#MODS:TIME:0.500:LEN:0.500:MODS:2x; +#MODS:TIME:1.500:LEN:0.500:MODS:0.5x; + +2.) Nested Modifier Block w/ Length: +#MODS: + TIME:0.500:LEN:0.500:MODS:2x; + TIME:1.500:LEN:0.500:MODS:0.5x; + +3.) Nested Modifier Block w/ Ends: +#MODS: + TIME:0.500:END:1.000:MODS:2x; + TIME:1.500:END:1.500:MODS:0.5x; + +#SONG:*:Medium:2x; +-- #SONG can take quite a variety of parameters, of which may be useful to you +-- for testing or randomocity purpose. +-- * is a wildcard item, meaning that StepMania will always pick a random song +-- for this part of the course. +-- You can also replace with BEST*,WORST*,GRADEBEST*, or GRADEWORST*, where * +-- is a number to retrive the first of each category above. +#SONG:BEST1:Medium:2x; +-- As well as that, you may also do Group Random, like such: +#SONG:Dance Dance Revolution 8th Mix/*:Medium:2x; +-- If the above is not applicable, StepMania will search for the song title as best it can, depending on what you give it: +#SONG:Xepher:Medium:2x; +-- Will simply search the title of the song. +#SONG:DDR Supernova/Xepher:Medium:2x; +-- Will search for the exact directory. + +-- #SONG can also apply different effects on each entry in the course by adding +-- special modifiers to the modifiers segment: +#SONG:*:Medium:showcourse; +-- For example, forces the course to never be hidden, noshowcourse being the +-- reverse of such. +-- nodifficult also exists to disable a player from changing difficulties, +-- barring the player from making it easier or harder ( Gauntlets & Survivals +-- do not allow you to change difficulties ). +-- Finally, award*, where * is a number, allows you to control how many lives +-- the player gains from successfully completing a course in Oni mode. + +Finally, here's an example course: +#COURSE:My Awesome Course - The Revenge; +#METER:Medium:8; + +#MODS: + TIME:1.00:END:50.00:MODS:C150; +#SONG:In The Groove/Dawn:Overhead; +#SONG:In The Groove/Mouth:; +#SONG:In The Groove 2/Funk Factory:; +#SONG:In The Groove 3/Disconnected Zeo:; \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Hold Body Active (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Hold Body Active (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..5a5c758c47f0f350d43db41e3871a27e4107636b GIT binary patch literal 3195 zcmc(h_dgZ>`^H})dnGd?BI9JwY|gP~IC7-2;uz^5vUMc82$`oNDtktbj!{;&BV-;U zJA^Vi$~YhIzv27C_kKLC`}w$jyYK6#E8&KPArt*2dH?{Ev5}tj8PWfVmilaWXgT+v zfzH>+{viMi7ylCl$bH2P0KKIr40hv&2Py#d&;#WwXbgi1`ud~XJ@2~#5Il{wLBeg; zIWlOIo+oQ!_PVI|3! zNIyxlEc7Nh`fYq--_b(YTkr8^((2%8{e;$9#U8e9h^Cd6G1ExFN(s$a3Kh8UJ-WNI zYhhVhCyHLg7qHUS-4l9vB1{1eBQ-RxU1_EH1So<>8E8SPIi^*XFOJNz0nNEhfqqKS z8jyP3lorhnbV8G%ML@@Z0*%cUwE_85z^UKWWeMDn0#0I&S4ROFdzceO0UTZmaZu!^ z0>O)J@p`~R9aIe6Ow~a%wg3BC7gP4zyB!GEsIV)$X}nf+w=V|8~uV8_^GLt<>g6}PN;)(pIyW$ zvfZ)O?&SX8NR4CC!S_##B2n^pq711Hzqb$Un-%g6rO`cgnORLSJZ@khAM=l1=`?o1 zBOvTcR&0LBdb!W`2}+X z%$mL||D0*_+Qgfq=%{piXfHYoO~+HXBqD^9X}NM@4u#r`sMwN31bgGzt*)4+DjCUH zC&C47jreyp{m-e!-8N`URqp}vPmW`o4dq@&)mmwOW2}eaOH?jBHF(4D^m+spC{z?U7dDo?yn-!Ez z2?wr2?}Mn=qV!wol&ONCg3bcEMhG*6#iUV*AfJfhg=sn!I?AV3?P6EbOH4nAHeUGK z$?YO97l$yC6dq?wxhTUL77y!G5n)S!$&2A%oHKs^4nD#*VleW+T6kTu6r*T#NjSZC z`kr?!jp|ED!D~G+%h=_PWrbzlWuaXMdaR3%-@8MbMRDssFB6^>))mDSYPW28UE8<0 z*0UuA@C!;Qx1f~;IO}SwxRQ&Cfw`)K(VWJng_UnIMlX4Ad5}D-e*`pMn9UHd$ogtG z(!Xx_BkKp{eh?#5EJt*AJW`wo!%f4DY*DV-D#jMI=r`FPMKSAkn~2>OGeo8k&STeXrfg=5>5DndHPsHP zq|3Yuc?+8Kf<8Ye-p# zd^^|L9A6|+q;95e);%~d_-1fCM+u`THzB`cgymEb=&aZ}9Y{I~ccAAay>SG%b;mrHoHtsU`YKXY9Mi5OxX znp9ZAUF?_W^u*d=Mh%f%Nc_X-z4)XA(7~j zz8_P}St`vYsg|i@7H@I={INCf~1&~nQWiG>RJ@`)eBi(C(+H51enyOA3Y1JSfClb{D>dPFXIKx-OV+? z*yJ8LxHvRg4rmRJZ_I@r8xk+Gyi(M#4>8$;_j*pRKN(F&?hZY}W?&;CrT@-25#Qj# z)?5kmUM#4cM%I9Z5q)yfntHQ3;r8ywfZbZ+%0;`6cDdDRjy@X!8yctSqn6!GubOhJ z@VCA3+o3J>VeX`L-aHk;?0!qgZ%*>~Se~lpY|CCKiu8qaFwZ#~=`VId=x>?|65Fn9 zwrqCX*V)pYg3ZQ_X*-+F38%=O8@K=UU;(6y2(>b>}u~4 z_|zM$Aa{5F=FwJL&`c2j&f9qw%jIyv$Kqs=%y8DYZncw`M_B%6ioS>b^MXCgk*CRHu#+BwZQIG$84$(oZ$l8vDnwMOqhm) zIR&rEExu-wPiR`!{oS17My)hHu^g`h5zCIB3cW>n>YtY%WJieLjYeVv>q*HNHOFsi z<$KlBm*b}7dmG(twoo16k%VK1ViCi@`C9ktjuxA=^j!XLk=g@AB3Vk9i9pS;yA6S# z%1*+M{}>CzPCSWYT%kzn(U)6LvfEG{)0xC3M1?T>s k&HwR;UqRuN0FcR)K+RLD)al9p09zNTj{pDw literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Hold Body Inactive (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Hold Body Inactive (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..890e85577fb3fc265e65a58769c4b6168f7f9b04 GIT binary patch literal 3255 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Hold BottomCap Active (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Hold BottomCap Active (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..c48bca41374bfe9471e1a31d151782eb2a768093 GIT binary patch literal 4606 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 z z4;{cD0{xoc4a4G?2ElX`(<=}`BPNZS1>Z5pX0sTdvti$ls$%?b5`xVFf<_dL6@;J( zlO`elmJ-G<8h{`KTLc76D4Hq&!AwkMYT_StY_^s-eo+AgA=qkI9MvG0iQ;c&mu>u; z%%)k0-w{Flq5}v*&>oilJ z{|mVsb!@gp^vo|QfFK0hLJ^Ad=l1(O!dg71i9^G;0SM*<)S!8-zi78ETB zLePpyt0w-pj!jpL;ztG`2tk)&@vR0yD~i?xAXtFO0wMm6n8lA2KoEi*0)ho7ey1t6 z@vqUub3*)`F^nHMfFJ}r1q8Lc&$SpLxXKJ_c|ULeH;&DFF^wM!06_@eGc3Ll5L{(O zY~o+0ks5a8?LX|;?22*x*Z>GZu*5Q5zz zf)7|2;lj|sq=wzv_#Y-9e(V4QA^1>0V4yG}K(Gjt7c>jL!;VdNLgL2~KoEj%0l^C> z7L^deVoVlm;`cZ*`ALi)djR)C(4+l>)NU>o0l@{PQcbru{=S69PXvG<1p5R8)pT=# zsiA%UKBiL59&P;n367r_06_@$iwO467XpHxd6scP`~wM(pC|x92o8v+gFU=7f`#GB zm{hY@8~Ik2*D=;f@LUP83KZ(n6wG; z50z2;!~zIHa7aMVhGJ;}2$o^8T!{Z^nZ*alXx=S+7%}{}ktyvDkYPUX8SsREe|xW@ z&G#jW-SicpkXM4w42!QduLNWG zm>-yuw?7*{cfO7+etHTRF@n!U1p7GSLvWfYJS@cjqKxC0#VMeW)4|$a#d6K*;3gY! zaT&w@d+vG0i~nWh@r!>7C@TO#2-f%zkOLu;bI*HX5kIj2V(_w-$%qKr7Mg(oY{%xS z2>(_uT?2%&CeXiA$(M$OtyvRfr_$n=Er1{dUkL~*G5+0`Z~qp?ZNzB<<^#WR?}vA} zt9q6DlY7oR=bm#_ugd*UG}pV%{5bz?VQgi&1}Jn*pn3=Y$Iq(7XMQ;^0*8V?GZhm* zv{OKWMteHQec4ZX!y%m_D-1vof<(q2DS%K;0STN38T?e%?EBF4G5D#Pw~`7Vv^79F ol{HoALy!VUCk2pBrOtl?07~Z3WZ_uRV*mgE07*qoM6N<$f-lE~+5i9m literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Hold BottomCap Inactive (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Hold BottomCap Inactive (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..268a08ead10d24999b8ef7b2790d7b7d3ffdff52 GIT binary patch literal 4563 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Hold Explosion.redir b/NoteSkins/dance/midi-note-3d/Down Hold Explosion.redir new file mode 100644 index 0000000000..9bef57edb4 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Hold Explosion.redir @@ -0,0 +1 @@ +Down Tap Explosion Bright \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Hold Head Active.png b/NoteSkins/dance/midi-note-3d/Down Hold Head Active.png new file mode 100644 index 0000000000000000000000000000000000000000..37b14d3586e0c5917e508aaf80d775d01df995d4 GIT binary patch literal 1949 zcmV;O2V(e%P)&qFpbZ?nE2pJH@gWj(Wnn5y!b$@(TM&B5Nxa#Bw*=} zZKbuLOB>m>wic*O_38RO+nIHGJ2Q87_wJ95w0CeJ;A@m_sQCV{q5K0-q67eS>@L@bQ z*$EAVWeY%*76_}vBO7axAmkfBKsX5m0$Dp!75H=H=Z~`g{kO7H>?CVjRR0@xmYriA z>CcmFaa`~d(Daj2+~tMZaf*&!h4@yNcq*^s9_`D&lOWtzXMu8VH1afNDx+uRg&dV) z%z!|t1XSq$f|gS*c)tQzodK2rf~x>l0hCM{wEFTQ697Tpp~-@oL&z!4a)Z-|MduOP ziD6e2EyfH$-_~*Rf1@@tAng=~5$#@|o=FheZD&Bh!)#}OEZ#Ow?`{FpEahYfMM6pJ&(iC2kda_-WP1iF+D85^N~m-t2o`qYwbQ@7*54v^c;?`2c#oxHw0Y5v6bq4 zf&kuya}f}S5HV$eL-4f*qAyiQNiF zc=8>Wru{z6$d~b$g)h=#4M4oVZ?lVR8;3AJ3kn?SNbf-)dpU%01o)){fl3#4pqb8q zF1~9OKFH@d7f*fdF^oLLN-G_1a@9stfs0NiC4#D@&xe}?!N7rz_EV~6f?oprbk-2g^`aPhLNW>6iXEse>?;6sx?5h{amspoX47w#F}sy zYr+-;_l#jpkjp3ny^erYZRkEdr~6wB@42eYI*6}^_@fz!PwTe$zdP6skn_fPO^tskjylAr?;va+f!x@geHGtHSQIjIO0O3y#p@tSeO9;0R zcpn7RaItZG-i@|TT8i&S+c+2h2*e*Uq&kx>YXGKw!ev01;t)1LK%FIoaR`Vd7t&=2 zZ8lqqA3&Q4F1`xl8@=+pUjR%Ht^&d|Aj|;56O;igA!J$z*zXX(0pd48{9X_7z5_5p z=mCToK==y~9tVV-K0_FS_}e_yZGiY^EyU*qfC)lBAl%^)ssUlUPY`ZEe3FY_5ApSu z;`0W;1Yrme?gGMel71DEI|LFx$#;0`Abw{C;`0i?1YsBuW;ui^K-iikgb|3J;^Nmr z{I(3mTj}!pv600O6(i!CRzOI913T&*ae7hZVuCr>6K&3{)0vS`8){2F$d@S8hx83} zB-w?jGj>)s+;gZe8B;jAWTBgII8>tfj1!Z z9|)F>?$I-Kn1Zm|sL~6eBM|&Agp<)V-J@qyK8i0I027262%L0iJ;3S? z;be48_hx(+UsM1l2=^d#8dZKxEErwi%Y%4d0QgXp5auBGF1jY0Glw=cRO8@iu{{$ESR-wC>X{yWY00000NkvXXu0mjfa$|OH literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Hold Head Inactive.lua b/NoteSkins/dance/midi-note-3d/Down Hold Head Inactive.lua new file mode 100644 index 0000000000..c4e785d34f --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Hold Head Inactive.lua @@ -0,0 +1,4 @@ +return Def.Sprite { + Texture=NOTESKIN:GetPath('Down','Hold Head Active'); + InitCommand=cmd(diffuse,color("0.5,0.5,0.5,1")); +}; \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Receptor.lua b/NoteSkins/dance/midi-note-3d/Down Receptor.lua new file mode 100644 index 0000000000..5b0a792aaf --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Receptor.lua @@ -0,0 +1,26 @@ +local t = Def.ActorFrame { + Def.Sprite { + Texture=NOTESKIN:GetPath( '_down', 'tap Receptor' ); + Frame0000=0; + Delay0000=1; + InitCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'InitCommand'); + NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand'); + }; + Def.Sprite { + Texture=NOTESKIN:GetPath( '_down', 'tap Receptor' ); + Frame0000=0; + Delay0000=1; + InitCommand=NOTESKIN:GetMetricA('ReceptorArrowOverlay', 'InitCommand'); + NoneCommand=NOTESKIN:GetMetricA('ReceptorArrowOverlay', 'NoneCommand'); + }; + Def.Sprite { + Texture=NOTESKIN:GetPath( '_down', 'tap Flash' ); + Frame0000=0; + Delay0000=1; + InitCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'InitCommand'); + PressCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'PressCommand'); + LiftCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'LiftCommand'); + NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand'); + }; +}; +return t; diff --git a/NoteSkins/dance/midi-note-3d/Down Roll Body Active (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Roll Body Active (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..a412335424045c261fbf6a38a5e22075e7212767 GIT binary patch literal 3245 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll Body Inactive (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Roll Body Inactive (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..7d995a73ed4e394fdf3d9adda17d1b197fe06111 GIT binary patch literal 3246 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll BottomCap Active (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Roll BottomCap Active (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..7eeb31774e5c93307e390de82c00e7718ced088b GIT binary patch literal 4649 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll BottomCap Inactive (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Roll BottomCap Inactive (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..25be6edce381023a2173c812ff6876790e92e19a GIT binary patch literal 4330 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 Y0OR>_9{9VfiU0rr07*qoM6N<$f;7wa_y7O^ literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll BottomCap.png b/NoteSkins/dance/midi-note-3d/Down Roll BottomCap.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d091861332c818a99ed7a1dabd46b1d2173788 GIT binary patch literal 1267 zcmVL$_80A7Y$nF8xy z@}d{}2yi}IWc}wq>Vb@2fKyHfYp=T9&0V9b$h%kV1mrF2G zlvg*f7bAeb>EqX6SOrio#~e6Z)Qa%U|C2N>PQ1f6o3K^H+e8;w`RUQXfnT0^BM&p3PQWK5-5;o7(wvV zlz?YN-?CqKw14yc0Wd+Jf%C!OHqlU1VT}X@b^4wU!G<`@zYBl~!Uh8bn#f%_ zDcznUa(`P4e%*X)2sXxPJ{|xj2o#tmAQi5j$|g>?T#F|{;hIubZ^H+)>2Un!;{{-X zKohiSD}g4SP?NsxP>gf?*M6#+#|QI$g60zeV1hsswP`D1Vy(;)Nwp?bOHizxMU+d! zp~TH63cv(`Ce$HNBI6eorOf=eZ~QRXV7_sX<_8171fkIYp=f0GJ?9Vj+DyZ2f{I zo~*<<`QUG!p_)g)%@&#`IV=D`x`E{!mQ|}UXDcCVwih1Vdy@@Rg$ zjppqF5Cy@hLzv@Z+u`n&$Nd7BUWt2tlm2%;3_EN#Zzli~gg*@sTqQZ|V9e=wXae9^ zBg5xa>YhJ|=6_0odAk8bLC8Z00S&^vt50CeKmRcR4`$?o)bJS_K5dIR{@;I1FAhTs4I002ovPDHLkV1jZ&OI-i} literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll Explosion.redir b/NoteSkins/dance/midi-note-3d/Down Roll Explosion.redir new file mode 100644 index 0000000000..9bef57edb4 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Roll Explosion.redir @@ -0,0 +1 @@ +Down Tap Explosion Bright \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Roll Head Active.png b/NoteSkins/dance/midi-note-3d/Down Roll Head Active.png new file mode 100644 index 0000000000000000000000000000000000000000..dba93001df510cedc839ab43582d4cd52cecb248 GIT binary patch literal 2091 zcmV+`2-Nq9P)1K?Bi4WvKZ?7e z2-HQT8o#Q~?ezSHxy$VA+?hMOv%6q>k`sox=bn3hzkBZIfJadj2Jv`2EK9PAv{ZYJ zk&dw(NE~+#2$&VZaeLixj@Bn|LQ=O@`eAXs(4P7gjr312>dYue29SS^;n7|q#L(4Q_Bo3s{kKT zS!ilvp^*B>zCL({jb4n=`pXg&?@$JTE$V0z(tKqm&UE(yqFx|>iV^&A4ZM|*U=LnT!hsXj32|kLfc$Ljyv7JTA8&8%sbCwc zeF^15XQJ$K&yBckwj^r=c(g=$(*!(3eMdG|G!n8U-fT7meY?iTkhErsGH*76%4P<5 z6?g6C-ViYSw6ps^1711;BzxHV(r1A3U(EnTG6S+qfK|pxU0%pHq^Rnaom+9{TR06# zG>(G`ww2Af$N>F;%PvmsXR}NOB%ICYeKzsA@w^{21Mf6W zlfa{G9;YZq zj>YjtC{Gtih0Zbm9f6Kg15@W??1%kb?1OKUNHF#1(fKg?HMX0yJn6ur%_#zwhZ`gU zzs4lSv9SH!g4gc+E;3kC=VxoEVU#0~v-?fQT9QB6djl)*XEpG!Lkx%|6%5t{;L2E2 z;|(s?)xnWh@30>~5|d!(iz~Mifkzu?3pQvQG1&R?T3nwC30StZL`_HNm9~EI z1ttYhzSpPPJ)pqO?Mo)%;o!ZvFFWCOsAB{V-)IBnXtO-v7y3cW+!wG&6Trvs`>nNX zDOJQ+A8(JU4n{M0_U=`BVd^Uy@8JSvzd>wfRC-L6Zia80zXFJ=h2>G@jE4KXWI;TEY-Z933t%! zyMQSPztqi;PzDkj#3W3#Mc5x231;$M*qVT!YdeHxD+qj9y#@Hzem0>4|8BcEc| zVtKMP%7$CT6XS~d=}h1=F;}ZPC^Oo_2Ygx8K`g~u&sRABZ#D;*Z9kLdgp0Ld_UOX& zoKRBlW9u8YNL^q|wnix60n<9eEd+#maeYH2D{1gc`Qvpk<`+`WZw0*Sni&$7f&|G-a4I0|z7G7x zE^F{IxEy_m(HtkO4hW=}0xG7!rYOLu*0XL3e8M-{D3$~-b+haw1MD*4YIT@BrA&CD zykM_UCiq;+1P&gXocRQP!x?$-u4aH;CLpi{G$}1)1?<7;2)l7Q{Y-!l_<~RPb^<-mfmU`0YyN5UcpBmn$F9e7`N>S>>mIY4$!K;TH-S84n{qH%mvVorb! zY*7bw(*d9E*I`#ksOYI>Mcbz*#z&_j?A9qU2`GaNY*7bwGYQ`8+n})A!Jn^(_;)xO z4)O1EBfHy`!J@;;*}|am+ov7M^S)Su;vLFh16wZeq5G~Ea_b)|r2kmjX@gcI+}hQy z3>6+$ekuqmLpl=htiGc%*ti8gX9QT0FiHR~6VP)S2~a%a-Kfjpb4q{}3AYL8)q=xH z?<+x7@q9Z2;9ViW1u-RIi~wIF;LtG(@RU&sqYEBxGux&l&-4tPYu+?d=H2XStK0;5n<}$x-jm8u?d%0RRbN V?4$ceonrt1002ovPDHLkV1nT+-md@v literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Roll Head Inactive.lua b/NoteSkins/dance/midi-note-3d/Down Roll Head Inactive.lua new file mode 100644 index 0000000000..b75a782145 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Roll Head Inactive.lua @@ -0,0 +1,4 @@ +return Def.Sprite { + Texture=NOTESKIN:GetPath('Down','Roll Head Active'); + InitCommand=cmd(diffuse,color("0.5,0.5,0.5,1")); +}; \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Tap Explosion Bright.png b/NoteSkins/dance/midi-note-3d/Down Tap Explosion Bright.png new file mode 100644 index 0000000000000000000000000000000000000000..bd54411afb969d8bea3a39a2e2e35922fbba5558 GIT binary patch literal 4513 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 literal 0 HcmV?d00001 diff --git a/NoteSkins/dance/midi-note-3d/Down Tap Explosion Dim.redir b/NoteSkins/dance/midi-note-3d/Down Tap Explosion Dim.redir new file mode 100644 index 0000000000..9bef57edb4 --- /dev/null +++ b/NoteSkins/dance/midi-note-3d/Down Tap Explosion Dim.redir @@ -0,0 +1 @@ +Down Tap Explosion Bright \ No newline at end of file diff --git a/NoteSkins/dance/midi-note-3d/Down Tap Fake (doubleres).png b/NoteSkins/dance/midi-note-3d/Down Tap Fake (doubleres).png new file mode 100644 index 0000000000000000000000000000000000000000..741e7ad279be33d42d1dac06d0f599397e92d363 GIT binary patch literal 7841 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