2011-12-14 00:23:17 +03:00
# pragma once
2009-04-16 14:14:13 +03:00
2013-04-07 14:52:07 +03:00
# include "gui/Fonts.h"
2011-12-14 00:23:17 +03:00
# include "../lib/GameConstants.h"
2013-04-07 14:52:07 +03:00
# include "gui/Geometries.h"
2009-04-16 14:14:13 +03:00
2009-04-15 17:03:31 +03:00
/*
* Graphics . h , part of VCMI engine
*
* Authors : listed in file AUTHORS in main folder
*
* License : GNU General Public License v2 .0 or later
* Full text of license available in license . txt file , in main folder
*
2009-04-16 14:14:13 +03:00
*/
class CDefEssential ;
struct SDL_Surface ;
class CGHeroInstance ;
class CGTownInstance ;
class CDefHandler ;
class CHeroClass ;
struct SDL_Color ;
2009-07-20 04:47:49 +03:00
struct InfoAboutHero ;
2009-07-20 05:56:35 +03:00
struct InfoAboutTown ;
2010-12-19 16:39:56 +02:00
class CGObjectInstance ;
2014-01-03 02:48:38 +03:00
class ObjectTemplate ;
2014-03-10 19:00:58 +03:00
class CAnimation ;
2010-12-19 16:39:56 +02:00
2012-12-19 20:24:53 +03:00
enum EFonts
{
FONT_BIG , FONT_CALLI , FONT_CREDITS , FONT_HIGH_SCORE , FONT_MEDIUM , FONT_SMALL , FONT_TIMES , FONT_TINY , FONT_VERD
} ;
2009-07-20 04:47:49 +03:00
2011-02-22 13:52:36 +02:00
/// Handles fonts, hero images, town images, various graphics
2009-04-16 14:14:13 +03:00
class Graphics
{
2013-04-22 22:51:22 +03:00
void addImageListEntry ( size_t index , std : : string listName , std : : string imageName ) ;
2016-10-18 09:31:31 +02:00
void initializeBattleGraphics ( ) ;
void loadPaletteAndColors ( ) ;
void loadHeroFlags ( ) ;
void loadHeroFlagsDetail ( std : : pair < std : : vector < CDefEssential * > Graphics : : * , std : : vector < const char * > > & pr , bool mode ) ;
void loadHeroAnims ( ) ;
CDefEssential * loadHeroAnim ( const std : : string & name , const std : : vector < std : : pair < int , int > > & rotations ) ;
void loadErmuToPicture ( ) ;
void loadFonts ( ) ;
void initializeImageLists ( ) ;
2009-04-16 14:14:13 +03:00
public :
2009-08-17 11:50:31 +03:00
//Fonts
static const int FONTS_NUMBER = 9 ;
2012-12-19 20:24:53 +03:00
IFont * fonts [ FONTS_NUMBER ] ;
2016-10-18 09:31:31 +02:00
2009-04-16 14:14:13 +03:00
//various graphics
SDL_Color * playerColors ; //array [8]
SDL_Color * neutralColor ;
SDL_Color * playerColorPalette ; //palette to make interface colors good - array of size [256]
2016-10-18 09:31:31 +02:00
SDL_Color * neutralColorPalette ;
2009-06-30 18:36:12 +03:00
2009-06-17 19:46:16 +03:00
std : : vector < CDefEssential * > flags1 , flags2 , flags3 , flags4 ; //flags blitted on heroes when ,
2016-10-18 09:31:31 +02:00
std : : shared_ptr < CAnimation > heroMoveArrows ;
2012-12-16 16:47:53 +03:00
std : : map < std : : string , CDefEssential * > heroAnims ; // [hero class def name] //added group 10: up - left, 11 - left and 12 - left down // 13 - up-left standing; 14 - left standing; 15 - left down standing
2009-07-06 22:41:27 +03:00
std : : vector < CDefEssential * > boatAnims ; // [boat type: 0 - 3] //added group 10: up - left, 11 - left and 12 - left down // 13 - up-left standing; 14 - left standing; 15 - left down standing
2010-08-16 16:51:31 +03:00
CDefHandler * FoWfullHide ; //for Fog of War
CDefHandler * FoWpartialHide ; //for For of War
2010-12-19 16:39:56 +02:00
2013-04-22 22:51:22 +03:00
std : : map < std : : string , JsonNode > imageLists ;
2012-11-13 14:52:23 +03:00
std : : map < std : : string , CDefEssential * > advmapobjGraphics ;
2010-12-19 16:39:56 +02:00
CDefEssential * getDef ( const CGObjectInstance * obj ) ;
2014-01-03 02:48:38 +03:00
CDefEssential * getDef ( const ObjectTemplate & info ) ;
2010-08-18 17:24:30 +03:00
//towns
2011-12-14 00:23:17 +03:00
std : : map < int , std : : string > ERMUtoPicture [ GameConstants : : F_NUMBER ] ; //maps building ID to it's picture's name for each town type
2009-04-16 14:14:13 +03:00
//for battles
std : : vector < std : : vector < std : : string > > battleBacks ; //battleBacks[terType] - vector of possible names for certain terrain type
std : : map < int , std : : vector < std : : string > > battleACToDef ; //maps AC format to vector of appropriate def names
//functions
2016-10-18 09:31:31 +02:00
Graphics ( ) ;
2013-04-22 22:51:22 +03:00
2016-10-18 09:31:31 +02:00
void load ( ) ;
void blueToPlayersAdv ( SDL_Surface * sur , PlayerColor player ) ; //replaces blue interface colour with a color of player
2009-04-16 14:14:13 +03:00
} ;
extern Graphics * graphics ;