#include "menu.h" #include #include "renderer.h" #include "scaller.h" #include "text.h" #define BLINK_FREQUENCY 0.00005 static RenderId_t menuObjects[10]; static unsigned menuObjectsSize = 0; 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; SDL_Surface* backgroundImageSurface = IMG_Load("./assets/img/menu_bg.png"); if(backgroundImageSurface == NULL){ printf("cannot load background"); return -1; } 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; } void menu_remove(void){ for(unsigned i = 0; i < menuObjectsSize; ++i){ renderer_removeObject(menuObjects[i]); } menuObjectsSize = 0; }