OpenTTD Source 20241224-master-gf74b0cf984
base_media_base.h File Reference

Generic functions for replacing base data (graphics, sounds). More...

#include "fileio_func.h"
#include "gfx_type.h"
#include "textfile_type.h"
#include "textfile_gui.h"
#include "3rdparty/md5/md5.h"
#include <unordered_map>

Go to the source code of this file.

Data Structures

struct  MD5File
 Structure holding filename and MD5 information about a single file. More...
 
struct  BaseSet< T, Tnum_files, Tsearch_in_tars >
 Information about a single base set. More...
 
class  BaseMedia< Tbase_set >
 Base for all base media (graphics, sounds) More...
 
struct  GraphicsSet
 All data of a graphics set. More...
 
class  BaseGraphics
 All data/functions related with replacing the base graphics. More...
 
struct  BaseGraphics::Ini
 Values loaded from config file. More...
 
struct  SoundsSet
 All data of a sounds set. More...
 
class  BaseSounds
 All data/functions related with replacing the base sounds. More...
 
struct  MusicSongInfo
 Metadata about a music track. More...
 
struct  MusicSet
 All data of a music set. More...
 
class  BaseMusic
 All data/functions related with replacing the base music. More...
 

Enumerations

enum  GraphicsFileType {
  GFT_BASE , GFT_LOGOS , GFT_ARCTIC , GFT_TROPICAL ,
  GFT_TOYLAND , GFT_EXTRA , MAX_GFT
}
 Types of graphics in the base graphics set. More...
 
enum  BlitterType { BLT_8BPP , BLT_32BPP }
 Blitter type for base graphics sets. More...
 
enum  MusicTrackType { MTT_STANDARDMIDI , MTT_MPSMIDI }
 

Functions

template<class Tbase_set >
const char * TryGetBaseSetFile (const ContentInfo *ci, bool md5sum, const Tbase_set *s)
 Check whether there's a base set matching some information.
 
std::optional< std::string > GetMusicCatEntryName (const std::string &filename, size_t entrynum)
 Read the name of a music CAT file entry.
 
std::optional< std::vector< uint8_t > > GetMusicCatEntryData (const std::string &filename, size_t entrynum)
 Read the full data of a music CAT file entry.
 

Variables

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

Detailed Description

Generic functions for replacing base data (graphics, sounds).

Definition in file base_media_base.h.

Enumeration Type Documentation

◆ BlitterType

Blitter type for base graphics sets.

Enumerator
BLT_8BPP 

Base set has 8 bpp sprites only.

BLT_32BPP 

Base set has both 8 bpp and 32 bpp sprites.

Definition at line 252 of file base_media_base.h.

◆ GraphicsFileType

Types of graphics in the base graphics set.

Enumerator
GFT_BASE 

Base sprites for all climates.

GFT_LOGOS 

Logos, landscape icons and original terrain generator sprites.

GFT_ARCTIC 

Landscape replacement sprites for arctic.

GFT_TROPICAL 

Landscape replacement sprites for tropical.

GFT_TOYLAND 

Landscape replacement sprites for toyland.

GFT_EXTRA 

Extra sprites that were not part of the original sprites.

MAX_GFT 

We are looking for this amount of GRFs.

Definition at line 241 of file base_media_base.h.

◆ MusicTrackType

Enumerator
MTT_STANDARDMIDI 

Standard MIDI file.

MTT_MPSMIDI 

MPS GM driver MIDI format (contained in a CAT file)

Definition at line 319 of file base_media_base.h.

Function Documentation

◆ GetMusicCatEntryData()

std::optional< std::vector< uint8_t > > GetMusicCatEntryData ( const std::string &  filename,
size_t  entrynum 
)

Read the full data of a music CAT file entry.

Parameters
filenameName of CAT file to read from.
entrynumIndex of entry to read
Returns
Data of CAT file entry.

Definition at line 52 of file music.cpp.

References BASESET_DIR, FioCheckFileExists(), RandomAccessFile::ReadBlock(), RandomAccessFile::ReadByte(), RandomAccessFile::ReadDword(), RandomAccessFile::SeekTo(), and RandomAccessFile::SkipBytes().

Referenced by MidiFile::GetSMFFile().

◆ GetMusicCatEntryName()

std::optional< std::string > GetMusicCatEntryName ( const std::string &  filename,
size_t  entrynum 
)

Read the name of a music CAT file entry.

Parameters
filenameName of CAT file to read from
entrynumIndex of entry whose name to read
Returns
Name of CAT file entry if it could be read.

Definition at line 28 of file music.cpp.

References BASESET_DIR, FioCheckFileExists(), RandomAccessFile::ReadBlock(), RandomAccessFile::ReadByte(), RandomAccessFile::ReadDword(), RandomAccessFile::SeekTo(), and StrMakeValid().

◆ TryGetBaseSetFile()

template<class Tbase_set >
const char * TryGetBaseSetFile ( const ContentInfo ci,
bool  md5sum,
const Tbase_set *  s 
)

Check whether there's a base set matching some information.

Parameters
ciThe content info to compare it to.
md5sumShould the MD5 checksum be tested as well?
sThe list with sets.
Returns
The filename of the first file of the base set, or nullptr if there is no match.

Definition at line 319 of file base_media_func.h.

References MD5File::hash, ContentInfo::md5sum, and ContentInfo::unique_id.

Referenced by ContentInfo::GetTextfile(), and BaseMedia< Tbase_set >::HasSet().

Variable Documentation

◆ NUM_SONG_CLASSES

const uint NUM_SONG_CLASSES = 3
static

Number of classes for songs.

Definition at line 308 of file base_media_base.h.

◆ NUM_SONGS_AVAILABLE

const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS
static

Maximum number of songs in the full playlist; theme song + the classes.

Definition at line 310 of file base_media_base.h.

Referenced by MusicSystem::BuildPlaylists().

◆ NUM_SONGS_CLASS

const uint NUM_SONGS_CLASS = 10
static

Maximum number of songs in the 'class' playlists.

Definition at line 306 of file base_media_base.h.

Referenced by MusicSystem::BuildPlaylists().

◆ NUM_SONGS_PLAYLIST

const uint NUM_SONGS_PLAYLIST = 32
static

Maximum number of songs in the (custom) playlist.

Definition at line 313 of file base_media_base.h.

Referenced by MusicSystem::BuildPlaylists(), MusicSystem::PlaylistAdd(), and MusicSystem::SaveCustomPlaylist().