diff --git a/include/arc/engine/engine.h b/include/arc/engine/engine.h index 63a857d..81a4c93 100644 --- a/include/arc/engine/engine.h +++ b/include/arc/engine/engine.h @@ -7,10 +7,12 @@ extern "C" { #include "arc/graphics/window.h" #include "arc/graphics/renderer.h" +#include "arc/std/handler.h" typedef struct ARC_EngineData { ARC_Window *window; ARC_Renderer *renderer; + ARC_Handler *state; } ARC_EngineData; //NOTE: most work below is temp, and will change once I figure out a better way to write this header diff --git a/include/arc/graphics/renderer.h b/include/arc/graphics/renderer.h index cc5612b..619d03e 100644 --- a/include/arc/graphics/renderer.h +++ b/include/arc/graphics/renderer.h @@ -29,7 +29,7 @@ void ARC_Renderer_Destroy(ARC_Renderer *renderer); void ARC_Renderer_Clear(ARC_Renderer *renderer); -void ARD_Renderer_Render(ARC_Renderer *renderer); +void ARC_Renderer_Render(ARC_Renderer *renderer); #ifdef __cplusplus } diff --git a/src/engine/engine.c b/src/engine/engine.c index 27c69df..17575c6 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -3,6 +3,7 @@ #include #include "arc/graphics/window.h" #include "arc/graphics/renderer.h" +#include "arc/std/handler.h" //NOTE: this is very temp, mostly to get smthn running so I can test out different ideas #ifdef ARC_SDL @@ -15,6 +16,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_WindowInfo windowInfo; ARC_RenderInfo renderInfo; @@ -26,7 +28,7 @@ void ARC_EngineData_Create(ARC_EngineData **data){ return; } - windowInfo = (ARC_WindowInfo){ "title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1920, 1080, 0 }; + windowInfo = (ARC_WindowInfo){ "title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 720, 0 }; #endif // ARC_SDL ARC_Window_Create(&((*data)->window), &windowInfo); @@ -42,10 +44,40 @@ void ARC_EngineData_Create(ARC_EngineData **data){ void ARC_EngineData_Destroy(ARC_EngineData *data){ #ifdef ARC_SDL - ARC_Window_Destroy( data->window ); + ARC_Handler_Destroy(data->state, NULL); //TODO: replace null with cleanup function ARC_Renderer_Destroy(data->renderer); + ARC_Window_Destroy(data->window); #endif // ARC_SDL } void ARC_Engine_Run(ARC_EngineData *data){ + double lastTime = 0, currentTime; + +#ifdef ARC_SDL + SDL_Event event; +#endif // ARC_SDL + + while(1){ + // currentTime = SDL_GetTicks(); + // data->dt = currentTime - lastTime; + // lastTime = currentTime; + +#ifdef ARC_SDL + while(SDL_PollEvent(&event)){ + if(event.type == SDL_QUIT){ return; } + if(event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE){ return; } + } +#endif // ARC_SDL + + // data->mouse.update(data->event); + // data->keyboard.update(data->event); + + // data->state.update(); + + ARC_Renderer_Clear(data->renderer); + + // data->state.render(); + + ARC_Renderer_Render(data->renderer); + } } diff --git a/src/graphics/sdl/renderer.c b/src/graphics/sdl/renderer.c index 9e80a40..bd808d0 100644 --- a/src/graphics/sdl/renderer.c +++ b/src/graphics/sdl/renderer.c @@ -28,4 +28,13 @@ void ARC_Renderer_Destroy(ARC_Renderer *renderer){ free(renderer); } +void ARC_Renderer_Clear(ARC_Renderer *renderer){ + SDL_SetRenderDrawColor((SDL_Renderer *)renderer->renderer, 0, 255, 255, 255); + SDL_RenderClear((SDL_Renderer *)renderer->renderer); +} + +void ARC_Renderer_Render(ARC_Renderer *renderer){ + SDL_RenderPresent((SDL_Renderer *)renderer->renderer); +} + #endif //ARC_SDL