From 3b799327fc4ce9339df6905c52a989116846257c Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 30 Nov 2005 05:33:01 +0000 Subject: [PATCH] finish import/export of edits --- stepmania/src/MemoryCardManager.cpp | 6 +++++ stepmania/src/MemoryCardManager.h | 3 +++ stepmania/src/ScreenOptionsMemoryCard.cpp | 27 +++++++++++++++++++++++ stepmania/src/ScreenOptionsMemoryCard.h | 2 ++ stepmania/src/ScreenServiceAction.cpp | 15 ++++++++----- 5 files changed, 48 insertions(+), 5 deletions(-) diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index d8dcc7d992..de97bab4fa 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -624,6 +624,12 @@ bool MemoryCardManager::MountCard( PlayerNumber pn, int iTimeout ) return true; } +bool MemoryCardManager::MountCard( PlayerNumber pn, const UsbStorageDevice &d ) +{ + m_Device[pn] = d; + return MountCard( pn ); +} + /* Called in EndGame just after writing the profile. Called by PlayersFinalized just after * reading the profile. Should never block; use FlushAndReset to block until writes complete. */ void MemoryCardManager::UnmountCard( PlayerNumber pn ) diff --git a/stepmania/src/MemoryCardManager.h b/stepmania/src/MemoryCardManager.h index 526f1d2d69..8363c7d491 100644 --- a/stepmania/src/MemoryCardManager.h +++ b/stepmania/src/MemoryCardManager.h @@ -24,8 +24,11 @@ public: void LockCards(); // prevent removing or changing of memory cards void UnlockCards(); bool MountCard( PlayerNumber pn, int iTimeout = 10 ); + bool MountCard( PlayerNumber pn, const UsbStorageDevice &d ); void UnmountCard( PlayerNumber pn ); + bool IsMounted( PlayerNumber pn ) const { return m_bMounted[pn]; } + /* When paused, no changes in memory card state will be noticed until unpaused. */ void PauseMountingThread( int iTimeout = 20 ); void UnPauseMountingThread(); diff --git a/stepmania/src/ScreenOptionsMemoryCard.cpp b/stepmania/src/ScreenOptionsMemoryCard.cpp index fcb119bdb7..4bd278592a 100644 --- a/stepmania/src/ScreenOptionsMemoryCard.cpp +++ b/stepmania/src/ScreenOptionsMemoryCard.cpp @@ -5,6 +5,7 @@ #include "MemoryCardManager.h" #include "GameState.h" #include "ScreenManager.h" +#include "ScreenPrompt.h" REGISTER_SCREEN_CLASS( ScreenOptionsMemoryCard ); @@ -94,6 +95,32 @@ void ScreenOptionsMemoryCard::ExportOptions( int iRow, const vectorm_MasterPlayerNumber]; + + if( iCurRow == (int)m_pRows.size()-1 ) // "exit" + { + MenuBack( GAMESTATE->m_MasterPlayerNumber ); + } + else // a card + { + const vector v = MEMCARDMAN->GetStorageDevices(); + const UsbStorageDevice &dev = v[iCurRow]; + MEMCARDMAN->m_sEditorMemoryCardOsMountPoint.Set( dev.sOsMountDir ); + bool bSuccess = MEMCARDMAN->MountCard( PLAYER_1, dev ); + if( bSuccess ) + { + this->BeginFadingOut(); + } + else + { + CString s = ssprintf("error mounting card: %s", MEMCARDMAN->GetCardError(PLAYER_1).c_str() ); + ScreenPrompt::Prompt( SM_None, s ); + } + } +} + /* * (c) 2005 Chris Danford * All rights reserved. diff --git a/stepmania/src/ScreenOptionsMemoryCard.h b/stepmania/src/ScreenOptionsMemoryCard.h index de749d6a75..3b48997504 100644 --- a/stepmania/src/ScreenOptionsMemoryCard.h +++ b/stepmania/src/ScreenOptionsMemoryCard.h @@ -20,6 +20,8 @@ private: void HandleMessage( const CString& sMessage ); + void ProcessMenuStart( const InputEventPlus &input ); + vector m_vDefs; }; diff --git a/stepmania/src/ScreenServiceAction.cpp b/stepmania/src/ScreenServiceAction.cpp index c439e8b6e0..aba8fd2cec 100644 --- a/stepmania/src/ScreenServiceAction.cpp +++ b/stepmania/src/ScreenServiceAction.cpp @@ -66,7 +66,8 @@ static CString ClearMemoryCardEdits() if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip - MEMCARDMAN->MountCard(pn); + if( !MEMCARDMAN->IsMounted(pn) ) + MEMCARDMAN->MountCard(pn); bTriedToLoad = true; @@ -183,7 +184,8 @@ static CString TransferStatsMachineToMemoryCard() if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip - MEMCARDMAN->MountCard(pn); + if( !MEMCARDMAN->IsMounted(pn) ) + MEMCARDMAN->MountCard(pn); bTriedToSave = true; @@ -217,7 +219,8 @@ static CString TransferStatsMemoryCardToMachine() if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip - MEMCARDMAN->MountCard(pn); + if( !MEMCARDMAN->IsMounted(pn) ) + MEMCARDMAN->MountCard(pn); bTriedToLoad = true; @@ -264,7 +267,8 @@ static CString CopyEditsMachineToMemoryCard() if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip - MEMCARDMAN->MountCard(pn); + if( !MEMCARDMAN->IsMounted(pn) ) + MEMCARDMAN->MountCard(pn); bTriedToCopy = true; @@ -328,7 +332,8 @@ static CString CopyEditsMemoryCardToMachine() if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY ) continue; // skip - MEMCARDMAN->MountCard(pn); + if( !MEMCARDMAN->IsMounted(pn) ) + MEMCARDMAN->MountCard(pn); bTriedToCopy = true;