1 /*
2 ** lumpremap.h
3 **
4 **---------------------------------------------------------------------------
5 ** Copyright 2011 Braden Obrzut
6 ** All rights reserved.
7 **
8 ** Redistribution and use in source and binary forms, with or without
9 ** modification, are permitted provided that the following conditions
10 ** are met:
11 **
12 ** 1. Redistributions of source code must retain the above copyright
13 **    notice, this list of conditions and the following disclaimer.
14 ** 2. Redistributions in binary form must reproduce the above copyright
15 **    notice, this list of conditions and the following disclaimer in the
16 **    documentation and/or other materials provided with the distribution.
17 ** 3. The name of the author may not be used to endorse or promote products
18 **    derived from this software without specific prior written permission.
19 **
20 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 **---------------------------------------------------------------------------
31 **
32 **
33 */
34 
35 #ifndef __LUMPREMAP_H__
36 #define __LUMPREMAP_H__
37 
38 #include "resourcefiles/resourcefile.h"
39 #include "tarray.h"
40 #include "zstring.h"
41 
42 class LumpRemapper
43 {
44 	public:
45 		enum Type
46 		{
47 			AUDIOT,
48 			VGAGRAPH,
49 			VSWAP
50 		};
51 
52 		LumpRemapper(const char* extension);
53 
54 		void		AddFile(FResourceFile *file, Type type);
55 		void		DoRemap();
56 
57 		static void	AddFile(const char* extension, FResourceFile *file, Type type);
58 		static void ClearRemaps();
59 		static void	LoadMap(const char* extension, const char* name, const char* data, unsigned int length);
60 		static unsigned int LumpSampleRate(FResourceFile *Owner);
61 		static bool	IsPSprite(int lumpnum);
62 		static void	RemapAll();
63 	protected:
64 		bool		LoadMap();
65 		void		LoadMap(const char* name, const char* data, unsigned int length);
66 		void		ParseMap(class Scanner &sc);
67 	private:
68 		struct RemapFile
69 		{
70 			FResourceFile	*file;
71 			Type			type;
72 		};
73 
74 		unsigned int		digiTimerValue;
75 		bool				loaded;
76 		FString				mapLumpName;
77 		TArray<FString>		graphics, sprites, sounds, digitalsounds, music, textures;
78 		TArray<RemapFile>	files;
79 };
80 
81 #endif
82