main fonctionnel vers menu principal

merge-requests/2/merge
Mathis RIBEMONT 4 years ago
parent be2734a793
commit da87ea716e

@ -1,13 +1,62 @@
#include <stdio.h>
#include <stdlib.h>
#include "engine/GeneralState.h"
#include "view/MainMenu.h"
#include "engine/FontLoader.h"
int main(int argc, char const *argv[]) {
GeneralState generalState = GS_MainMenu;
GeneralState generalState;
SDL_Window* window = NULL;
SDL_Rect windowSize = {10, 10, 900, 900};
SDL_Renderer* renderer = NULL;
int statut = EXIT_FAILURE;
if(SDL_Init(SDL_INIT_VIDEO) != 0) {
fprintf(stderr, "Error : %s\n", SDL_GetError());
goto Quit;
}
window = SDL_CreateWindow("Pontu",windowSize.x, windowSize.y, windowSize.w, windowSize.h, SDL_WINDOW_SHOWN);
if (!window)
{
fprintf(stderr, "Error : %s\n", SDL_GetError());
goto Quit;
}
renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
if(!renderer)
{
fprintf(stderr, "Erreur : %s", SDL_GetError());
goto Quit;
}
if(TTF_Init()==-1) {
printf("TTF_Init: %s\n", TTF_GetError());
exit(2);
}
FontHandler fontHandler = loadFonts();
generalState = GS_Quit;
while(generalState != GS_Quit){
switch (generalState) {
case GS_MainMenu:
mainMenu(renderer,window,&generalState, fontHandler);
break;
}
}
return 0;
statut = EXIT_SUCCESS;
Quit:
freeFonts(fontHandler);
if(renderer != NULL) {
SDL_DestroyRenderer(renderer);
}
if(window != NULL) {
SDL_DestroyWindow(window);
}
SDL_Quit();
return statut;
}

@ -9,4 +9,6 @@
P_Button* drawMainMenu(SDL_Renderer* renderer,const FontHandler fontHandler, unsigned int* nb, const SDL_Rect* windowSize);
int mainMenu(SDL_Renderer * renderer,SDL_Window * window, GeneralState * generalState,FontHandler fontHandler)
#endif

@ -1,7 +1,14 @@
#include "view/MainMenu.h"
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <stdio.h>
#include "engine/Button.h"
#include "engine/FontLoader.h"
#include "view/MainMenu.h"
#include "engine/GeneralState.h"
void quit(struct P_button* buttonCaller){
*((bool*)(buttonCaller->arg)) = true;
*((GeneralState*)(buttonCaller->arg)) = GS_Quit;
}
P_Button* drawMainMenu(SDL_Renderer* renderer,const FontHandler fontHandler, unsigned int* nb, const SDL_Rect* windowSize)
@ -55,3 +62,59 @@ P_Button* drawMainMenu(SDL_Renderer* renderer,const FontHandler fontHandler, uns
SDL_RenderPresent(renderer);
return buttons;
}
int mainMenu(SDL_Renderer * renderer,SDL_Window * window, GeneralState * generalState,FontHandler fontHandler){
int statut = EXIT_FAILURE;
char* path = "../rsrc/img/Lenna.png";
//Initialisation
P_Button* buttons = NULL;
unsigned int nb = 0;
SDL_SetRenderDrawColor(renderer, 0,0,0,0);
SDL_RenderClear(renderer);
SDL_Rect rect = {.x = 0, .y = 0, .w = 0, .h = 0};
SDL_GetWindowSize(window,&(rect.w),&(rect.h));
if(!(buttons = drawMainMenu(renderer,fontHandler,&nb,&rect))){
fprintf(stderr, "Le menu principale ne s'est pas déssiné correctement\n");
return statut;
}
SDL_Event event;
buttons[2].arg = generalState;
while(*generalState != GS_Quit)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
*generalState = GS_Quit;
break;
case SDL_MOUSEBUTTONUP:
if(isHover(buttons,event.button.x,event.button.y))
printf("Nouvelle partie\n");
if(isHover(&(buttons[2]),event.motion.x,event.motion.y)){
buttons[2].onClick(&(buttons[2]));
break;
}
break;
case SDL_MOUSEMOTION:
isHover(&(buttons[0]),event.motion.x,event.motion.y);
isHover(&(buttons[1]),event.motion.x,event.motion.y);
isHover(&(buttons[2]),event.motion.x,event.motion.y);
break;
default:
break;
}
}
drawButtonOnRenderer(renderer,&(buttons[0]));
drawButtonOnRenderer(renderer,&(buttons[1]));
drawButtonOnRenderer(renderer,&(buttons[2]));
SDL_RenderPresent(renderer);
SDL_Delay(20);
}
return 0;
}

Loading…
Cancel
Save