#pragma once #include "DLCFile.h" class DLCAudioFile : public DLCFile { public: // If you add to the Enum,then you need to add the array of type names // These are the names used in the XML for the parameters enum EAudioType { e_AudioType_Invalid = -1, e_AudioType_Overworld = 0, e_AudioType_Nether, e_AudioType_End, // @3UR: thanks https://github.com/LCERD/PCK-Studio/blob/500fc74395ce99fe20cbd7598999bfab3b606745/PckStudio.Core/FileFormats/PckAudioFile.cs#L25 e_AudioType_Creative, e_AudioType_Menu, e_AudioType_Battle, e_AudioType_Tumble, e_AudioType_Glide, e_AudioType_BuildOff, e_AudioType_Max, }; enum EAudioParameterType { e_AudioParamType_Invalid = -1, e_AudioParamType_Cuename = 0, e_AudioParamType_Credit, e_AudioParamType_CreditId, e_AudioParamType_Max, }; static const WCHAR *wchTypeNamesA[e_AudioParamType_Max]; DLCAudioFile(const wstring &path); void addData(PBYTE pbData, DWORD dwBytes) override; PBYTE getData(DWORD &dwBytes) override; bool processDLCDataFile(PBYTE pbData, DWORD dwLength); int GetCountofType(EAudioType ptype); wstring &GetSoundName(int iIndex); private: using DLCFile::addParameter; PBYTE m_pbData; DWORD m_dwBytes; static const int CURRENT_AUDIO_VERSION_NUM=1; //unordered_map m_parameters; vector m_parameters[e_AudioType_Max]; // use the EAudioType to order these void addParameter(EAudioType type, EAudioParameterType ptype, const wstring &value); EAudioParameterType getParameterType(const wstring ¶mName); };