00001
#ifndef NOTES_LOADER_BMS_H
00002
#define NOTES_LOADER_BMS_H
00003
00004
#include "NotesLoader.h"
00005
#include <map>
00006
00007
class Song;
00008
class Steps;
00009
00010 class BMSLoader:
public NotesLoader
00011 {
00012
void SlideDuplicateDifficulties(
Song &p );
00013
00014 typedef multimap<CString, CString>
NameToData_t;
00015
bool ReadBMSFile(
const CString &sPath,
BMSLoader::NameToData_t &mapNameToData );
00016
bool LoadFromBMSFile(
const CString &sPath,
const NameToData_t &mapNameToData,
Steps &out1 );
00017
void ReadGlobalTags(
const NameToData_t &mapNameToData,
Song &out );
00018
static bool GetTagFromMap(
const BMSLoader::NameToData_t &mapNameToData,
const CString &sName, CString &sOut );
00019
static bool GetCommonTagFromMapList(
const vector<NameToData_t> &aBMSData,
const CString &sName, CString &out );
00020
void SearchForDifficulty( CString sTag,
Steps *pOut );
00021
00022 typedef map<int, float>
MeasureToTimeSig_t;
00023
void ReadTimeSigs(
const NameToData_t &mapNameToData, MeasureToTimeSig_t &out );
00024
float GetBeatsPerMeasure(
const MeasureToTimeSig_t &sigs,
int iMeasure );
00025
int GetMeasureStartRow(
const MeasureToTimeSig_t &sigs,
int iMeasureNo );
00026
void SetTimeSigAdjustments(
const MeasureToTimeSig_t &sigs,
Song *pOut );
00027 MeasureToTimeSig_t m_TimeSigAdjustments;
00028
00029 CString m_sDir;
00030 map<CString,int>
m_mapWavIdToKeysoundIndex;
00031
00032
public:
00033
void GetApplicableFiles( CString sPath, CStringArray &out );
00034
bool LoadFromDir( CString sDir,
Song &out );
00035 };
00036
00037
#endif
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062