#include "global.h" #include "NotesWriterSM.h" #include "Steps.h" #include "RageUtil.h" #include "GameManager.h" #include "RageLog.h" #include "RageFile.h" #include #include void NotesWriterSM::WriteGlobalTags(FILE *fp, const Song &out) { fprintf( fp, "#TITLE:%s;\n", out.m_sMainTitle.c_str() ); fprintf( fp, "#SUBTITLE:%s;\n", out.m_sSubTitle.c_str() ); fprintf( fp, "#ARTIST:%s;\n", out.m_sArtist.c_str() ); fprintf( fp, "#TITLETRANSLIT:%s;\n", out.m_sMainTitleTranslit.c_str() ); fprintf( fp, "#SUBTITLETRANSLIT:%s;\n", out.m_sSubTitleTranslit.c_str() ); fprintf( fp, "#ARTISTTRANSLIT:%s;\n", out.m_sArtistTranslit.c_str() ); fprintf( fp, "#CREDIT:%s;\n", out.m_sCredit.c_str() ); fprintf( fp, "#BANNER:%s;\n", out.m_sBannerFile.c_str() ); fprintf( fp, "#BACKGROUND:%s;\n", out.m_sBackgroundFile.c_str() ); fprintf( fp, "#LYRICSPATH:%s;\n", out.m_sLyricsFile.c_str() ); fprintf( fp, "#CDTITLE:%s;\n", out.m_sCDTitleFile.c_str() ); fprintf( fp, "#MUSIC:%s;\n", out.m_sMusicFile.c_str() ); fprintf( fp, "#MUSICLENGTH:%.3f;\n", out.m_fMusicLengthSeconds ); fprintf( fp, "#OFFSET:%.3f;\n", out.m_fBeat0OffsetInSeconds ); fprintf( fp, "#SAMPLESTART:%.3f;\n", out.m_fMusicSampleStartSeconds ); fprintf( fp, "#SAMPLELENGTH:%.3f;\n", out.m_fMusicSampleLengthSeconds ); fprintf( fp, "#SELECTABLE:" ); switch(out.m_SelectionDisplay) { default: ASSERT(0); /* fallthrough */ case Song::SHOW_ALWAYS: fprintf( fp, "YES" ); break; case Song::SHOW_NEVER: fprintf( fp, "NO" ); break; case Song::SHOW_ROULETTE: fprintf( fp, "ROULETTE" ); break; } fprintf( fp, ";\n" ); switch( out.m_DisplayBPMType ) { case Song::DISPLAY_ACTUAL: // write nothing break; case Song::DISPLAY_SPECIFIED: if( out.m_fSpecifiedBPMMin == out.m_fSpecifiedBPMMax ) fprintf( fp, "#DISPLAYBPM:%.3f;\n", out.m_fSpecifiedBPMMin ); else fprintf( fp, "#DISPLAYBPM:%.3f:%.3f;\n", out.m_fSpecifiedBPMMin, out.m_fSpecifiedBPMMax ); break; case Song::DISPLAY_RANDOM: fprintf( fp, "#DISPLAYBPM:*;\n" ); break; } fprintf( fp, "#BPMS:" ); unsigned i; for( i=0; iWarn( "Error opening song file '%s' for writing: %s", sPath.c_str(), strerror(errno) ); return false; } WriteGlobalTags(fp, out); if(bSavingCache) { fprintf( fp, "#FIRSTBEAT:%.3f;\n", out.m_fFirstBeat ); fprintf( fp, "#LASTBEAT:%.3f;\n", out.m_fLastBeat ); } // // Save all Steps for this file // for( i=0; iIsAutogen() ) continue; /* don't write autogen notes */ WriteSMNotesTag( *out.m_apNotes[i], fp ); } fclose( fp ); return true; }