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
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

+11 -14
View File
@@ -10,7 +10,7 @@
#include <unistd.h> #include <unistd.h>
#include "scaller.h" #include "scaller.h"
long timecode; clock_t timecode;
long iter; long iter;
Mix_Music *prout; Mix_Music *prout;
@@ -25,15 +25,15 @@ static void space(void) {
} }
static void game_main(void) { static void game_main(void) {
long delta = time(NULL) - timecode;
float delta = ((float)(clock() - timecode)) / CLOCKS_PER_SEC;
//main game code //main game code
if(iter == 0) { if(iter == 0) {
menu_render(); menu_staticRender();
RenderObject_t text; RenderObject_t text;
SDL_Color white = {255, 255, 255, 255}; SDL_Color white = {255, 255, 255, 255};
TTF_Init(); if(text_renderText(&text, 0.1f, 0.1f, 1000, 0.7f, white, "./assets/fonts/Quinquefive.ttf", 25, "Hello World") < 0){
if(text_renderText(&text, 0.1f, 0.1f, 1000, 1, white, "./assets/fonts/arial.ttf", 25, "Hello World") < 0){
printf("error"); printf("error");
exit(1); exit(1);
} }
@@ -41,13 +41,8 @@ static void game_main(void) {
SDL_Surface* img = IMG_Load("./assets/img/pp.png"); SDL_Surface* img = IMG_Load("./assets/img/pp.png");
RenderObject_t duck = { RenderObject_t duck = {
<<<<<<< HEAD
0.25,
0.25,
=======
0.5, 0.5,
0.5, 0.5,
>>>>>>> 781f4ba7beb2793dbdb38f1f2ca35f8a5fb52da3
0, 0,
0.50, 0.50,
0.50, 0.50,
@@ -57,20 +52,22 @@ static void game_main(void) {
scaller(duck.surface, 1, &duck.width, &duck.height); scaller(duck.surface, 1, &duck.width, &duck.height);
placer(duck.surface, 1, &duck.x, &duck.y); placer(duck.surface, 1, &duck.x, &duck.y);
renderer_renderObject(text); // renderer_renderObject(text);
renderer_renderObject(duck); // renderer_renderObject(duck);
input_listen(SDL_SCANCODE_SPACE, space); input_listen(SDL_SCANCODE_SPACE, space);
} }
menu_render(delta);
//update time //update time
timecode = time(NULL); timecode = clock();
iter++; iter++;
} }
int main(void) { int main(void) {
TTF_Init();
if(Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096) != 0){ if(Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096) != 0){
printf("Music sound could not be open!\n" printf("Music sound could not be open!\n"
"SDL_Error: %s\n", Mix_GetError()); "SDL_Error: %s\n", Mix_GetError());
@@ -84,7 +81,7 @@ int main(void) {
} }
iter = 0; iter = 0;
timecode = time(NULL); timecode = clock();
Mix_Init(MIX_INIT_MP3); Mix_Init(MIX_INIT_MP3);
renderer_main(game_main); renderer_main(game_main);
+55 -14
View File
@@ -2,30 +2,71 @@
#include <SDL2/SDL_image.h> #include <SDL2/SDL_image.h>
#include "renderer.h" #include "renderer.h"
#include "scaller.h" #include "scaller.h"
#include "text.h"
#define BLINK_FREQUENCY 0.00005
static RenderId_t menuObjects[10]; static RenderId_t menuObjects[10];
static unsigned menuObjectsSize = 0; static unsigned menuObjectsSize = 0;
int menu_render(void){ static float blinkDelta = 0;
SDL_Surface* buttonImageSurface = IMG_Load("./assets/img/start.png"); static bool increaseTextBrightness = false;
if(buttonImageSurface == NULL){ static Uint8 textOpacity = 255;
printf("cannot load");
return -1;
}
RenderObject_t buttonImage;
float buttonScale = 0.3f;
int menu_staticRender(void){
MonitorSize_t size = renderer_getMonitorSize(); MonitorSize_t size = renderer_getMonitorSize();
float aspectRatio = (float)size.width / size.height; float aspectRatio = (float)size.width / size.height;
buttonImage.x = 0.5f;
buttonImage.y = 0.5f;
scaller(buttonImageSurface, buttonScale, &buttonImage.width, &buttonImage.height); SDL_Surface* backgroundImageSurface = IMG_Load("./assets/img/menu_bg.png");
placer(buttonImageSurface, buttonScale, &buttonImage.x, &buttonImage.y); if(backgroundImageSurface == NULL){
printf("cannot load background");
return -1;
}
buttonImage.surface = buttonImageSurface; RenderObject_t backgroundImage;
menuObjects[menuObjectsSize] = renderer_renderObject(buttonImage); 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; ++menuObjectsSize;
return 0; return 0;
} }
+3 -1
View File
@@ -3,7 +3,9 @@
#include "renderer.h" #include "renderer.h"
int menu_render(void);
int menu_staticRender(void);
int menu_render(float delta);
void menu_remove(void); void menu_remove(void);
+1 -1
View File
@@ -33,7 +33,7 @@ int text_renderText(RenderObject_t* renderObject, float x, float y, int z, float
TTF_Font* font = NULL; TTF_Font* font = NULL;
for(unsigned i = 0; i < fontCacheSize; ++i){ for(unsigned i = 0; i < fontCacheSize; ++i){
if(strcmp(fontCache[i].file, fontFilename) && fontCache[i].size == fontSize){ if(strcmp(fontCache[i].file, fontFilename) == 0 && fontCache[i].size == fontSize){
font = fontCache[i].font; font = fontCache[i].font;
break; break;
} }