2009-04-15 14:03:31 +00: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 11:14:13 +00:00
*/
2017-07-13 11:26:03 +03:00
# pragma once
# include "gui/Fonts.h"
# include "../lib/GameConstants.h"
# include "gui/Geometries.h"
2009-04-16 11:14:13 +00:00
struct SDL_Surface ;
class CGHeroInstance ;
class CGTownInstance ;
class CHeroClass ;
struct SDL_Color ;
2009-07-20 01:47:49 +00:00
struct InfoAboutHero ;
2009-07-20 02:56:35 +00:00
struct InfoAboutTown ;
2010-12-19 14:39:56 +00:00
class CGObjectInstance ;
2014-01-02 23:48:38 +00:00
class ObjectTemplate ;
2014-03-10 16:00:58 +00:00
class CAnimation ;
2010-12-19 14:39:56 +00:00
2012-12-19 17:24:53 +00: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 01:47:49 +00:00
2011-02-22 11:52:36 +00:00
/// Handles fonts, hero images, town images, various graphics
2009-04-16 11:14:13 +00:00
class Graphics
{
2013-04-22 19:51:22 +00:00
void addImageListEntry ( size_t index , std : : string listName , std : : string imageName ) ;
2016-10-18 10:31:31 +03:00
void initializeBattleGraphics ( ) ;
void loadPaletteAndColors ( ) ;
2016-11-08 00:15:46 +03:00
2016-11-08 00:19:53 +03:00
void loadHeroAnimations ( ) ;
//loads animation and adds required rotated frames
std : : shared_ptr < CAnimation > loadHeroAnimation ( const std : : string & name ) ;
void loadHeroFlagAnimations ( ) ;
//loads animation and adds required rotated frames
std : : shared_ptr < CAnimation > loadHeroFlagAnimation ( const std : : string & name ) ;
void loadErmuToPicture ( ) ;
void loadFogOfWar ( ) ;
2016-10-18 10:31:31 +03:00
void loadFonts ( ) ;
void initializeImageLists ( ) ;
2009-04-16 11:14:13 +00:00
public :
2009-08-17 08:50:31 +00:00
//Fonts
static const int FONTS_NUMBER = 9 ;
2016-11-08 00:19:53 +03:00
std : : array < std : : shared_ptr < IFont > , FONTS_NUMBER > fonts ;
2016-10-18 10:31:31 +03:00
2009-04-16 11:14:13 +00: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 10:31:31 +03:00
SDL_Color * neutralColorPalette ;
2009-06-30 15:36:12 +00:00
2016-10-18 10:31:31 +03:00
std : : shared_ptr < CAnimation > heroMoveArrows ;
2016-11-08 00:19:53 +03:00
// [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
std : : map < std : : string , std : : shared_ptr < CAnimation > > heroAnimations ;
std : : vector < std : : shared_ptr < CAnimation > > heroFlagAnimations ;
// [boat type: 0 .. 2] //added group 10: up - left, 11 - left and 12 - left down // 13 - up-left standing; 14 - left standing; 15 - left down standing
std : : array < std : : shared_ptr < CAnimation > , 3 > boatAnimations ;
std : : array < std : : vector < std : : shared_ptr < CAnimation > > , 3 > boatFlagAnimations ;
//all other objects (not hero or boat)
std : : map < std : : string , std : : shared_ptr < CAnimation > > mapObjectAnimations ;
std : : shared_ptr < CAnimation > fogOfWarFullHide ;
std : : shared_ptr < CAnimation > fogOfWarPartialHide ;
2010-12-19 14:39:56 +00:00
2013-04-22 19:51:22 +00:00
std : : map < std : : string , JsonNode > imageLists ;
2010-08-18 14:24:30 +00:00
//towns
2011-12-13 21:23:17 +00: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 11:14:13 +00: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
2016-11-10 14:03:56 +03:00
2009-04-16 11:14:13 +00:00
//functions
2016-10-18 10:31:31 +03:00
Graphics ( ) ;
2016-11-25 15:45:09 +03:00
~ Graphics ( ) ;
2013-04-22 19:51:22 +00:00
2016-10-18 10:31:31 +03:00
void load ( ) ;
void blueToPlayersAdv ( SDL_Surface * sur , PlayerColor player ) ; //replaces blue interface colour with a color of player
2016-11-08 00:19:53 +03:00
std : : shared_ptr < CAnimation > getAnimation ( const CGObjectInstance * obj ) ;
std : : shared_ptr < CAnimation > getAnimation ( const ObjectTemplate & info ) ;
2009-04-16 11:14:13 +00:00
} ;
extern Graphics * graphics ;