main menu

This commit is contained in:
2023-01-21 14:53:10 +01:00
parent ea300fc007
commit aa8457b46d
6 changed files with 70 additions and 30 deletions
+55 -14
View File
@@ -2,30 +2,71 @@
#include <SDL2/SDL_image.h>
#include "renderer.h"
#include "scaller.h"
#include "text.h"
#define BLINK_FREQUENCY 0.00005
static RenderId_t menuObjects[10];
static unsigned menuObjectsSize = 0;
int menu_render(void){
SDL_Surface* buttonImageSurface = IMG_Load("./assets/img/start.png");
if(buttonImageSurface == NULL){
printf("cannot load");
return -1;
}
RenderObject_t buttonImage;
float buttonScale = 0.3f;
static float blinkDelta = 0;
static bool increaseTextBrightness = false;
static Uint8 textOpacity = 255;
int menu_staticRender(void){
MonitorSize_t size = renderer_getMonitorSize();
float aspectRatio = (float)size.width / size.height;
buttonImage.x = 0.5f;
buttonImage.y = 0.5f;
scaller(buttonImageSurface, buttonScale, &buttonImage.width, &buttonImage.height);
placer(buttonImageSurface, buttonScale, &buttonImage.x, &buttonImage.y);
SDL_Surface* backgroundImageSurface = IMG_Load("./assets/img/menu_bg.png");
if(backgroundImageSurface == NULL){
printf("cannot load background");
return -1;
}
buttonImage.surface = buttonImageSurface;
menuObjects[menuObjectsSize] = renderer_renderObject(buttonImage);
RenderObject_t backgroundImage;
backgroundImage.x = 0;
backgroundImage.y = 0;
backgroundImage.z = 0;
backgroundImage.surface = backgroundImageSurface;
backgroundImage.width = 1;
backgroundImage.height = 1;
menuObjects[menuObjectsSize] = renderer_renderObject(backgroundImage);
++menuObjectsSize;
return 0;
}
int menu_render(float delta){
for(unsigned i = 1; i < menuObjectsSize; ++i){
renderer_removeObject(menuObjects[i]);
}
menuObjectsSize = 1;
blinkDelta += delta;
if(increaseTextBrightness && blinkDelta >= BLINK_FREQUENCY){
textOpacity += 1;
if(textOpacity == 255) increaseTextBrightness = false;
blinkDelta = 0;
}
else if(!increaseTextBrightness && blinkDelta >= BLINK_FREQUENCY){
textOpacity -= 1;
if(textOpacity == 1) increaseTextBrightness = true;
blinkDelta = 0;
}
RenderObject_t startTextShadow;
SDL_Color black = {0, 0, 0, textOpacity};
text_renderText(&startTextShadow, 0.495f, 0.855f, 9, 1.f, black, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
menuObjects[menuObjectsSize] = renderer_renderObject(startTextShadow);
++menuObjectsSize;
RenderObject_t startText;
SDL_Color orange = {255,165,0, textOpacity};
text_renderText(&startText, 0.5f, 0.85f, 10, 1.f, orange, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
menuObjects[menuObjectsSize] = renderer_renderObject(startText);
++menuObjectsSize;
return 0;
}