Files
FC1/CrySoundSystem/MusicPattern.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

43 lines
1.3 KiB
C++

#pragma once
#include <vector>
#include "MusicPatternInstance.h"
struct IMusicSystem;
struct SMusicPatternFileInfo;
struct IMusicPatternDecoder;
typedef std::vector<int> TMarkerVec;
typedef TMarkerVec::iterator TMarkerVecIt;
class CMusicPattern
{
protected:
IMusicSystem *m_pMusicSystem;
IMusicPatternDecoder *m_pDecoder;
string m_sName;
string m_sFilename;
TMarkerVec m_vecFadePoints;
int m_nLayeringVolume;
friend class CMusicPatternInstance;
int m_numPatternInstances;
int m_nSamples; //!< Number of Samples in pattern.
private:
IMusicPatternDecoderInstance* CreateDecoderInstance();
public:
CMusicPattern(IMusicSystem *pMusicSystem, const char *pszName,const char *pszFilename);
~CMusicPattern();
bool Open(const char *pszFilename);
bool Close();
bool AddFadePoint(int nFadePos);
void ClearFadePoints();
void SetLayeringVolume(int nVol) { m_nLayeringVolume=nVol; }
int GetLayeringVolume() { return m_nLayeringVolume; }
CMusicPatternInstance* CreateInstance();
void ReleaseInstance( CMusicPatternInstance* pInstance );
void SetFilename( const char *sFilename ) { m_sFilename = sFilename; };
const char* GetName() { return m_sName.c_str(); }
const char* GetFilename() { return m_sFilename.c_str(); }
bool GetFileInfo(SMusicPatternFileInfo &FileInfo);
void GetMemoryUsage(class ICrySizer* pSizer);
};