File diff r14054:7efba5ff753b → r14055:e4168a875df8
src/base_media_base.h
Show inline comments
 
@@ -14,6 +14,7 @@
 

	
 
#include "fileio_func.h"
 
#include "core/smallmap_type.hpp"
 
#include "gfx_type.h"
 

	
 
/* Forward declare these; can't do 'struct X' in functions as older GCCs barf on that */
 
struct IniFile;
 
@@ -32,21 +33,25 @@ struct MD5File {
 
	uint8 hash[16];              ///< md5 sum of the file
 
	const char *missing_warning; ///< warning when this file is missing
 

	
 
	ChecksumResult CheckMD5() const;
 
	ChecksumResult CheckMD5(Subdirectory subdir) const;
 
};
 

	
 
/**
 
 * Information about a single base set.
 
 * @tparam T the real class we're going to be
 
 * @tparam Tnum_files the number of files in the set
 
 * @tparam Tsubdir the subdirectory where to find the files
 
 */
 
template <class T, size_t Tnum_files>
 
template <class T, size_t Tnum_files, Subdirectory Tsubdir>
 
struct BaseSet {
 
	typedef SmallMap<const char *, const char *> TranslatedStrings;
 

	
 
	/** Number of files in this set */
 
	static const size_t NUM_FILES = Tnum_files;
 

	
 
	/** The sub directory to search for the files */
 
	static const Subdirectory SUBDIR = Tsubdir;
 

	
 
	/** Internal names of the files in this set. */
 
	static const char * const *file_names;
 

	
 
@@ -163,7 +168,7 @@ public:
 
	static uint FindSets()
 
	{
 
		BaseMedia<Tbase_set> fs;
 
		return fs.Scan(GetExtension(), DATA_DIR);
 
		return fs.Scan(GetExtension(), Tbase_set::SUBDIR);
 
	}
 

	
 
	/**
 
@@ -226,7 +231,7 @@ enum GraphicsFileType {
 
};
 

	
 
/** All data of a graphics set. */
 
struct GraphicsSet : BaseSet<GraphicsSet, MAX_GFT> {
 
struct GraphicsSet : BaseSet<GraphicsSet, MAX_GFT, DATA_DIR> {
 
	PaletteType palette;       ///< Palette of this graphics set
 

	
 
	bool FillSetDetails(struct IniFile *ini, const char *path);
 
@@ -242,7 +247,7 @@ public:
 
};
 

	
 
/** All data of a sounds set. */
 
struct SoundsSet : BaseSet<SoundsSet, 1> {
 
struct SoundsSet : BaseSet<SoundsSet, 1, DATA_DIR> {
 
};
 

	
 
/** All data/functions related with replacing the base sounds */
 
@@ -250,4 +255,29 @@ class BaseSounds : public BaseMedia<Soun
 
public:
 
};
 

	
 
/** Maximum number of songs in the 'class' playlists. */
 
static const uint NUM_SONGS_CLASS     = 10;
 
/** Number of classes for songs */
 
static const uint NUM_SONG_CLASSES    = 3;
 
/** Maximum number of songs in the full playlist; theme song + the classes */
 
static const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS;
 

	
 
/** Maximum number of songs in the (custom) playlist */
 
static const uint NUM_SONGS_PLAYLIST  = 32;
 

	
 
/** All data of a music set. */
 
struct MusicSet : BaseSet<MusicSet, NUM_SONGS_AVAILABLE, GM_DIR> {
 
	/** The name of the different songs. */
 
	char song_name[NUM_SONGS_AVAILABLE][32];
 
	byte track_nr[NUM_SONGS_AVAILABLE];
 
	byte num_available;
 

	
 
	bool FillSetDetails(struct IniFile *ini, const char *path);
 
};
 

	
 
/** All data/functions related with replacing the base music */
 
class BaseMusic : public BaseMedia<MusicSet> {
 
public:
 
};
 

	
 
#endif /* BASE_MEDIA_BASE_H */