ALed jeanne
This commit is contained in:
+10
-11
@@ -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
@@ -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;
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user