OpenTTD Source 20260208-master-g43af8e94d0
BaseMedia< Tbase_set > Class Template Reference

Base for all base media (graphics, sounds). More...

#include <base_media_base.h>

Inheritance diagram for BaseMedia< Tbase_set >:
FileScanner

Public Member Functions

bool DetermineBestSet ()
bool DetermineBestSet ()
bool DetermineBestSet ()

Static Public Member Functions

static bool DetermineBestSet ()
 Determine the graphics pack that has to be used.
static uint FindSets ()
 Do the scan for files.
static std::span< const std::unique_ptr< Tbase_set > > GetAvailableSets ()
 Return the available sets.
static bool SetSet (const Tbase_set *set)
 Set the set to be used.
static bool SetSetByName (const std::string &name)
 Set the set to be used.
static bool SetSetByShortname (uint32_t shortname)
 Set the set to be used.
static void GetSetsList (std::back_insert_iterator< std::string > &output_iterator)
 Returns a list with the sets.
static int GetNumSets ()
 Count the number of available graphics sets.
static int GetIndexOfUsedSet ()
 Get the index of the currently active graphics set.
static const Tbase_set * GetSet (int index)
 Get the name of the graphics set at the specified index.
static const Tbase_set * GetUsedSet ()
 Return the used set.
static bool HasSet (const ContentInfo &ci, bool md5sum)
 Check whether we have an set with the exact characteristics as ci.

Protected Member Functions

bool AddFile (const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
 Add a file with the given filename.
std::string_view GetExtension ()
std::string_view GetExtension ()
std::string_view GetExtension ()

Static Protected Member Functions

static std::string_view GetExtension ()
 Get the extension that is used to identify this set.
static std::span< const std::unique_ptr< Tbase_set > > GetDuplicateSets ()
 Return the duplicate sets.

Static Protected Attributes

static std::vector< std::unique_ptr< Tbase_set > > available_sets
 All available sets.
static std::vector< std::unique_ptr< Tbase_set > > duplicate_sets
 All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded.
static const Tbase_set * used_set
 The currently used set.

Additional Inherited Members

Private Member Functions inherited from FileScanner
virtual ~FileScanner ()=default
 Destruct the proper one...
uint Scan (std::string_view extension, Subdirectory sd, bool tars=true, bool recursive=true)
 Scan for files with the given extension in the given search path.
uint Scan (std::string_view extension, const std::string &directory, bool recursive=true)
 Scan for files with the given extension in the given search path.
Private Attributes inherited from FileScanner
Subdirectory subdir {}
 The current sub directory we are searching through.

Detailed Description

template<class Tbase_set>
class BaseMedia< Tbase_set >

Base for all base media (graphics, sounds).

Template Parameters
Tbase_setthe real set we're going to be

Definition at line 165 of file base_media_base.h.

Member Function Documentation

◆ AddFile()

template<class Tbase_set>
bool BaseMedia< Tbase_set >::AddFile ( const std::string & filename,
size_t basepath_length,
const std::string & tar_filename )
overrideprotectedvirtual

Add a file with the given filename.

Parameters
filenamethe full path to the file to read
basepath_lengthamount of characters to chop of before to get a filename relative to the search path.
tar_filenamethe name of the tar file the file is read from.
Returns
true if the file is added.

Implements FileScanner.

Definition at line 186 of file base_media_func.h.

References available_sets, BASESET_DIR, Debug, IniLoadFile::LoadFromDisk(), and BaseSet< T >::SET_TYPE.

◆ DetermineBestSet() [1/4]

template<class Tbase_set>
bool BaseMedia< Tbase_set >::DetermineBestSet ( )
static

Determine the graphics pack that has to be used.

The one with the most correct files wins.

Returns
true if a best set has been found.

Referenced by SetSet().

◆ DetermineBestSet() [2/4]

bool BaseMedia< GraphicsSet >::DetermineBestSet ( )

Definition at line 477 of file gfxinit.cpp.

◆ DetermineBestSet() [3/4]

bool BaseMedia< MusicSet >::DetermineBestSet ( )

Definition at line 93 of file music.cpp.

◆ DetermineBestSet() [4/4]

bool BaseMedia< SoundsSet >::DetermineBestSet ( )

Definition at line 282 of file sound.cpp.

◆ FindSets()

template<class Tbase_set>
uint BaseMedia< Tbase_set >::FindSets ( )
inlinestatic

Do the scan for files.

Definition at line 193 of file base_media_base.h.

References BASESET_DIR, GetExtension(), OLD_DATA_DIR, OLD_GM_DIR, and FileScanner::Scan().

◆ GetAvailableSets()

template<class Tbase_set>
std::span< const std::unique_ptr< Tbase_set > > BaseMedia< Tbase_set >::GetAvailableSets ( )
inlinestatic

Return the available sets.

Returns
The available sets.

Definition at line 205 of file base_media_base.h.

References available_sets.

Referenced by GetNumSets(), and HasSet().

◆ GetDuplicateSets()

template<class Tbase_set>
std::span< const std::unique_ptr< Tbase_set > > BaseMedia< Tbase_set >::GetDuplicateSets ( )
inlinestaticprotected

Return the duplicate sets.

Returns
The duplicate sets.

Definition at line 183 of file base_media_base.h.

References duplicate_sets.

Referenced by HasSet().

◆ GetExtension() [1/4]

template<class Tbase_set>
std::string_view BaseMedia< Tbase_set >::GetExtension ( )
staticprotected

Get the extension that is used to identify this set.

Returns
the extension

Referenced by FindSets().

◆ GetExtension() [2/4]

std::string_view BaseMedia< GraphicsSet >::GetExtension ( )
protected

Definition at line 510 of file gfxinit.cpp.

◆ GetExtension() [3/4]

std::string_view BaseMedia< MusicSet >::GetExtension ( )
protected

Definition at line 87 of file music.cpp.

◆ GetExtension() [4/4]

std::string_view BaseMedia< SoundsSet >::GetExtension ( )
protected

Definition at line 276 of file sound.cpp.

◆ GetIndexOfUsedSet()

template<class Tbase_set>
int BaseMedia< Tbase_set >::GetIndexOfUsedSet ( )
static

Get the index of the currently active graphics set.

Returns
the current set's index

Definition at line 367 of file base_media_func.h.

References available_sets, and used_set.

◆ GetNumSets()

template<class Tbase_set>
int BaseMedia< Tbase_set >::GetNumSets ( )
static

Count the number of available graphics sets.

Returns
the number of sets

Definition at line 355 of file base_media_func.h.

References GetAvailableSets(), and used_set.

◆ GetSet()

template<class Tbase_set>
const Tbase_set * BaseMedia< Tbase_set >::GetSet ( int index)
static

Get the name of the graphics set at the specified index.

Returns
the name of the set

Definition at line 383 of file base_media_func.h.

References available_sets, BaseSet< T >::SET_TYPE, and used_set.

◆ GetSetsList()

template<class Tbase_set>
void BaseMedia< Tbase_set >::GetSetsList ( std::back_insert_iterator< std::string > & output_iterator)
static

Returns a list with the sets.

Parameters
output_iteratorThe iterator to write the string to.

Definition at line 304 of file base_media_func.h.

References available_sets, and BaseSet< T >::SET_TYPE.

◆ GetUsedSet()

template<class Tbase_set>
const Tbase_set * BaseMedia< Tbase_set >::GetUsedSet ( )
static

Return the used set.

Returns
the used set.

Definition at line 398 of file base_media_func.h.

References used_set.

◆ HasSet()

template<class Tbase_set>
bool BaseMedia< Tbase_set >::HasSet ( const ContentInfo & ci,
bool md5sum )
static

Check whether we have an set with the exact characteristics as ci.

Parameters
cithe characteristics to search on (shortname and md5sum)
md5sumwhether to check the MD5 checksum
Returns
true iff we have an set matching.

Definition at line 344 of file base_media_func.h.

References GetAvailableSets(), GetDuplicateSets(), and TryGetBaseSetFile().

◆ SetSet()

template<class Tbase_set>
bool BaseMedia< Tbase_set >::SetSet ( const Tbase_set * set)
static

Set the set to be used.

Parameters
setthe set to use
Returns
true if it could be loaded

Definition at line 248 of file base_media_func.h.

References CheckExternalFiles(), DetermineBestSet(), and used_set.

Referenced by SetSetByName(), and SetSetByShortname().

◆ SetSetByName()

template<class Tbase_set>
bool BaseMedia< Tbase_set >::SetSetByName ( const std::string & name)
static

Set the set to be used.

Parameters
nameof the set to use
Returns
true if it could be loaded

Definition at line 265 of file base_media_func.h.

References available_sets, and SetSet().

◆ SetSetByShortname()

template<class Tbase_set>
bool BaseMedia< Tbase_set >::SetSetByShortname ( uint32_t shortname)
static

Set the set to be used.

Parameters
shortnameof the set to use
Returns
true if it could be loaded

Definition at line 285 of file base_media_func.h.

References available_sets, and SetSet().

Field Documentation

◆ available_sets

template<class Tbase_set>
std::vector<std::unique_ptr<Tbase_set> > BaseMedia< Tbase_set >::available_sets
inlinestaticprotected

All available sets.

Definition at line 167 of file base_media_base.h.

Referenced by AddFile(), GetAvailableSets(), GetIndexOfUsedSet(), GetSet(), GetSetsList(), SetSetByName(), and SetSetByShortname().

◆ duplicate_sets

template<class Tbase_set>
std::vector<std::unique_ptr<Tbase_set> > BaseMedia< Tbase_set >::duplicate_sets
inlinestaticprotected

All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded.

Definition at line 168 of file base_media_base.h.

Referenced by GetDuplicateSets().

◆ used_set

template<class Tbase_set>
const Tbase_set* BaseMedia< Tbase_set >::used_set
inlinestaticprotected

The currently used set.

Definition at line 169 of file base_media_base.h.

Referenced by GetIndexOfUsedSet(), GetNumSets(), GetSet(), GetUsedSet(), and SetSet().


The documentation for this class was generated from the following files: