ALed jeanne

This commit is contained in:
Marc
2023-01-21 15:25:18 +01:00
parent 01671d63f4
commit bf91cf1237
5 changed files with 35 additions and 18 deletions
+10 -11
View File
@@ -2,6 +2,7 @@
#include <SDL2/SDL_image.h> #include <SDL2/SDL_image.h>
#include "renderer.h" #include "renderer.h"
#include "scaller.h" #include "scaller.h"
#include "scene.h"
#include "text.h" #include "text.h"
#define BLINK_FREQUENCY 0.00005 #define BLINK_FREQUENCY 0.00005
@@ -14,6 +15,7 @@ static bool increaseTextBrightness = false;
static Uint8 textOpacity = 255; static Uint8 textOpacity = 255;
Scene_t menuScene;
int menu_staticRender(void){ int menu_staticRender(void){
MonitorSize_t size = renderer_getMonitorSize(); MonitorSize_t size = renderer_getMonitorSize();
@@ -27,13 +29,12 @@ int menu_staticRender(void){
} }
RenderObject_t backgroundImage; RenderObject_t backgroundImage;
backgroundImage.x = 0;
backgroundImage.y = 0;
backgroundImage.z = 0; backgroundImage.z = 0;
backgroundImage.surface = backgroundImageSurface; backgroundImage.surface = backgroundImageSurface;
backgroundImage.width = 1; backgroundImage.width = 1;
backgroundImage.height = 1; backgroundImage.height = 1;
menuObjects[menuObjectsSize] = renderer_renderObject(backgroundImage); menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, backgroundImage, CAMERA_WIDTH/2, CAMERA_HEIGHT/2);
renderer_setScene(&menuScene);
++menuObjectsSize; ++menuObjectsSize;
return 0; return 0;
} }
@@ -41,7 +42,7 @@ int menu_staticRender(void){
int menu_render(float delta){ int menu_render(float delta){
for(unsigned i = 1; i < menuObjectsSize; ++i){ for(unsigned i = 1; i < menuObjectsSize; ++i){
renderer_removeObject(menuObjects[i]); scene_removeRenderObject(&menuScene, menuObjects[i]);
} }
menuObjectsSize = 1; menuObjectsSize = 1;
@@ -59,21 +60,19 @@ int menu_render(float delta){
} }
RenderObject_t startTextShadow; RenderObject_t startTextShadow;
SDL_Color black = {0, 0, 0, textOpacity}; 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"); text_renderText(&startTextShadow, 9, 1.f, black, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
menuObjects[menuObjectsSize] = renderer_renderObject(startTextShadow); menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, startTextShadow, CAMERA_WIDTH * 0.495f, CAMERA_HEIGHT * 0.855f);
++menuObjectsSize; ++menuObjectsSize;
RenderObject_t startText; RenderObject_t startText;
SDL_Color orange = {255,165,0, textOpacity}; 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"); text_renderText(&startText, 10, 1.f, orange, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
menuObjects[menuObjectsSize] = renderer_renderObject(startText); menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, startText, CAMERA_WIDTH * 0.5f, CAMERA_HEIGHT * 0.85f);
++menuObjectsSize; ++menuObjectsSize;
return 0; return 0;
} }
void menu_remove(void){ void menu_remove(void){
for(unsigned i = 0; i < menuObjectsSize; ++i){ scene_free(&menuScene);
renderer_removeObject(menuObjects[i]);
}
menuObjectsSize = 0; menuObjectsSize = 0;
} }
+7 -7
View File
@@ -17,7 +17,7 @@ bool running;
MonitorSize_t monitorSize; MonitorSize_t monitorSize;
SDL_Window* win; SDL_Window* win;
SDL_Renderer * renderer; SDL_Renderer * renderer;
Scene_t * scenes; Scene_t * scene;
int scenesCount = 0; int scenesCount = 0;
//int (*compar)(const void [.size], const void [.size], void *) //int (*compar)(const void [.size], const void [.size], void *)
@@ -41,8 +41,6 @@ void renderer_main(void(*game_setup)(void), void(*game_loop)(void)) {
} }
SDL_GetRendererOutputSize(renderer, &monitorSize.width, &monitorSize.height); SDL_GetRendererOutputSize(renderer, &monitorSize.width, &monitorSize.height);
scenesCount = 10;
scenes = malloc(scenesCount);
input_init(); input_init();
@@ -76,15 +74,17 @@ void renderer_main(void(*game_setup)(void), void(*game_loop)(void)) {
//no need to make an extra render pass //no need to make an extra render pass
if(!running) break; if(!running) break;
for(int i = 0; i < scenesCount; i++) { if(scene != NULL)
scene_render(scenes + i); scene_render(scene);
}
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
SDL_Delay(1000 / 400); //400fps or u a pussy SDL_Delay(1000 / 400); //400fps or u a pussy
} }
free(scenes);
} }
void renderer_setScene(Scene_t * newScene) {
scene = newScene;
}
MonitorSize_t renderer_getMonitorSize() { MonitorSize_t renderer_getMonitorSize() {
return monitorSize; return monitorSize;
+4
View File
@@ -1,10 +1,13 @@
#ifndef __RENDERER_H__ #ifndef __RENDERER_H__
#define __RENDERER_H__ #define __RENDERER_H__
#include "scene.h"
#include <SDL2/SDL_surface.h> #include <SDL2/SDL_surface.h>
#include <SDL2/SDL_render.h> #include <SDL2/SDL_render.h>
#include <stdbool.h> #include <stdbool.h>
typedef struct Scene Scene_t;
//goes to false on exit //goes to false on exit
extern bool running; extern bool running;
extern SDL_Renderer * renderer; extern SDL_Renderer * renderer;
@@ -15,5 +18,6 @@ typedef struct MonitorSize {
void renderer_main(void(*game_setup)(void), void(*game_loop)(void)); void renderer_main(void(*game_setup)(void), void(*game_loop)(void));
MonitorSize_t renderer_getMonitorSize(void); MonitorSize_t renderer_getMonitorSize(void);
void renderer_setScene(Scene_t * newScene);
#endif #endif
+13
View File
@@ -47,6 +47,7 @@ static void buildCache(SceneObject_t * object) {
RenderId_t scene_addRenderObject(Scene_t * scene, RenderObject_t object, int x, int y) { RenderId_t scene_addRenderObject(Scene_t * scene, RenderObject_t object, int x, int y) {
RenderId_t itemId = scene->objectCount++; RenderId_t itemId = scene->objectCount++;
scene->objects = realloc(scene->objects, scene->objectCount * sizeof(SceneObject_t));
SceneObject_t item = { SceneObject_t item = {
x, y, x, y,
@@ -78,3 +79,15 @@ void scene_removeRenderObject(Scene_t * scene, RenderId_t id) {
} }
scene->objectCount--; scene->objectCount--;
} }
void scene_free(Scene_t * scene) {
for(int i = 0; i < scene->objectCount - 1; i++) {
SDL_FreeSurface(scene->objects[i].renderObj.surface);
if(scene->objects[i].cache != NULL) {
SDL_DestroyTexture(scene->objects[i].cache);
}
}
free(scene->objects);
scene->objectCount = 0;
scene->objects = NULL;
}
+1
View File
@@ -31,5 +31,6 @@ typedef struct Scene {
void scene_render(Scene_t * scene); void scene_render(Scene_t * scene);
void scene_removeRenderObject(Scene_t * scene, RenderId_t id); void scene_removeRenderObject(Scene_t * scene, RenderId_t id);
RenderId_t scene_addRenderObject(Scene_t * scene, RenderObject_t object, int x, int y); RenderId_t scene_addRenderObject(Scene_t * scene, RenderObject_t object, int x, int y);
void scene_free(Scene_t * scene);
#endif #endif