diff --git a/include/arc/input/input.h b/include/arc/input/input.h index 065bc97..0485022 100644 --- a/include/arc/input/input.h +++ b/include/arc/input/input.h @@ -7,6 +7,7 @@ extern "C" { #include "arc/input/keyboard.h" #include "arc/input/mouse.h" +#include "arc/std/bool.h" /** * @brief predefien ARC_EngineData so as not to get circular reference @@ -19,7 +20,7 @@ void ARC_Input_CreateWithEngineData(ARC_Input **input, ARC_EngineData *data); void ARC_Input_Destroy(ARC_Input *input); -void ARC_Input_Update(ARC_Input *input); +ARC_Bool ARC_Input_Update(ARC_Input *input); ARC_Keyboard *ARC_Input_GetKeyboard(ARC_Input *input); @@ -29,4 +30,4 @@ ARC_Mouse *ARC_Input_GetMouse(ARC_Input *input); } #endif -#endif // !ARC_INPUT_H_ \ No newline at end of file +#endif // !ARC_INPUT_H_ diff --git a/packages/input/sdl/input.c b/packages/input/sdl/input.c index 837ed08..9441c02 100644 --- a/packages/input/sdl/input.c +++ b/packages/input/sdl/input.c @@ -24,11 +24,16 @@ void ARC_Input_Destroy(ARC_Input *input){ free(input); } -void ARC_Input_Update(ARC_Input *input){ +ARC_Bool ARC_Input_Update(ARC_Input *input){ SDL_PollEvent(input->event); + if(input->event->type == SDL_QUIT){ + return ARC_False; + } ARC_Keyboard_Update(input->keyboard); ARC_Mouse_Update(input->mouse); + + return ARC_True; } ARC_Keyboard *ARC_Input_GetKeyboard(ARC_Input *input){ @@ -37,4 +42,4 @@ ARC_Keyboard *ARC_Input_GetKeyboard(ARC_Input *input){ ARC_Mouse *ARC_Input_GetMouse(ARC_Input *input){ return input->mouse; -} \ No newline at end of file +} diff --git a/src/engine/engine.c b/src/engine/engine.c index dbeea04..9c58b76 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -66,7 +66,7 @@ void ARC_Engine_RunUncapped(ARC_EngineData *data){ // data->dt = currentTime - lastTime; // lastTime = currentTime; - ARC_Input_Update(data->input); + data->running = ARC_Input_Update(data->input); ARC_Handler_Clean(data->state);