Skip to content
Snippets Groups Projects
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