From 8971d37dacee9151b37cce03b610182d68358594 Mon Sep 17 00:00:00 2001 From: Barry Kane Date: Fri, 24 Mar 2023 23:31:06 +0000 Subject: [PATCH] Added prepareTitleScreen() --- spacewarGraphics.c | 40 ++++++++++++++++++++++++++++++++++++++++ spacewarGraphics.h | 4 ++++ 2 files changed, 44 insertions(+) diff --git a/spacewarGraphics.c b/spacewarGraphics.c index 92831b7..7b9e450 100644 --- a/spacewarGraphics.c +++ b/spacewarGraphics.c @@ -3,8 +3,46 @@ #include #include #include +#include #include "spacewarGraphics.h" +SpacewarTitlescreen prepareTitleScreen(SDL_Window * window, SDL_Renderer * renderer, + char * starfieldTexturePath, char * logoTexturePath, + TTF_Font * font, char * text) +{ + SpacewarTitlescreen newTitleScreen; + + // Basic state: + newTitleScreen.xScroll = 0; + newTitleScreen.textAlpha = 0; + newTitleScreen.titleAlpha = 0; + + // Requirements for drawing: + newTitleScreen.window = window; + newTitleScreen.renderer = renderer; + + // Textures: + newTitleScreen.titleTexture = IMG_LoadTexture(renderer, logoTexturePath); + newTitleScreen.starfieldTexture = IMG_LoadTexture(renderer, starfieldTexturePath); + + // Text message: + SDL_Color white = {255, 255, 255}; + SDL_Surface * fontSurface = TTF_RenderText_Blended(font, text, white); + newTitleScreen.textTexture = SDL_CreateTextureFromSurface(renderer, fontSurface); + SDL_FreeSurface(fontSurface); + + // Rects: + newTitleScreen.titleRectangle = calloc(1, sizeof(SDL_Rect)); + newTitleScreen.textRectangle = calloc(1, sizeof(SDL_Rect)); + newTitleScreen.starfieldRectangle = calloc(1, sizeof(SDL_Rect)); + SDL_QueryTexture(newTitleScreen.textTexture, NULL, NULL, NULL, &newTitleScreen.textRectangle->h); + SDL_QueryTexture(newTitleScreen.textTexture, NULL, NULL, &newTitleScreen.textRectangle->w, NULL); + SDL_QueryTexture(newTitleScreen.titleTexture, NULL, NULL, NULL, &newTitleScreen.titleRectangle->h); + SDL_QueryTexture(newTitleScreen.titleTexture, NULL, NULL, &newTitleScreen.titleRectangle->w, NULL); + SDL_QueryTexture(newTitleScreen.starfieldTexture, NULL, NULL, NULL, &newTitleScreen.starfieldRectangle->h); + SDL_QueryTexture(newTitleScreen.starfieldTexture, NULL, NULL, &newTitleScreen.starfieldRectangle->w, NULL); +} + void drawTitleScreen(SpacewarTitlescreen * titlescreen) { // Get the current size of the window: @@ -77,3 +115,5 @@ void drawTitleScreen(SpacewarTitlescreen * titlescreen) // Display to the renderer: SDL_RenderPresent(titlescreen->renderer); } + + diff --git a/spacewarGraphics.h b/spacewarGraphics.h index 5b8fa6b..a2125e6 100644 --- a/spacewarGraphics.h +++ b/spacewarGraphics.h @@ -11,6 +11,10 @@ typedef struct SpacewarTitlescreen SDL_Rect * titleRectangle, * textRectangle, * starfieldRectangle; } SpacewarTitlescreen; +SpacewarTitlescreen prepareTitleScreen(SDL_Window * window, SDL_Renderer * renderer, + char * starfieldTexturePath, char * logoTexturePath, + TTF_Font * font, char * text); + void drawTitleScreen(SpacewarTitlescreen * titlescreen); static inline void DrawCircle(SDL_Renderer * renderer, int32_t centreX, int32_t centreY, int32_t radius)