-
vautrin33u authoredvautrin33u authored
graphisme.h 4.47 KiB
/**
* \file graphique.h
* \brief Entête du module des fonctions gérant les graphismes du jeu
* \author Guillaume Vautrin
* \version 1.0
* \date 4 Nobembre 2020
*/
#ifndef GRAPHISME_H
#define GRAPHISME_H
#include "logique.h"
#include "constantes.h"
struct textures_s{
SDL_Texture* menu; /*!< Texture liée à l'image du fond du menu. */
SDL_Texture* fond; /*!< Texture liée à l'image du fond de l'écran. */
SDL_Texture* joueur ; /* Texture du joueur*/
SDL_Texture* comptoire ; /*< Texture des comptoires */
SDL_Texture* envoi ; /*< Tableau de texture de la zone d'envoi */
SDL_Texture* four ; /*< Tableau de texture du four */
SDL_Texture* lavabo ; /*< Tableau de texture du frigo */
SDL_Texture* poubelle ; /*< Texture de la poubelle */
SDL_Texture* frigo ; /*< Tableau de texture du frigo */
SDL_Texture* ingredient ; /*< textures des ingredients */
TTF_Font* police; /*Texture de la police d'écriture*/
};
/**
* \brief Type qui correspond aux textures du jeu
*/
typedef struct textures_s textures_t;
SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer);
SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b) ;
SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color);
void render_texte(SDL_Renderer *renderer, SDL_Rect zone_texte, SDL_Texture* texte);
/**
* \brief La fonction nettoie les textures
* \param textures les textures
*/
void clean_textures(textures_t *textures);
/**
* @brief Nettoyage des éléments graphiques en fin de jeu
*
* @param renderer
* @param textures
* @param fenetre
*/
void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Window *fenetre);
/**
* \brief La fonction initialise les texures
* \param renderer la surface correspondant à l'écran de jeu
* \param textures les textures du jeu
* \param font la police du texte
*/
void init_textures (SDL_Renderer *renderer, textures_t *textures, TTF_Font *font);
/**
* @brief Applique une texture sur un sprite
*
* @param renderer surface écran de jeu
* @param tex SDL_Texture du sprite
* @param sprite données du sprite
*/
void apply_sprite (SDL_Renderer *renderer, SDL_Texture *tex, sprite_t sprite);
/**
* @brief Applique tous les éléments graphiques sur le renderer
*
* @param renderer surface de l'écran de jeu
* @param textures textures des sprites
* @param world données du monde dont les sprites
*/
void apply_graphics (SDL_Renderer *renderer, textures_t *textures, world_t *world);
/**
* @brief Applique tous les éléments du mobilier sur le renderer
*
* @param renderer
* @param textures
* @param world Donne accès aux sprite du mobilier
*/
void apply_mobilier (SDL_Renderer* renderer, textures_t* textures, world_t* world);
/**
* @brief Applique tous les éléments textuels sur le renderer
*
* @param renderer
* @param stock état des stocks et score
* @param textures
*/
void apply_texte (SDL_Renderer* renderer, stock_t* stock, textures_t* textures);
/**
* @brief Applique les ingrédients en jeu sur le renderer
*
* @param renderer
* @param textures textures du jeu
* @param ingredients données concernant les ingrédients en jeu
*/
void apply_ingredients (SDL_Renderer* renderer, textures_t* textures, sprite_t* ingredients);
/**
* @brief Créer un objet SDL_rect
*
* @param x abscisse
* @param y ordonnée
* @param w largeur
* @param h hauteur
* @return const SDL_Rect*
*/
SDL_Rect create_SDL_rect (int x, int y, int w, int h);
/**
* @brief Créer un SDL_rect retournant un rectangle de la taille d'un sprite issue d'une image (SOURCE)
*
* @param texture
* @param x position abscisse du rectangle à représenter
* @param y position ordonné du rectangle à représenter
* @param h hauteur du rectangle à représenter
* @param w largeur du rectangle à représenter
* @return SDL_Rect représentant l'image source tel quel
*/
SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture, int x, int y, int h, int w);
/**
* @brief Créer un SDL_rect selon les données d'un sprite (DEST)
*
* @param sprite
* @return const SDL_Rect*
*/
SDL_Rect create_SDL_rect_from_sprite (sprite_t * sprite);
/**
* @brief mets à jour les éléments graphique de la fenêtre de jeu
*
* @param renderer
* @param world données de jeu
* @param textures textures disponibles
*/
void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textures);
#endif