aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/DLC/DLCAudioFile.h
blob: 5013178595ceeb18924b33d6a22c3c716e0be016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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,

		e_AudioType_Max,
	};
	enum EAudioParameterType
	{
		e_AudioParamType_Invalid = -1,

		e_AudioParamType_Cuename = 0,
		e_AudioParamType_Credit,

		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<int, wstring> m_parameters;
	vector<wstring> m_parameters[e_AudioType_Max];

	// use the EAudioType to order these
	void addParameter(EAudioType type, EAudioParameterType ptype, const wstring &value);
	EAudioParameterType getParameterType(const wstring &paramName);
};