diff --git a/stepmania/src/IniFile.cpp b/stepmania/src/IniFile.cpp index a2ef6b65e7..1f084f35f2 100644 --- a/stepmania/src/IniFile.cpp +++ b/stepmania/src/IniFile.cpp @@ -12,11 +12,8 @@ */ #include "IniFile.h" - - -///////////////////////////////////////////////////////////////////// -// Construction/Destruction -///////////////////////////////////////////////////////////////////// +#include +using namespace std; //constructor, can specify pathname here instead of using SetPath later IniFile::IniFile(CString inipath) @@ -30,33 +27,28 @@ IniFile::~IniFile() } -///////////////////////////////////////////////////////////////////// -// Public Functions -///////////////////////////////////////////////////////////////////// - -//sets path of ini file to read and write from +// sets path of ini file to read and write from void IniFile::SetPath(CString newpath) { path = newpath; } -//reads ini file specified using IniFile::SetPath() -//returns true if successful, false otherwise +// reads ini file specified using IniFile::SetPath() +// returns true if successful, false otherwise bool IniFile::ReadFile() { - CStdioFile file; - CFileStatus status; - if (!file.GetStatus(path,status)) - return 0; - if (!file.Open(path, CFile::modeRead)) + ifstream file(path); + + if (file.bad()) { error = "Unable to open ini file."; return 0; } + CString keyname, valuename, value; CString temp; CString line; - while (file.ReadString(line)) + while (getline(file, line)) { if (line == "") continue; @@ -78,11 +70,10 @@ bool IniFile::ReadFile() } } } - file.Close(); return 1; } -//writes data stored in class to ini file +// writes data stored in class to ini file void IniFile::WriteFile() { FILE* fp = fopen( path, "w" ); @@ -101,19 +92,19 @@ void IniFile::WriteFile() fclose( fp ); } -//deletes all stored ini data +// deletes all stored ini data void IniFile::Reset() { keys.clear(); } -//returns number of keys currently in the ini +// returns number of keys currently in the ini int IniFile::GetNumKeys() const { return keys.size(); } -//returns number of values stored for specified key, or -1 if key not found +// returns number of values stored for specified key, or -1 if key not found int IniFile::GetNumValues(const CString &keyname) const { keymap::const_iterator k = keys.find(keyname); @@ -123,8 +114,8 @@ int IniFile::GetNumValues(const CString &keyname) const return k->second.size(); } -//gets value of [keyname] valuename = -//overloaded to return CString, int, and double +// gets value of [keyname] valuename = +// overloaded to return CString, int, and double bool IniFile::GetValue(const CString &keyname, const CString &valuename, CString& value) { keymap::const_iterator k = keys.find(keyname); @@ -146,8 +137,8 @@ bool IniFile::GetValue(const CString &keyname, const CString &valuename, CString return true; } -//gets value of [keyname] valuename = -//overloaded to return CString, int, and double +// gets value of [keyname] valuename = +// overloaded to return CString, int, and double bool IniFile::GetValueI(const CString &keyname, const CString &valuename, int& value) { CString sValue; @@ -158,8 +149,8 @@ bool IniFile::GetValueI(const CString &keyname, const CString &valuename, int& v return true; } -//gets value of [keyname] valuename = -//overloaded to return CString, int, and double +// gets value of [keyname] valuename = +// overloaded to return CString, int, and double bool IniFile::GetValueF(const CString &keyname, const CString &valuename, float& value) { CString sValue; @@ -170,8 +161,8 @@ bool IniFile::GetValueF(const CString &keyname, const CString &valuename, float& return true; } -//gets value of [keyname] valuename = -//overloaded to return CString, int, and double +// gets value of [keyname] valuename = +// overloaded to return CString, int, and double bool IniFile::GetValueB(const CString &keyname, const CString &valuename, bool& value) { CString sValue; @@ -182,10 +173,10 @@ bool IniFile::GetValueB(const CString &keyname, const CString &valuename, bool& return true; } -//sets value of [keyname] valuename =. -//specify the optional paramter as false (0) if you do not want it to create -//the key if it doesn't exist. Returns true if data entered, false otherwise -//overloaded to accept CString, int, and double +// sets value of [keyname] valuename =. +// specify the optional paramter as false (0) if you do not want it to create +// the key if it doesn't exist. Returns true if data entered, false otherwise +// overloaded to accept CString, int, and double bool IniFile::SetValue(const CString &keyname, const CString &valuename, const CString &value, bool create) { if (!create && keys.find(keyname) == keys.end()) //if key doesn't exist @@ -199,10 +190,10 @@ bool IniFile::SetValue(const CString &keyname, const CString &valuename, const C return true; } -//sets value of [keyname] valuename =. -//specify the optional paramter as false (0) if you do not want it to create -//the key if it doesn't exist. Returns true if data entered, false otherwise -//overloaded to accept CString, int, and double +// sets value of [keyname] valuename =. +// specify the optional paramter as false (0) if you do not want it to create +// the key if it doesn't exist. Returns true if data entered, false otherwise +// overloaded to accept CString, int, and double bool IniFile::SetValueI(const CString &keyname, const CString &valuename, int value, bool create) { CString temp; @@ -210,10 +201,10 @@ bool IniFile::SetValueI(const CString &keyname, const CString &valuename, int va return SetValue(keyname, valuename, temp, create); } -//sets value of [keyname] valuename =. -//specify the optional paramter as false (0) if you do not want it to create -//the key if it doesn't exist. Returns true if data entered, false otherwise -//overloaded to accept CString, int, and double +// sets value of [keyname] valuename =. +// specify the optional paramter as false (0) if you do not want it to create +// the key if it doesn't exist. Returns true if data entered, false otherwise +// overloaded to accept CString, int, and double bool IniFile::SetValueF(const CString &keyname, const CString &valuename, float value, bool create) { CString temp; @@ -221,10 +212,10 @@ bool IniFile::SetValueF(const CString &keyname, const CString &valuename, float return SetValue(keyname, valuename, temp, create); } -//sets value of [keyname] valuename =. -//specify the optional paramter as false (0) if you do not want it to create -//the key if it doesn't exist. Returns true if data entered, false otherwise -//overloaded to accept CString, int, and double +// sets value of [keyname] valuename =. +// specify the optional paramter as false (0) if you do not want it to create +// the key if it doesn't exist. Returns true if data entered, false otherwise +// overloaded to accept CString, int, and double bool IniFile::SetValueB(const CString &keyname, const CString &valuename, bool value, bool create) { CString temp; @@ -232,8 +223,8 @@ bool IniFile::SetValueB(const CString &keyname, const CString &valuename, bool v return SetValue(keyname, valuename, temp, create); } -//deletes specified value -//returns true if value existed and deleted, false otherwise +// deletes specified value +// returns true if value existed and deleted, false otherwise bool IniFile::DeleteValue(const CString &keyname, const CString &valuename) { keymap::iterator k = keys.find(keyname); @@ -248,8 +239,8 @@ bool IniFile::DeleteValue(const CString &keyname, const CString &valuename) return true; } -//deletes specified key and all values contained within -//returns true if key existed and deleted, false otherwise +// deletes specified key and all values contained within +// returns true if key existed and deleted, false otherwise bool IniFile::DeleteKey(const CString &keyname) { keymap::iterator k = keys.find(keyname); diff --git a/stepmania/src/NotesLoaderBMS.cpp b/stepmania/src/NotesLoaderBMS.cpp index bfd1f55884..e83fb1af1d 100644 --- a/stepmania/src/NotesLoaderBMS.cpp +++ b/stepmania/src/NotesLoaderBMS.cpp @@ -8,6 +8,7 @@ #include "RageLog.h" #include "GameManager.h" #include "RageException.h" +#include // BMS encoding: tap-hold // 4&8panel: Player1 Player2 @@ -67,12 +68,12 @@ bool BMSLoader::LoadFromBMSFile( const CString &sPath, Notes &out ) NoteData* pNoteData = new NoteData; pNoteData->m_iNumTracks = MAX_NOTE_TRACKS; - CStdioFile file; - if( !file.Open( sPath, CFile::modeRead|CFile::shareDenyNone ) ) + ifstream file(sPath); + if( file.bad() ) throw RageException( "Failed to open %s for reading.", sPath.GetString() ); CString line; - while( file.ReadString(line) ) // foreach line + while( getline(file, line) ) // foreach line { CString value_name; // fill these in CString value_data; @@ -276,12 +277,12 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) CString sPath = out.m_sSongDir + arrayBMSFileNames[0]; - CStdioFile file; - if( !file.Open( sPath, CFile::modeRead|CFile::shareDenyNone ) ) + ifstream file(sPath); + if( file.bad() ) throw RageException( "Failed to open %s for reading.", sPath.GetString() ); CString line; - while( file.ReadString(line) ) // foreach line + while( getline(file, line) ) // foreach line { CString value_name; // fill these in CString value_data; @@ -413,12 +414,12 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) // open the song file again and and look for this tag's value - CStdioFile file; - if( !file.Open( sPath, CFile::modeRead|CFile::shareDenyNone ) ) + ifstream file(sPath); + if( file.bad() ) throw RageException( "Failed to open %s for reading.", sPath.GetString() ); CString line; - while( file.ReadString(line) ) // foreach line + while( getline(file, line) ) // foreach line { CString value_name; // fill these in CString value_data; @@ -463,7 +464,6 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) LOG->Trace( "Inserting new BPM change at beat %f, BPM %f", newSeg.m_fStartBeat, newSeg.m_fBPM ); } - file.Close(); break; } case 9: { // stop @@ -475,12 +475,12 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) // open the song file again and and look for this tag's value - CStdioFile file; - if( !file.Open( sPath, CFile::modeRead|CFile::shareDenyNone ) ) + ifstream file(sPath); + if( file.bad() ) throw RageException( "Failed to open %s for reading.", sPath.GetString() ); CString line; - while( file.ReadString(line) ) // foreach line + while( getline(file, line) ) // foreach line { CString value_name; // fill these in CString value_data; @@ -540,7 +540,6 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) LOG->Trace( "Inserting new Freeze at beat %f, secs %f", newSeg.m_fStartBeat, newSeg.m_fStopSeconds ); } - file.Close(); break; } } @@ -552,7 +551,6 @@ bool BMSLoader::LoadFromDir( CString sDir, Song &out ) LOG->Trace( "There is a BPM change at beat %f, BPM %f, index %d", out.m_BPMSegments[i].m_fStartBeat, out.m_BPMSegments[i].m_fBPM, i ); - file.Close(); return true; } diff --git a/stepmania/src/NotesWriterDWI.cpp b/stepmania/src/NotesWriterDWI.cpp index c6d68eaaf7..bb67e61ba0 100644 --- a/stepmania/src/NotesWriterDWI.cpp +++ b/stepmania/src/NotesWriterDWI.cpp @@ -65,7 +65,7 @@ CString NotesWriterDWI::NotesToDWIString( char cNoteCol1, char cNoteCol2, char c if( cHold != '0' ) return ssprintf( "%c!%c", cShow, cHold ); else - return cShow; + return ssprintf( "%c", cShow ); } CString NotesWriterDWI::NotesToDWIString( char cNoteCol1, char cNoteCol2, char cNoteCol3, char cNoteCol4 ) diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 9e463083b2..d4c7e9a02a 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -20,6 +20,8 @@ #include "IniFile.h" #include "RageTimer.h" +#include +using namespace std; ThemeManager* THEME = NULL; // global object accessable from anywhere in the program @@ -127,10 +129,9 @@ try_element_again: GetDirListing( sCurrentThemeDir + sAssetCategory+"\\"+sFileName + "*.redir", asPossibleElementFilePaths, false, true ); if( !asPossibleElementFilePaths.empty() ) { - CStdioFile file; - file.Open( asPossibleElementFilePaths[0], CFile::modeRead ); + ifstream file(asPossibleElementFilePaths[0]); CString sLine; - file.ReadString( sLine ); + getline(file, sLine); } @@ -196,13 +197,14 @@ try_element_again: CString sDir, sFName, sExt; splitrelpath( sRedirFilePath, sDir, sFName, sExt ); - CStdioFile file; - file.Open( sRedirFilePath, CFile::modeRead ); CString sNewFileName; - file.ReadString( sNewFileName ); + { + ifstream file(sRedirFilePath); + getline(file, sNewFileName ); // CString sNewFilePath = sDir+"\\"+sNewFileName; // This is what it used to be, FONT redirs were getting extra slashes // at the start of their file names, so I took out this extra slash - Andy. - file.Close(); + } + CString sNewFilePath = sDir+sNewFileName; if( sNewFileName == "" || !DoesFileExist(sNewFilePath) ) {