#include "stdafx.h" #include "NotesWriterSM.h" #include "Notes.h" #include "RageUtil.h" #include "GameManager.h" #include "RageLog.h" void NotesWriterSM::WriteGlobalTags(FILE *fp, const Song &out) { fprintf( fp, "#TITLE:%s;\n", out.m_sMainTitle.GetString() ); fprintf( fp, "#SUBTITLE:%s;\n", out.m_sSubTitle.GetString() ); fprintf( fp, "#ARTIST:%s;\n", out.m_sArtist.GetString() ); fprintf( fp, "#TITLETRANSLIT:%s;\n", out.m_sMainTitleTranslit.GetString() ); fprintf( fp, "#SUBTITLETRANSLIT:%s;\n", out.m_sSubTitleTranslit.GetString() ); fprintf( fp, "#ARTISTTRANSLIT:%s;\n", out.m_sArtistTranslit.GetString() ); fprintf( fp, "#CREDIT:%s;\n", out.m_sCredit.GetString() ); fprintf( fp, "#BANNER:%s;\n", out.m_sBannerFile.GetString() ); fprintf( fp, "#BACKGROUND:%s;\n", out.m_sBackgroundFile.GetString() ); fprintf( fp, "#CDTITLE:%s;\n", out.m_sCDTitleFile.GetString() ); fprintf( fp, "#MUSIC:%s;\n", out.m_sMusicFile.GetString() ); fprintf( fp, "#MUSICBYTES:%u;\n", out.m_iMusicBytes ); 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" ); fprintf( fp, "#BPMS:" ); unsigned i; for( i=0; iWarn( "Error opening song file '%s' for writing.", sPath.GetString() ); 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 Notes for this file // for( i=0; iIsAutogen() ) continue; /* don't write autogen notes */ WriteSMNotesTag( *out.m_apNotes[i], fp ); } fclose( fp ); return true; }