This repository has been archived on 2023-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
GINPA/Controleur/menu.h

93 lines
3.3 KiB
C

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include "../Headers/structures.h"
#include "../Vue/creation.h"
/**
* @brief Initialise une structure `Menu` et instancie en même temps une texture de rendus de la bonne taille.
*
* @param menu Le menu à initialiser...
* @return Procédure..
*/
void initialiserMenu(Menu *const menu);
/**
* @brief Détruit les champs dynamique d'un objet `Bouton`.
*
* @param bouton Le bouton à détruire...
* @return Procédure.
*/
void detruireBouton(Bouton *const bouton);
/**
* @brief Détruit une structure `Menu` ainsi que sa texture de rendus associée.
*
* @param menu Le menu à détruire...
* @return Procédure.
*/
void detruireMenu(Menu *const menu);
/**
* @brief Renvoie l'outil sélectionné par l'utilisateur quand il a cliqué sur un bouton.
*
* /!\ Cette fonction ne teste pas si l'utilisateur a cliqué ou non !
*
* @param event Variable d'évènements de la fonction appelante.
* @param menu Le menu qui contient les boutons affichés.
* @return L'outil sélectionné.
*/
Tool whichTool(const sfEvent *const event, const Menu *const menu);
/**
* @brief Ajoute une entrée dans un menu déjà initialisé.
*
* @param menu Le menu dans lequel on ajoute cette entrée.
* @param bouton Le bouton a ajouter qui représente cette entrée.
* @return Procédure.
*/
void ajouterEntreeMenu(Menu *const menu, Bouton *const bouton);
/**
* @brief Affiche le texte descriptif associé à un bouton lors d'un "hovering"
*
* @param event Variable d'évènements de la fonction appelante.
* @param menu Le menu affiché actuellement.
* @param renderTexture La texture de rendus d'origine que l'on va surcharger !
* @param renderSprite Un pointeur sur un le sprite affiché sur la fenêtre.
* @return le Bouton que l'on affiche
*/
Bouton* afficherDescriptionBouton(const sfEvent *const event, const Menu *const menu, sfRenderTexture *const renderTexture, sfSprite **renderSprite);
/**
* @brief Charge une instance de Menu avec certains boutons.
*
* @param menu Le menu à charger !
* @param mode Le mode dans lequel l'affichage des logs s'effectue.
* @param displayEnded Si oui ou non l'affichage des points est terminé.
* @param displayPaused Si oui ou non l'affichage des points est en pause.
* @param currentTool L'outil actuel !
* @return Procédure.
*/
void chargerMenuAffichageLog(Menu *const menu, const Mode mode, const bool displayEnded, const bool displayPaused, const Tool currentTool);
/**
* @brief Met à jour l'affichage du menu en fonction de certains booléens.
*
* /!\ Attention: Cette fonction n'est appelable que sur un Menu déjà instancié et initialisé !
* /!\ Attention: Cette fonction met à jour une texture de rendus mais n'affiche à rien à l'écran !
*
* @param renderTexture La texture de rendus à updater.
* @param menu Le menu à charger !
* @param mode Le mode dans lequel l'affichage des logs s'effectue.
* @param displayEnded Si oui ou non l'affichage des points est terminé.
* @param displayPaused Si oui ou non l'affichage des points est en pause.
* @param currentTool L'outil actuel !
* @return Procédure.
*/
void updateAndDrawMenu(sfRenderTexture *const renderTexture, Menu *const menu, const Mode mode, const bool displayEnded, const bool displayPaused, const Tool currentTool);