From c9447cf7ca4b96bd722a264d26f75ae659cf47c4 Mon Sep 17 00:00:00 2001 From: herbglitch Date: Sat, 29 Oct 2022 22:09:48 -0600 Subject: [PATCH 1/3] vector class is broken --- src/engine/engine.c | 4 +++- src/std/handler.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.c b/src/engine/engine.c index 17575c6..473f4fd 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -1,6 +1,7 @@ #include "arc/engine/engine.h" #include #include +#include "arc/engine/state.h" #include "arc/graphics/window.h" #include "arc/graphics/renderer.h" #include "arc/std/handler.h" @@ -73,10 +74,11 @@ void ARC_Engine_Run(ARC_EngineData *data){ // data->keyboard.update(data->event); // data->state.update(); + ARC_Handler_Iterate(data->state, ARC_State_Update); ARC_Renderer_Clear(data->renderer); - // data->state.render(); + // ARC_Handler_Iterate(data->state, ARC_State_Render); ARC_Renderer_Render(data->renderer); } diff --git a/src/std/handler.c b/src/std/handler.c index 0f4ae1c..a097897 100644 --- a/src/std/handler.c +++ b/src/std/handler.c @@ -32,8 +32,8 @@ void ARC_Handler_Add(ARC_Handler *handler, void *data){ int8_t ARC_Handler_RemoveCompareFn(void *a, void *b){ return a == b; } void ARC_Handler_Remove(ARC_Handler *handler, void *data){ - ARC_Vector_Remove(handler->data, data, ARC_Handler_RemoveCompareFn); ARC_Vector_Add(handler->trash, data); + ARC_Vector_Remove(handler->data, data, ARC_Handler_RemoveCompareFn); } void ARC_Handler_RemoveIndex(ARC_Handler *handler, uint32_t *index){ From 206b232935a9e32a0b3fafad5e7e3ab4d3d283b4 Mon Sep 17 00:00:00 2001 From: herbglitch Date: Sat, 29 Oct 2022 22:10:04 -0600 Subject: [PATCH 2/3] vector struct is broken --- include/arc/engine/state.h | 21 +++++++++++++++++++++ src/engine/state.c | 11 +++++++++++ 2 files changed, 32 insertions(+) create mode 100644 include/arc/engine/state.h create mode 100644 src/engine/state.c diff --git a/include/arc/engine/state.h b/include/arc/engine/state.h new file mode 100644 index 0000000..8efb2f8 --- /dev/null +++ b/include/arc/engine/state.h @@ -0,0 +1,21 @@ +#ifndef ARC_ENGINE_STATE_H_ +#define ARC_ENGINE_STATE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ARC_State { + void (* updateFn)(); + void (* renderFn)(); +} ARC_State; + +void ARC_State_Update(void *data); + +void ARC_State_Render(void *data); + +#ifdef __cplusplus +} +#endif + +#endif // ARC_ENGINE_STATE_H_ \ No newline at end of file diff --git a/src/engine/state.c b/src/engine/state.c new file mode 100644 index 0000000..bca0a34 --- /dev/null +++ b/src/engine/state.c @@ -0,0 +1,11 @@ +#include "arc/engine/state.h" + +void ARC_State_Update(void *data){ + ARC_State *temp = (ARC_State *) data; + ((ARC_State *)data)->updateFn(); +} + +void ARC_State_Render(void *data){ + ARC_State *temp = (ARC_State *) data; + ((ARC_State *)data)->renderFn(); +} \ No newline at end of file From 9c12ebb0f84f62208097c1a782f259407afa77cf Mon Sep 17 00:00:00 2001 From: herbglitch Date: Thu, 3 Nov 2022 19:55:56 -0600 Subject: [PATCH 3/3] handler fix --- include/arc/std/handler.h | 3 ++- src/engine/engine.c | 4 ++-- src/graphics/sdl/renderer.c | 2 +- src/std/handler.c | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/include/arc/std/handler.h b/include/arc/std/handler.h index ef67966..9e2fbe2 100644 --- a/include/arc/std/handler.h +++ b/include/arc/std/handler.h @@ -30,8 +30,9 @@ typedef void (* ARC_Handler_CleanDataFn)(void *data); * @brief creates ARC_Handler type * * @param config ARC_Handler to initialize + * @param dataSize size of type the handler will use */ -void ARC_Handler_Create(ARC_Handler **handler); +void ARC_Handler_Create(ARC_Handler **handler, uint32_t dataSize); /** * @brief destroyes ARC_Handler type diff --git a/src/engine/engine.c b/src/engine/engine.c index 473f4fd..390857e 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -17,7 +17,7 @@ void ARC_EngineData_Create(ARC_EngineData **data){ *data = (ARC_EngineData *)malloc(sizeof(ARC_EngineData)); (*data)->window = NULL; (*data)->renderer = NULL; - ARC_Handler_Create(&((*data)->state)); + ARC_Handler_Create(&((*data)->state), sizeof(ARC_State)); ARC_WindowInfo windowInfo; ARC_RenderInfo renderInfo; @@ -78,7 +78,7 @@ void ARC_Engine_Run(ARC_EngineData *data){ ARC_Renderer_Clear(data->renderer); - // ARC_Handler_Iterate(data->state, ARC_State_Render); + ARC_Handler_Iterate(data->state, ARC_State_Render); ARC_Renderer_Render(data->renderer); } diff --git a/src/graphics/sdl/renderer.c b/src/graphics/sdl/renderer.c index bd808d0..e8878a0 100644 --- a/src/graphics/sdl/renderer.c +++ b/src/graphics/sdl/renderer.c @@ -29,7 +29,7 @@ void ARC_Renderer_Destroy(ARC_Renderer *renderer){ } void ARC_Renderer_Clear(ARC_Renderer *renderer){ - SDL_SetRenderDrawColor((SDL_Renderer *)renderer->renderer, 0, 255, 255, 255); + SDL_SetRenderDrawColor((SDL_Renderer *)renderer->renderer, 0x1c, 0x2c, 0x3c, 0x00); SDL_RenderClear((SDL_Renderer *)renderer->renderer); } diff --git a/src/std/handler.c b/src/std/handler.c index a097897..876f62c 100644 --- a/src/std/handler.c +++ b/src/std/handler.c @@ -9,10 +9,10 @@ struct ARC_Handler { ARC_Vector *trash; }; -void ARC_Handler_Create(ARC_Handler **handler){ +void ARC_Handler_Create(ARC_Handler **handler, uint32_t dataSize){ *handler = (ARC_Handler *) malloc(sizeof(ARC_Handler)); - ARC_Vector_Create(&((*handler)->data), sizeof(void *)); - ARC_Vector_Create(&((*handler)->trash), sizeof(void *)); + ARC_Vector_Create(&((*handler)->data), dataSize); + ARC_Vector_Create(&((*handler)->trash), dataSize); } void ARC_Handler_Destroy(ARC_Handler *handler, ARC_Handler_CleanDataFn cleanfn){