ALed jeanne
This commit is contained in:
+10
-11
@@ -2,6 +2,7 @@
|
||||
#include <SDL2/SDL_image.h>
|
||||
#include "renderer.h"
|
||||
#include "scaller.h"
|
||||
#include "scene.h"
|
||||
#include "text.h"
|
||||
|
||||
#define BLINK_FREQUENCY 0.00005
|
||||
@@ -14,6 +15,7 @@ static bool increaseTextBrightness = false;
|
||||
static Uint8 textOpacity = 255;
|
||||
|
||||
|
||||
Scene_t menuScene;
|
||||
|
||||
int menu_staticRender(void){
|
||||
MonitorSize_t size = renderer_getMonitorSize();
|
||||
@@ -27,13 +29,12 @@ int menu_staticRender(void){
|
||||
}
|
||||
|
||||
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);
|
||||
menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, backgroundImage, CAMERA_WIDTH/2, CAMERA_HEIGHT/2);
|
||||
renderer_setScene(&menuScene);
|
||||
++menuObjectsSize;
|
||||
return 0;
|
||||
}
|
||||
@@ -41,7 +42,7 @@ int menu_staticRender(void){
|
||||
int menu_render(float delta){
|
||||
|
||||
for(unsigned i = 1; i < menuObjectsSize; ++i){
|
||||
renderer_removeObject(menuObjects[i]);
|
||||
scene_removeRenderObject(&menuScene, menuObjects[i]);
|
||||
}
|
||||
menuObjectsSize = 1;
|
||||
|
||||
@@ -59,21 +60,19 @@ int menu_render(float delta){
|
||||
}
|
||||
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);
|
||||
text_renderText(&startTextShadow, 9, 1.f, black, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
|
||||
menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, startTextShadow, CAMERA_WIDTH * 0.495f, CAMERA_HEIGHT * 0.855f);
|
||||
++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);
|
||||
text_renderText(&startText, 10, 1.f, orange, "./assets/fonts/Quinquefive.ttf", 28, "Press space to start");
|
||||
menuObjects[menuObjectsSize] = scene_addRenderObject(&menuScene, startText, CAMERA_WIDTH * 0.5f, CAMERA_HEIGHT * 0.85f);
|
||||
++menuObjectsSize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void menu_remove(void){
|
||||
for(unsigned i = 0; i < menuObjectsSize; ++i){
|
||||
renderer_removeObject(menuObjects[i]);
|
||||
}
|
||||
scene_free(&menuScene);
|
||||
menuObjectsSize = 0;
|
||||
}
|
||||
|
||||
+7
-7
@@ -17,7 +17,7 @@ bool running;
|
||||
MonitorSize_t monitorSize;
|
||||
SDL_Window* win;
|
||||
SDL_Renderer * renderer;
|
||||
Scene_t * scenes;
|
||||
Scene_t * scene;
|
||||
int scenesCount = 0;
|
||||
|
||||
//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);
|
||||
scenesCount = 10;
|
||||
scenes = malloc(scenesCount);
|
||||
|
||||
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
|
||||
if(!running) break;
|
||||
|
||||
for(int i = 0; i < scenesCount; i++) {
|
||||
scene_render(scenes + i);
|
||||
}
|
||||
if(scene != NULL)
|
||||
scene_render(scene);
|
||||
|
||||
SDL_RenderPresent(renderer);
|
||||
SDL_Delay(1000 / 400); //400fps or u a pussy
|
||||
}
|
||||
free(scenes);
|
||||
}
|
||||
|
||||
void renderer_setScene(Scene_t * newScene) {
|
||||
scene = newScene;
|
||||
}
|
||||
|
||||
MonitorSize_t renderer_getMonitorSize() {
|
||||
return monitorSize;
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
#ifndef __RENDERER_H__
|
||||
#define __RENDERER_H__
|
||||
|
||||
#include "scene.h"
|
||||
#include <SDL2/SDL_surface.h>
|
||||
#include <SDL2/SDL_render.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct Scene Scene_t;
|
||||
|
||||
//goes to false on exit
|
||||
extern bool running;
|
||||
extern SDL_Renderer * renderer;
|
||||
@@ -15,5 +18,6 @@ typedef struct MonitorSize {
|
||||
|
||||
void renderer_main(void(*game_setup)(void), void(*game_loop)(void));
|
||||
MonitorSize_t renderer_getMonitorSize(void);
|
||||
void renderer_setScene(Scene_t * newScene);
|
||||
|
||||
#endif
|
||||
|
||||
+13
@@ -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 itemId = scene->objectCount++;
|
||||
scene->objects = realloc(scene->objects, scene->objectCount * sizeof(SceneObject_t));
|
||||
|
||||
SceneObject_t item = {
|
||||
x, y,
|
||||
@@ -78,3 +79,15 @@ void scene_removeRenderObject(Scene_t * scene, RenderId_t id) {
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -31,5 +31,6 @@ typedef struct Scene {
|
||||
void scene_render(Scene_t * scene);
|
||||
void scene_removeRenderObject(Scene_t * scene, RenderId_t id);
|
||||
RenderId_t scene_addRenderObject(Scene_t * scene, RenderObject_t object, int x, int y);
|
||||
void scene_free(Scene_t * scene);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user