OpenTTD Source: src/gfxinit.cpp File Reference

OpenTTD Source 15.0-beta1

Macros | Functions | Variables
gfxinit.cpp File Reference

Initializing of the (GRF) graphics. More...

`#include "stdafx.h"`
`#include "fios.h"`
`#include "newgrf.h"`
`#include "3rdparty/md5/md5.h"`
`#include "fontcache.h"`
`#include "gfx_func.h"`
`#include "transparency.h"`
`#include "blitter/factory.hpp"`
`#include "video/video_driver.hpp"`
`#include "window_func.h"`
`#include "palette_func.h"`
`#include "base_media_func.h"`
`#include "table/sprites.h"`
`#include "safeguards.h"`
`#include "table/landscape_sprite.h"`

Go to the source code of this file.

## Macros
#define | SET_TYPE "graphics"

## Functions
static uint | LoadGrfFile (const std::string &filename, SpriteID load_index, bool needs_palette_remap)
| Load an old fashioned GRF file.
static void | LoadGrfFileIndexed (const std::string &filename, std::span< const std::pair< SpriteID, SpriteID > > index_tbl, bool needs_palette_remap)
| Load an old fashioned GRF file to replace already loaded sprites.
void | CheckExternalFiles ()
| Checks whether the MD5 checksums of the files are correct.
static void | LoadSpriteTables ()
| Actually load the sprite tables.
static void | RealChangeBlitter (const std::string_view repl_blitter)
static bool | SwitchNewGRFBlitter ()
| Check blitter needed by NewGRF config and switch if needed.
void | CheckBlitter ()
| Check whether we still use the right blitter, or use another (better) one.
void | GfxLoadSprites ()
| Initialise and load all the sprites.

## Variables
static constexpr std::span< const std::pair< SpriteID, SpriteID > > | _landscape_spriteindexes []
| Offsets for loading the different "replacement" sprites in the files.
static const char *const | _graphics_file_names [] = { "base", "logos", "arctic", "tropical", "toyland", "extra" }
| Names corresponding to the GraphicsFileType.

## Detailed Description

Initializing of the (GRF) graphics.

Definition in file gfxinit.cpp.

## Macro Definition Documentation

## ◆ SET_TYPE

#define SET_TYPE "graphics"

Definition at line 23 of file gfxinit.cpp.

## Function Documentation

## ◆ CheckBlitter()

void CheckBlitter | ( |  | ) |

Check whether we still use the right blitter, or use another (better) one.

Definition at line 313 of file gfxinit.cpp.

References GfxClearSpriteCache(), ReInitAllWindows(), and SwitchNewGRFBlitter().

Referenced by MenuClickSettings(), and GameOptionsWindow::OnDropdownSelect().

## ◆ CheckExternalFiles()

void CheckExternalFiles | ( |  | ) |

Checks whether the MD5 checksums of the files are correct.

Note
  Also checks sample.cat and other required non-NewGRF GRFs for corruption.

Definition at line 114 of file gfxinit.cpp.

References BASESET_DIR, BaseSet< SoundsSet, 1, true >::CheckMD5(), GraphicsSet::CheckMD5(), MD5File::CR_MATCH, MD5File::CR_MISMATCH, Debug, MD5File::filename, BaseSet< T, Tnum_files, Tsearch_in_tars >::files, BaseSet< T, Tnum_files, Tsearch_in_tars >::GetNumInvalid(), BaseMedia< GraphicsSet >::GetUsedSet(), BaseMedia< SoundsSet >::GetUsedSet(), MD5File::missing_warning, BaseSet< T, Tnum_files, Tsearch_in_tars >::name, and BaseSet< SoundsSet, 1, true >::NUM_FILES.

Referenced by BaseMedia< Tbase_set >::SetSet().

## ◆ GfxLoadSprites()

void GfxLoadSprites | ( |  | ) |

Initialise and load all the sprites.

Definition at line 323 of file gfxinit.cpp.

References _settings_game, VideoDriver::ClearSystemSprites(), Debug, GameSettings::game_creation, VideoDriver::GetInstance(), GameCreationSettings::landscape, LoadSpriteTables(), SwitchNewGRFBlitter(), and UpdateCursorSize().

Referenced by AfterLoadGame(), GenerateWorld(), and ReloadNewGRFData().

## ◆ LoadGrfFile()

static uint LoadGrfFile | ( | const std::string & | filename,
|  | SpriteID | load_index,
|  | bool | needs_palette_remap
| ) |  |
| static

Load an old fashioned GRF file.

Parameters

  filename | The name of the file to open.
  load_index | The offset of the first sprite.
  needs_palette_remap | Whether the colours in the GRF file need a palette remap.

Returns
  The number of loaded sprites.

Definition at line 46 of file gfxinit.cpp.

References BASESET_DIR, Debug, SpriteFile::GetContainerVersion(), LoadNextSprite(), MAX_SPRITES, OpenCachedSpriteFile(), RandomAccessFile::ReadByte(), and ReadGRFSpriteOffsets().

Referenced by LoadSpriteTables().

## ◆ LoadGrfFileIndexed()

static void LoadGrfFileIndexed | ( | const std::string & | filename,
|  | std::span< const std::pair< SpriteID, SpriteID > > | index_tbl,
|  | bool | needs_palette_remap
| ) |  |
| static

Load an old fashioned GRF file to replace already loaded sprites.

Parameters

  filename | The name of the file to open.
  index_tbl | The offsets of each of the sprites.
  needs_palette_remap | Whether the colours in the GRF file need a palette remap.

Returns
  The number of loaded sprites.

Definition at line 83 of file gfxinit.cpp.

References BASESET_DIR, Debug, SpriteFile::GetContainerVersion(), LoadNextSprite(), OpenCachedSpriteFile(), RandomAccessFile::ReadByte(), and ReadGRFSpriteOffsets().

Referenced by LoadSpriteTables().

## ◆ LoadSpriteTables()

static void LoadSpriteTables | ( |  | ) |
| static

Actually load the sprite tables.

Definition at line 148 of file gfxinit.cpp.

References _grfconfig, _landscape_spriteindexes, _settings_game, MD5File::filename, BaseSet< T, Tnum_files, Tsearch_in_tars >::files, GameSettings::game_creation, BaseMedia< GraphicsSet >::GetUsedSet(), GFT_ARCTIC, GFT_BASE, GFT_LOGOS, InitializeUnicodeGlyphMap(), GameCreationSettings::landscape, LoadGrfFile(), LoadGrfFileIndexed(), PAL_DOS, and GraphicsSet::palette.

Referenced by GfxLoadSprites().

## ◆ RealChangeBlitter()

static void RealChangeBlitter | ( | const std::string_view | repl_blitter | ) |
| static

Definition at line 219 of file gfxinit.cpp.

## ◆ SwitchNewGRFBlitter()

static bool SwitchNewGRFBlitter | ( |  | ) |
| static

Check blitter needed by NewGRF config and switch if needed.

Returns
  False when nothing changed, true otherwise.

< 0: no support, 1: do support, 2: both

Definition at line 245 of file gfxinit.cpp.

References _blitter_autodetected, _display_opt, _grfconfig, GraphicsSet::blitter, BLT_32BPP, DO_FULL_ANIMATION, GCF_INIT_ONLY, GCS_DISABLED, GCS_NOT_FOUND, BlitterFactory::GetBlitterFactory(), BlitterFactory::GetCurrentBlitter(), VideoDriver::GetInstance(), Blitter::GetName(), BaseMedia< GraphicsSet >::GetUsedSet(), GRFP_BLT_32BPP, HasBit(), IsInsideMM(), GRFConfig::next, VideoDriver::QueueOnMainThread(), and S8BPP_NONE.

Referenced by CheckBlitter(), and GfxLoadSprites().

## Variable Documentation

## ◆ _graphics_file_names

const char* const _graphics_file_names[] = { "base", "logos", "arctic", "tropical", "toyland", "extra" }
| static

Names corresponding to the GraphicsFileType.

Definition at line 459 of file gfxinit.cpp.

## ◆ _landscape_spriteindexes

constexpr std::span<const std::pair<SpriteID, SpriteID> > _landscape_spriteindexes[]
| staticconstexpr

Initial value:
= {
_landscape_spriteindexes_arctic,
_landscape_spriteindexes_tropic,
_landscape_spriteindexes_toyland,
}

Offsets for loading the different "replacement" sprites in the files.

Definition at line 33 of file gfxinit.cpp.

Referenced by LoadSpriteTables().