Merge branch 'master' of gitlab.iut-clermont.uca.fr:/maribemont/projet-tut

merge-requests/1/merge
Mathis RIBEMONT 4 years ago
commit de9b79fea5

@ -2,9 +2,14 @@
// #include "../test/testFontLoader.c"
// #include "../test/testAudioHandler.c"
// #include "../test/testGenerateurTexture.c"
#include "../test/testButton.c"
/*#include "../test/testButton.c"
#include "../test/testTextInput.c"
#include "../test/testConnectionMenu.c"*/
/*#include "../test/testMenuEndGame.c"
/*#include "../test/testGameInterface.c"
#include "../test/testConnectionMenu.c"*/
#include "../test/testDrawMainMenu.c"
/*
This file is meant to be modified (used only to called other tests functions)
*/
@ -16,6 +21,11 @@ int main(/*int argc, char *argv[]*/) {
//testGenerateurTexture();
//testTextInput();
//testButtonTextureLoader();
//testConnectionMenu();
//testMenuEndGame();
//testGameInterface();
//testConnectionMenu();
testDrawMainMenu();
return 0;
}

@ -84,6 +84,9 @@ typedef struct {
bool canPlayAudio; ///< true if audio could be initialized, else false. It shouldn't be changed manually.
Mix_Music* musics[NB_MUSIC_DEFINED]; ///< Paths to the musics
Mix_Chunk* sfx[NB_AUDIO_DEFINED - NB_MUSIC_DEFINED - 1]; ///< Paths to the SFX
int volMusic; ///< The current volume of the music
int volSFX; ///< The current volume of the SFX
int masterVol;
} AudioHandler;
/**
@ -93,13 +96,17 @@ typedef struct {
* \return A new AudioHandler.
* \warning The program won't know if opening the audio device and the files failed.
*/
AudioHandler newAudioHandler(int volMusic, int volSFX);
AudioHandler newAudioHandler(int masterVol, int volMusic, int volSFX);
/**
* \brief Changes volume for the SFX.
* \param[in] volSFX The new volume for the SFX.
*/
void changeSFXVol(int volSFX);
void changeSFXVol(AudioHandler* ah, int volSFX);
void changeMusicVol(AudioHandler* ah, int volMusic);
void changeMasterVol(AudioHandler* ah, int masterVol);
/**
* \brief Frees the music and SFX, and un-initializes the audio.

@ -4,7 +4,8 @@
#define FONT_PATH rsrc/font/
#define MACRO_FOR_ALL_FONTS(M) \
M(retro)
M(retro)\
M(Curvilingus)
#define MACRO_FONT_ENUM_GEN(E) FONT_##E,
#include <SDL2/SDL_ttf.h>

@ -3,6 +3,7 @@
* \brief Basic TextInput
* \author Allan Point
* \date 05/01/2022
* \copyright CECILL
*/
#ifndef TEXT_INPUT_INCLUDED
@ -21,7 +22,6 @@
* \typedef
* \brief A text-inputable zone representation
* \author Allan Point
* \copyright CECILL
* \date 05/01/2022
*/
typedef struct
@ -41,7 +41,6 @@ typedef struct
* \return True if all goes right. Else false.
* \author Allan Point
* \date 05/01/2022
* \copyright CECILL
*/
bool addCharacterToInputTextValueAtCursor(TextInput* textInput, const char charToAdd);
@ -51,7 +50,6 @@ bool addCharacterToInputTextValueAtCursor(TextInput* textInput, const char charT
* \return True if all goes right. Esle false.
* \author Allan Point
* \date 05/01/2022
* \copyright CECILL
*/
bool removeCharacterToInputTextValueAtCursor(TextInput* textInput);
@ -62,7 +60,6 @@ bool removeCharacterToInputTextValueAtCursor(TextInput* textInput);
* \return True on success. Esle false;
* \author Allan POINT
* \date 05/01/2022
* \copyright CECILL
*/
bool drawTextInputOnRenderer(SDL_Renderer* renderer, const TextInput* textInput);
@ -81,9 +78,8 @@ bool drawTextInputOnRenderer(SDL_Renderer* renderer, const TextInput* textInput)
* \return True on succsess. Esle false.
* \author Allan POINT
* \date 05/01/2022
* \copyright CECILL
*/
bool initTextInput(TextInput* textInput, const SDL_Rect* size, const SDL_Color* textColor, const TTF_Font* textFont);
bool initTextInput(TextInput* textInput, const SDL_Rect* size, const SDL_Color* textColor, TTF_Font* textFont);
/*
* \brief Free what is needed to be free and clear all data in the TextInput

@ -5,6 +5,18 @@
#include <SDL2/SDL_ttf.h>
#include "engine/FontLoader.h"
typedef enum {
POSX_LEFT,
POSX_CENTER,
POSX_RIGHT
} POSITIONX_TYPE;
typedef enum {
POSY_TOP,
POSY_CENTER,
POSY_BOTTOM
} POSITIONY_TYPE;
typedef struct
{
char* text;
@ -13,7 +25,7 @@ typedef struct
SDL_Texture* texture;
}TextLabel;
TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer);
TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer, const POSITIONX_TYPE posXType, const POSITIONY_TYPE posYType);
void freeTextLabel(TextLabel* label);
void drawTextLabel(SDL_Renderer* renderer, TextLabel* label);

@ -21,6 +21,7 @@ typedef struct {
char pseudo[PSEUDO_LENMAX]; //< The player's pseudo
SDL_Color color; //< The player's Piece' color
int rank; //< The player's rank (0 if the player isn't out yet)
int eliminationTurn; //< When the player has been eliminated (0 if the player isn't out yet)
} Player;
/**

@ -0,0 +1,13 @@
#ifndef MENU_CONNECTION_INCLUDED
#define MENU_CONNECTION_INCLUDED
#include <SDL2/SDL.h>
#include <string.h>
#include "engine/Button.h"
#include "engine/TextLabel.h"
#include "engine/TextInput.h"
#include "engine/FontUtils.h"
bool drawMenuConnection(const SDL_Renderer* renderer, TTF_Font* font, int w, int h);
#endif

@ -0,0 +1,4 @@
#include <SDL2/SDL.h>
#include <stdbool.h>
bool drawGameCreationMenu(SDL_Renderer* renderer, TTF_Font* font, int width, int height);

@ -1,10 +0,0 @@
#ifndef MENU_CONNECTION_INCLUDED
#define MENU_CONNECTION_INCLUDED
#include <SDL2/SDL.h>
#include <string.h>
#include "engine/Button.h"
bool drawMenuConnection(const SDL_Renderer* renderer);
#endif

@ -0,0 +1,10 @@
#ifndef MENU_FIN_INCLUDED
#define MENU_FIN_INCLUDED
#include <SDL2/SDL.h>
#include "model/Player.h"
#include "engine/FontLoader.h"
void drawEndGameMenu(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, const SDL_Rect* rect, FontHandler* fontHandler);
#endif // MENU_FIN_INCLUDED

@ -0,0 +1,29 @@
/**
* \file Settings.h
* \brief Settings view
* \author Théotime Maillarbaux
* \date 24/01/2022
*/
#ifndef SETTINGS_H
#define SETTINGS_H
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>
#include "engine/AudioHandler.h"
#include "engine/Button.h"
#include <stdbool.h>
#include "engine/TextureLoader.h"
#include <SDL2/SDL_ttf.h>
#include "engine/TextLabel.h"
/**
* \brief Generates a settings view
* \param[in] renderer The used SDL_Renderer
* \param[in] ah The AudioHandler in use
* \return true if the view could be generated, else false
*/
bool settingsView(SDL_Renderer* renderer, AudioHandler* ah);
#endif // SETTINGS_H

@ -0,0 +1 @@
./curvilingus/Curvilingus.TTF

@ -0,0 +1,16 @@
Free font by Tup Wanders
http://www.tupwanders.nl
Licensed with a Creative Commons attribution license.
If you add to the font, please send me a copy! If you've made fun stuff with the font that you would like to show me, please send me that as well. I like that.
Have fun,
Tuppus
tupwanders@tupwanders.nl
If this font suddenly makes you feel like spending huge amounts of money, please do so by going to Paypal and transferring your fortune to tupwanders@tupwanders.nl
And if this font suddenly makes feel like spending small or fairly large amounts of money, you can do that via Paypal as well.
More fonts here:
http://www.dafont.com/tup-wanders.d2245

@ -41,7 +41,7 @@ int fadeOut(void* args) {
// Global functions
AudioHandler newAudioHandler(int volMusic, int volSFX) {
AudioHandler newAudioHandler(int masterVol, int volMusic, int volSFX) {
AudioHandler audioHandler;
int nb_SFX = NB_AUDIO_DEFINED - NB_MUSIC_DEFINED - 1;
@ -57,6 +57,7 @@ AudioHandler newAudioHandler(int volMusic, int volSFX) {
}
audioHandler.canPlayAudio = true;
audioHandler.masterVol = masterVol;
fprintf(stderr,"Musics: %d\nSFX: %d\n",NB_MUSIC_DEFINED,nb_SFX);
@ -70,7 +71,7 @@ AudioHandler newAudioHandler(int volMusic, int volSFX) {
}
}
Mix_VolumeMusic(volMusic);
changeMusicVol(&audioHandler, volMusic);
// Initializing SFX
Mix_AllocateChannels(NBCHANNELS);
@ -85,14 +86,25 @@ AudioHandler newAudioHandler(int volMusic, int volSFX) {
}
}
changeSFXVol(volSFX);
changeSFXVol(&audioHandler, volSFX);
changeMasterVol(&audioHandler, masterVol);
return audioHandler;
}
void changeSFXVol(int volSFX) {
for (int i = 0; i < NBCHANNELS; i++) {
Mix_Volume(i, volSFX);
}
void changeMusicVol(AudioHandler* ah, int volMusic) {
ah->volMusic = volMusic;
Mix_VolumeMusic(ah->volMusic * ah->masterVol * 0.1);
}
void changeSFXVol(AudioHandler* ah, int volSFX) {
ah->volSFX = volSFX;
Mix_Volume(-1, ah->volSFX * ah->masterVol * 0.1);
}
void changeMasterVol(AudioHandler* ah, int masterVol) {
ah->masterVol = masterVol;
Mix_VolumeMusic(ah->volMusic * ah->masterVol * 0.1);
Mix_Volume(-1, ah->volSFX * ah->masterVol * 0.1);
}
void freeAudioHandler(AudioHandler* audioHandler) {

@ -138,6 +138,7 @@ bool drawTextInputOnRenderer(SDL_Renderer* renderer, const TextInput* textInput)
return false;
}
textTexture = SDL_CreateTextureFromSurface(renderer, textRendered);
SDL_FreeSurface(textRendered);
if(textTexture == NULL)
{
fprintf(stderr, "WARNING: Can't create texture from surface: %s\n", SDL_GetError());
@ -159,10 +160,11 @@ bool drawTextInputOnRenderer(SDL_Renderer* renderer, const TextInput* textInput)
fprintf(stderr, "WARNING: Can't copy the text on renderer");
return false;
}
SDL_DestroyTexture(textTexture);
return true;
}
bool initTextInput(TextInput* textInput, const SDL_Rect* size, const SDL_Color* textColor, const TTF_Font* font)
bool initTextInput(TextInput* textInput, const SDL_Rect* size, const SDL_Color* textColor, TTF_Font* font)
{
if(textInput == NULL)
{

@ -3,7 +3,7 @@
#include "engine/TextureLoader.h"
TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer) {
TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer, const POSITIONX_TYPE posXType, const POSITIONY_TYPE posYType) {
TextLabel label = {
.color = *color,
.texture = NULL
@ -11,7 +11,7 @@ TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Col
label.text = (char*) malloc(sizeof(char)*strlen(text));
strcpy(label.text, text);
{
SDL_Surface* surface = TTF_RenderText_Solid(font, label.text, label.color);
@ -28,12 +28,39 @@ TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Col
SDL_FreeSurface(surface);
}
label.textZone.x = pos->x;
label.textZone.y = pos->y;
label.textZone.w = calculateStringPixelLenght(font, label.text);
label.textZone.h = TTF_FontHeight(font);
switch (posXType)
{
case POSX_LEFT:
label.textZone.x = pos->x;
break;
case POSX_CENTER:
label.textZone.x = pos->x-label.textZone.w/2;
break;
case POSX_RIGHT:
label.textZone.x = pos->x-label.textZone.w;
break;
default:
break;
}
switch (posYType)
{
case POSY_TOP:
label.textZone.y = pos->y;
break;
case POSY_CENTER:
label.textZone.y = pos->y-label.textZone.h/2;
break;
case POSY_BOTTOM:
label.textZone.y = pos->y-label.textZone.h;
break;
default:
break;
}
return label;
}

@ -5,6 +5,7 @@ Player newPlayer(const char pseudo[PSEUDO_LENMAX], const SDL_Color color) {
strcpy(player.pseudo, pseudo);
player.color = color;
player.rank = 0;
player.eliminationTurn = 0;
return player;
}

@ -0,0 +1,41 @@
#include "view/ConnectionMenu.h"
bool drawMenuConnection(const SDL_Renderer* renderer, TTF_Font* font, int w, int h)
{
if(font == NULL)
{
fprintf(stderr, "WARNING: Font can't be null\n");
return false;
}
TextInput pseudoInput;
P_Button connectionButton;
SDL_Color black = {255,255,255,255};
SDL_Rect pseudoInputRect = {50, h*0.35, 50, 20};
char title[] = "Connexion";
SDL_Point titlePos = {.x=w*0.05, .y=h*0.1};
TextLabel titleLabel = createTextLabel(title, &titlePos, &black, font, renderer);
char pseudoText[] = "Pseudonyme: ";
SDL_Point pseudoPos = {.x=w*0.05, .y=h*0.35};
TextLabel pseudoLabel = createTextLabel(pseudoText, &pseudoPos, &black, font, renderer);
char colorText[] = "Couleur: ";
SDL_Point colorPos = {.x=w*0.05, .y=h*0.55};
TextLabel colorLabel = createTextLabel(colorText, &colorPos, &black, font, renderer);
if(!initTextInput(&pseudoInput, &pseudoInputRect, NULL, font))
{
fprintf(stderr, "WARNING: Can't init TextInput\n");
return false;
}
drawTextLabel(renderer, &titleLabel);
drawTextLabel(renderer, &pseudoLabel);
drawTextLabel(renderer, &colorLabel);
return true;
}

@ -1,17 +0,0 @@
#include "view/MenuConnection.h"
bool drawMenuConnection(const SDL_Renderer* renderer)
{
const char title[] = "Connexion";
const unsigned int titleHeightPercetange = 8;
const char pseudoLabel[] = "Pseudonyme: ";
const unsigned int pseudoLabelHeightPercentage = 16;
const char colorLabel[] = "Couleur: ";
const unsigned int colorLabelHeihetPercentage = 18;
return true;
}

@ -0,0 +1,46 @@
#include "view/MenuEndGame.h"
#include <SDL2/SDL_ttf.h>
#include "engine/TextLabel.h"
void drawEndGameMenu(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, const SDL_Rect* rect, FontHandler* fontHandler) {
SDL_SetRenderDrawColor(renderer, 220,220,220,255);
SDL_RenderFillRect(renderer, rect);
{ // Titre
SDL_Point pos = {rect->x+rect->w/2, rect->y+rect->h/100};
SDL_Color color = {0,0,0,0};
TextLabel titre = createTextLabel("Scores", &pos, &color, fontHandler->fonts[FONT_retro], renderer, POSX_CENTER, POSY_TOP);
drawTextLabel(renderer, &titre);
freeTextLabel(&titre);
}
{// Joueurs
char* text;
for (size_t i=0; i<nbPlayers; ++i) {
SDL_Point pos = {rect->x+rect->w*0.05, rect->y+(players[i].rank+1)*rect->h/10+rect->y+rect->h/100};
SDL_Color color = {0,0,0,0};
text = (char*) realloc(text, sizeof(char)*(4+strlen(players[i].pseudo)));// potentialy one character wider than necesarry
sprintf(text, "%ld. %s", i, players[i].pseudo);
TextLabel joueur = createTextLabel(text, &pos, &color, fontHandler->fonts[FONT_retro], renderer, POSX_LEFT, POSY_TOP);
drawTextLabel(renderer, &joueur);
freeTextLabel(&joueur);
pos.x = rect->x+rect->w*0.95;
text = (char*) realloc(text, sizeof(char*) * 10);
sprintf(text, "Tour: %d", players[i].eliminationTurn);
joueur = createTextLabel(text, &pos, &color, fontHandler->fonts[FONT_retro], renderer, POSX_RIGHT, POSY_TOP);
drawTextLabel(renderer, &joueur);
freeTextLabel(&joueur);
}
free(text);
}
}

@ -0,0 +1,162 @@
#include "view/Settings.h"
// Local functions
typedef struct {
TTF_Font* font;
SDL_Texture* textures[4];
TextLabel* labels[4];
} Components;
void reduceMasterVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->masterVol > 0) {
changeMasterVol(ah,ah->masterVol - 1);
}
}
void increaseMasterVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->masterVol < 10) {
changeMasterVol(ah,ah->masterVol + 1);
}
}
void reduceMusicVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->volMusic > 0) {
changeMusicVol(ah,ah->volMusic - 10);
}
}
void increaseMusicVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->volMusic < 100) {
changeMusicVol(ah,ah->volMusic + 10);
}
}
void reduceSFXVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->volSFX > 0) {
changeSFXVol(ah,ah->volSFX - 10);
}
}
void increaseSFXVol(P_Button* caller) {
AudioHandler* ah = (AudioHandler*) caller->arg;
if (ah->volSFX < 100) {
changeSFXVol(ah,ah->volSFX + 10);
}
}
void destroyView(P_Button* caller) {
Components* components = (Components*) caller->arg;
TTF_CloseFont(components->font);
for (int i = 3; i >= 0; i--) {
if (components->textures[i] != NULL) {
SDL_DestroyTexture(components->textures[i]);
}
if (components->labels[i] != NULL) {
freeTextLabel(components->labels[i]);
}
}
}
// Global functions
bool settingsView(SDL_Renderer* renderer, AudioHandler* ah) {
SDL_Texture* textures[4];
TextLabel* labels[4];
SDL_Rect bg = {150,0,450,600};
SDL_Rect title = {150,0,450,50};
SDL_Rect masterVol = {150,50,450,100};
SDL_Rect volMusic = {150,150,450,200};
SDL_Rect volSFX = {150,250,450,300};
SDL_Point titlePoint = {150,50};
SDL_Point masterVolPoint = {150,100};
SDL_Point volMusicPoint = {150,200};
SDL_Point volSFXPoint = {150,300};
int font_size = 50;
int size = font_size*100/88;
TTF_Font* font = TTF_OpenFont("../../rsrc/font/retro/retro.TTF", size);
SDL_Color cyan = {24, 174, 219, 255};
SDL_Color black = {0,0,0,255};
P_Button button;
int sizex[3];
int sizey[3];
textures[0] = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET,300,600);
textures[1] = createGenericButtonTexture("-",font,font_size,black,cyan,0,3,&sizex[0],&sizey[0],renderer);
textures[2] = createGenericButtonTexture("+",font,font_size,black,cyan,0,3,&sizex[1],&sizey[1],renderer);
textures[3] = createGenericButtonTexture("Retour",font,font_size,black,cyan,0,3,&sizex[2],&sizey[2],renderer);
if (0 != SDL_SetRenderTarget(renderer,textures[0])) {
// TODO destroyTexture
return false;
}
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); // white
SDL_RenderFillRect(renderer,&bg);
SDL_SetRenderDrawColor(renderer, cyan.r, cyan.g, cyan.b, cyan.a); // cyan
SDL_RenderFillRect(renderer,&title);
SDL_RenderFillRect(renderer,&masterVol);
SDL_RenderFillRect(renderer,&volMusic);
SDL_RenderFillRect(renderer,&volSFX);
*labels[0] = createTextLabel("Volume", &titlePoint, &black,font,renderer,POSX_CENTER,POSY_CENTER);
*labels[1] = createTextLabel("Principal", &masterVolPoint,&black,font,renderer,POSX_CENTER,POSY_CENTER);
*labels[2] = createTextLabel("Musique", &volMusicPoint, &black,font,renderer,POSX_CENTER,POSY_CENTER);
*labels[3] = createTextLabel("Effets spéciaux",&volSFXPoint, &black,font,renderer,POSX_CENTER,POSY_CENTER);
for (int i = 0; i < 3; i++) {
drawTextLabel(renderer,labels[i]);
}
button = createButton(textures[1],textures[1],150,100,sizex[0],sizey[0],&reduceMasterVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[2],textures[2],400,100,sizex[1],sizey[1],&increaseMasterVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[1],textures[1],150,200,sizex[0],sizey[0],&reduceMusicVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[2],textures[2],400,200,sizex[1],sizey[1],&increaseMusicVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[1],textures[1],150,300,sizex[0],sizey[0],&reduceSFXVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[2],textures[2],400,300,sizex[1],sizey[1],&increaseSFXVol);
button.arg = (void*) ah;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
button = createButton(textures[3],textures[3],150,500,sizex[2],sizey[2],&destroyView);
Components components = {
.font = font,
.textures = textures,
.labels = labels
};
button.arg = (void*) &components;
if (!drawButtonOnRenderer(renderer,&button)) {
return false;
}
return true;
}

@ -0,0 +1,98 @@
#include <SDL2/SDL.h>
#include <stdio.h>
#include "view/ConnectionMenu.h"
#include "engine/FontLoader.h"
#include "engine/TextInput.h"
int testConnectionMenu(void) {
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
SDL_Texture* picture;
TextInput textInput;
int statut = EXIT_FAILURE;
char* path = "rsrc/img/Lenna.png";
int i=0;
int w, h;
if(0 != SDL_Init(SDL_INIT_VIDEO))
{
fprintf(stderr, "Erreur SDL_INIT: %s\n", SDL_GetError());
goto Quit;
}
//fenetre
window = SDL_CreateWindow("Fenêtre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640,480, SDL_WINDOW_SHOWN);
if(window == NULL)
{
fprintf(stderr, "Erreur SDL_CreateWindow: %s\n", SDL_GetError());
goto Quit;
}
//rendu
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if(renderer == NULL)
{
fprintf(stderr, "Erreur SDL_CreateRenderer: %s\n", SDL_GetError());
goto Quit;
}
//Fonts
if(TTF_Init() == -1)
{
fprintf(stderr, "Erreur: TTF_Init: %s\n", TTF_GetError());
goto Quit;
}
if(0 != SDL_SetRenderDrawColor(renderer, 0,0,0,0)) //choisi la couleur avec laquelle travailler
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
if(0 != SDL_RenderClear(renderer)) //efface le rendu en le repeignant avec la couleur choisi
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
if(0 != SDL_SetRenderDrawColor(renderer, 255,255,255,255)) //choisi la couleur avec laquelle travailler
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
SDL_bool quit = SDL_FALSE;
SDL_Event event;
FontHandler fontHandler = loadFonts();
SDL_GetWindowSize(window, &w, &h);
while(!quit)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
quit = SDL_TRUE;
break;
case SDL_MOUSEBUTTONUP:
break;
}
}
drawMenuConnection(renderer, fontHandler.fonts[FONT_retro], w, h);
SDL_RenderPresent(renderer);
SDL_Delay(20);
}
Quit:
freeFonts(fontHandler);
if(renderer != NULL)
SDL_DestroyRenderer(renderer);
if(window != NULL)
SDL_DestroyWindow(window);
TTF_Quit();
SDL_Quit();
return statut;
}

@ -0,0 +1,108 @@
#include "view/MenuEndGame.h"
#include "engine/FontLoader.h"
#include "model/Player.h"
void testMenuEndGame() {
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
SDL_Texture* picture;
int statut = EXIT_FAILURE;
int i=0;
if(0 != SDL_Init(SDL_INIT_VIDEO))
{
fprintf(stderr, "Erreur SDL_INIT: %s\n", SDL_GetError());
goto Quit;
}
//fenetre
window = SDL_CreateWindow("Fenêtre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640,480, SDL_WINDOW_SHOWN);
if(window == NULL)
{
fprintf(stderr, "Erreur SDL_CreateWindow: %s\n", SDL_GetError());
goto Quit;
}
//rendu
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if(renderer == NULL)
{
fprintf(stderr, "Erreur SDL_CreateRenderer: %s\n", SDL_GetError());
goto Quit;
}
//Fonts
if(TTF_Init() == -1)
{
fprintf(stderr, "Erreur: TTF_Init: %s\n", TTF_GetError());
goto Quit;
}
if(0 != SDL_SetRenderDrawColor(renderer, 0,0,0,0)) //choisi la couleur avec laquelle travailler
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
if(0 != SDL_RenderClear(renderer)) //efface le rendu en le repeignant avec la couleur choisi
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
if(0 != SDL_SetRenderDrawColor(renderer, 255,255,255,255)) //choisi la couleur avec laquelle travailler
{
fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError());
goto Quit;
}
SDL_bool quit = SDL_FALSE;
SDL_Event event;
FontHandler fontHandler = loadFonts();
SDL_RenderPresent(renderer);
while(!quit)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
quit = SDL_TRUE;
break;
case SDL_MOUSEBUTTONUP:
break;
}
}
SDL_SetRenderDrawColor(renderer, 255,255,255,255);
SDL_RenderClear(renderer);
SDL_Rect rect = {.x=20, .y=0, .w=300, .h=480};
SDL_Color color = {0,0,0,0};
Player players[] = {newPlayer("Bépo", color), newPlayer("Azerty", color)};
players[0].eliminationTurn = 10;
players[1].eliminationTurn = 10;
players[0].rank = 1;
players[1].rank = 2;
drawEndGameMenu(renderer, players, 2, &rect, &fontHandler);
SDL_RenderPresent(renderer);
SDL_Delay(500);
++i;
SDL_Delay(20);
}
Quit:
freeFonts(fontHandler);
if(renderer != NULL)
SDL_DestroyRenderer(renderer);
if(window != NULL)
SDL_DestroyWindow(window);
TTF_Quit();
SDL_Quit();
}
Loading…
Cancel
Save