MCPcopy Create free account
hub / github.com/9chu/LuaSTGPlus / LoadMusic

Method LoadMusic

LuaSTGPlus/ResourceMgr.cpp:834–892  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

832}
833
834bool ResourcePool::LoadMusic(const char* name, const std::wstring& path, double start, double end)LNOEXCEPT
835{
836 LDEBUG_RESOURCETIMER;
837
838 {
839 LDEBUG_RESOURCESCOPE;
840
841 LASSERT(LAPP.GetSoundSys());
842
843 fcyRefPointer<fcyMemStream> tDataBuf;
844 if (!m_pMgr->LoadFile(path.c_str(), tDataBuf))
845 return false;
846
847 try
848 {
849 fcyRefPointer<f2dSoundDecoder> tDecoder;
850 if (FCYFAILED(LAPP.GetSoundSys()->CreateOGGVorbisDecoder(tDataBuf, &tDecoder)))
851 {
852 tDataBuf->SetPosition(FCYSEEKORIGIN_BEG, 0);
853 if (FCYFAILED(LAPP.GetSoundSys()->CreateWaveDecoder(tDataBuf, &tDecoder)))
854 {
855 LERROR("LoadMusic: �޷������ļ�'%s'", path.c_str());
856 return false;
857 }
858 }
859
860 fcyRefPointer<ResMusic::BGMWrapper> tWrapperedBuffer;
861 tWrapperedBuffer.DirectSet(new ResMusic::BGMWrapper(tDecoder, start, end));
862
863 fcyRefPointer<f2dSoundBuffer> tBuffer;
864 if (FCYFAILED(LAPP.GetSoundSys()->CreateDynamicBuffer(tWrapperedBuffer, LSOUNDGLOBALFOCUS, &tBuffer)))
865 {
866 LERROR("LoadMusic: �޷�������Ƶ���������ļ�'%s' (f2dSoundSys::CreateDynamicBuffer failed.)", path.c_str());
867 return false;
868 }
869
870 fcyRefPointer<ResMusic> tRes;
871 tRes.DirectSet(new ResMusic(name, tBuffer));
872 m_MusicPool.emplace(name, tRes);
873 }
874 catch (const fcyException& e)
875 {
876 LERROR("LoadMusic: �����ļ�'%s'����Ƶ����ʱ�������󣬸�ʽ��֧�֣� (�쳣��Ϣ'%m' Դ'%m')", path.c_str(), e.GetDesc(), e.GetSrc());
877 return false;
878 }
879 catch (const bad_alloc&)
880 {
881 LERROR("LoadMusic: �ڴ治��");
882 return false;
883 }
884
885#ifdef LSHOWRESLOADINFO
886 LINFO("LoadMusic: BGM'%m'��װ�� (%s)", name, getResourcePoolTypeName());
887#endif
888 }
889
890 LDEBUG_RESOURCEHINT(ResourceType::Music, path.c_str());
891 return true;

Callers

nothing calls this directly

Calls 3

GetSoundSysMethod · 0.80
LoadFileMethod · 0.80
SetPositionMethod · 0.80

Tested by

no test coverage detected