Archeus 0.0.0
A C library and game engine that focuses on documentation
Loading...
Searching...
No Matches
engine.c
Go to the documentation of this file.
1#include "arc/engine/engine.h"
2
3//NOTE: some of this file is temporary, mostly to get smthn running so I can test out different ideas
4#include <stdlib.h>
5#include "arc/engine/state.h"
8#include "arc/input/mouse.h"
10#include "arc/std/bool.h"
11#include "arc/std/errno.h"
12#include "arc/std/handler.h"
13
14//TODO: remove this
15//#include <SDL.h>
16
18 *data = (ARC_EngineData *)malloc(sizeof(ARC_EngineData));
19 (*data)->window = NULL;
20 (*data)->renderer = NULL;
21 (*data)->input = NULL;
22 (*data)->keyboard = NULL;
23 (*data)->mouse = NULL;
24
25 //TODO: set the destroy callback
26 ARC_Handler_Create(&((*data)->state), NULL, cleanFn);
27
28 (*data)->dt = 0.0;
29 (*data)->running = ARC_False;
30 (*data)->windowSize = windowSize;
31
32 ARC_WindowInfo windowInfo = (ARC_WindowInfo){ "title", (*data)->windowSize.x, (*data)->windowSize.y };
33 ARC_Window_Create(&((*data)->window), &windowInfo);
34 if(arc_errno){
35 free(data);
36 return;
37 }
38
39 ARC_Renderer_CreateWithEngineData(&((*data)->renderer), *data);
40 if(arc_errno){
41 ARC_Window_Destroy((*data)->window);
42 free(data);
43 }
44
45 ARC_Input_CreateWithEngineData(&((*data)->input), *data);
46
47 (*data)->keyboard = ARC_Input_GetKeyboard((*data)->input);
48 (*data)->mouse = ARC_Input_GetMouse((*data)->input);
49}
50
58
60 if(arc_errno){
61 return;
62 }
63
64 //double lastTime = 0, currentTime;
65
66 data->running = ARC_True;
67 while(data->running){
68 //currentTime = SDL_GetTicks();
69 //data->dt = currentTime - lastTime;
70 //lastTime = currentTime;
71
72 data->running = ARC_Input_Update(data->input);
73
75
77
79
81
83 }
84}
#define ARC_False
Definition bool.h:12
#define ARC_True
Definition bool.h:11
void ARC_Engine_RunUncapped(ARC_EngineData *data)
runs ARC_Engine with an uncapped framerate
Definition engine.c:59
void ARC_EngineData_Create(ARC_EngineData **data, ARC_Handler_CleanDataFn cleanFn, ARC_Point windowSize)
Definition engine.c:17
void ARC_EngineData_Destroy(ARC_EngineData *data)
Definition engine.c:51
int32_t arc_errno
Definition errno.c:5
void ARC_Handler_Destroy(ARC_Handler *handler)
destroyes ARC_Handler type
Definition handler.c:21
void ARC_Handler_Create(ARC_Handler **handler, ARC_Handler_CompareDataFn *compareFn, ARC_Handler_CleanDataFn cleanFn)
creates ARC_Handler type
Definition handler.c:14
void(* ARC_Handler_CleanDataFn)(void *data)
a function that will be used during destruction of trash vector
Definition handler.h:40
void ARC_Handler_Iterate(ARC_Handler *handler, ARC_Handler_DataFn datafn)
calls provided function on each element in handler
Definition handler.c:50
void ARC_Handler_Clean(ARC_Handler *handler)
clears trash from handler
Definition handler.c:63
void ARC_Renderer_CreateWithEngineData(ARC_Renderer **renderer, ARC_EngineData *data)
creates ARC_Renderer type with ARC_EngineData
Definition renderer.c:10
void ARC_Renderer_Clear(ARC_Renderer *renderer)
Definition renderer.c:32
void ARC_Renderer_Destroy(ARC_Renderer *renderer)
destroys ARC_Renderer type
Definition renderer.c:28
void ARC_Renderer_Render(ARC_Renderer *renderer)
renders the renderer
Definition renderer.c:39
void ARC_Window_Create(ARC_Window **window, ARC_WindowInfo *info)
creates ARC_Window type
Definition window.c:7
struct ARC_WindowInfo ARC_WindowInfo
void ARC_Window_Destroy(ARC_Window *window)
destroys ARC_Window type
Definition window.c:29
ARC_Keyboard * ARC_Input_GetKeyboard(ARC_Input *input)
Definition input.c:39
ARC_Mouse * ARC_Input_GetMouse(ARC_Input *input)
Definition input.c:43
void ARC_Input_CreateWithEngineData(ARC_Input **input, ARC_EngineData *data)
Definition input.c:10
ARC_Bool ARC_Input_Update(ARC_Input *input)
Definition input.c:27
void ARC_Keyboard_Destroy(ARC_Keyboard *keyboard)
Definition keyboard.c:23
void ARC_Mouse_Destroy(ARC_Mouse *mouse)
Definition mouse.c:31
void ARC_State_Render(void *data)
Definition state.c:8
void ARC_State_Update(void *data)
Definition state.c:4
ARC_Input * input
Definition engine.h:21
ARC_Keyboard * keyboard
Definition engine.h:23
ARC_Bool running
Definition engine.h:26
ARC_Handler * state
Definition engine.h:20
ARC_Window * window
Definition engine.h:18
ARC_Renderer * renderer
Definition engine.h:19
ARC_Mouse * mouse
Definition engine.h:22