Archeus 0.0.0
A C library and game engine that focuses on documentation
Loading...
Searching...
No Matches
engine.c File Reference
#include "arc/engine/engine.h"
#include <stdlib.h>
#include "arc/engine/state.h"
#include "arc/graphics/window.h"
#include "arc/graphics/renderer.h"
#include "arc/input/mouse.h"
#include "arc/input/keyboard.h"
#include "arc/std/bool.h"
#include "arc/std/errno.h"
#include "arc/std/handler.h"

Go to the source code of this file.

Functions

void ARC_EngineData_Create (ARC_EngineData **data, ARC_Handler_CleanDataFn cleanFn, ARC_Point windowSize)
 
void ARC_EngineData_Destroy (ARC_EngineData *data)
 
void ARC_Engine_RunUncapped (ARC_EngineData *data)
 runs ARC_Engine with an uncapped framerate
 

Function Documentation

◆ ARC_Engine_RunUncapped()

void ARC_Engine_RunUncapped ( ARC_EngineData * data)

runs ARC_Engine with an uncapped framerate

Note
data must be created before this function
data should be destroyed after this function
Parameters
dataengine data that will be used

Definition at line 59 of file engine.c.

59 {
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_True
Definition bool.h:11
int32_t arc_errno
Definition errno.c:5
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_Clear(ARC_Renderer *renderer)
Definition renderer.c:32
void ARC_Renderer_Render(ARC_Renderer *renderer)
renders the renderer
Definition renderer.c:39
ARC_Bool ARC_Input_Update(ARC_Input *input)
Definition input.c:27
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_Bool running
Definition engine.h:26
ARC_Handler * state
Definition engine.h:20
ARC_Renderer * renderer
Definition engine.h:19

References arc_errno, ARC_Handler_Clean(), ARC_Handler_Iterate(), ARC_Input_Update(), ARC_Renderer_Clear(), ARC_Renderer_Render(), ARC_State_Render(), ARC_State_Update(), ARC_True, ARC_EngineData::input, ARC_EngineData::renderer, ARC_EngineData::running, and ARC_EngineData::state.

◆ ARC_EngineData_Create()

void ARC_EngineData_Create ( ARC_EngineData ** data,
ARC_Handler_CleanDataFn cleanFn,
ARC_Point windowSize )

@breif creates an ARC_EngineData type to be used when running an ARC_Engine

Parameters
datathe ARC_EngineData to create
cleanFnthe state cleanup function
windowSIzethe size of window to create passed as an ARC_Point

Definition at line 17 of file engine.c.

17 {
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}
#define ARC_False
Definition bool.h:12
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_Renderer_CreateWithEngineData(ARC_Renderer **renderer, ARC_EngineData *data)
creates ARC_Renderer type with ARC_EngineData
Definition renderer.c:10
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_Window * window
Definition engine.h:18

References arc_errno, ARC_False, ARC_Handler_Create(), ARC_Input_CreateWithEngineData(), ARC_Input_GetKeyboard(), ARC_Input_GetMouse(), ARC_Renderer_CreateWithEngineData(), ARC_Window_Create(), ARC_Window_Destroy(), and ARC_EngineData::window.

◆ ARC_EngineData_Destroy()

void ARC_EngineData_Destroy ( ARC_EngineData * data)

@breif destroys an ARC_EngineData type

Parameters
datathe ARC_EngineData to destroy

Definition at line 51 of file engine.c.

51 {
57}
void ARC_Handler_Destroy(ARC_Handler *handler)
destroyes ARC_Handler type
Definition handler.c:21
void ARC_Renderer_Destroy(ARC_Renderer *renderer)
destroys ARC_Renderer type
Definition renderer.c:28
void ARC_Keyboard_Destroy(ARC_Keyboard *keyboard)
Definition keyboard.c:23
void ARC_Mouse_Destroy(ARC_Mouse *mouse)
Definition mouse.c:31
ARC_Keyboard * keyboard
Definition engine.h:23
ARC_Mouse * mouse
Definition engine.h:22

References ARC_Handler_Destroy(), ARC_Keyboard_Destroy(), ARC_Mouse_Destroy(), ARC_Renderer_Destroy(), ARC_Window_Destroy(), ARC_EngineData::keyboard, ARC_EngineData::mouse, ARC_EngineData::renderer, ARC_EngineData::state, and ARC_EngineData::window.