GoldFish Engine
Quite simple and lightweight game engine
Loading...
Searching...
No Matches
gf_client.c
1#define GF_EXPOSE_CLIENT
2#define GF_EXPOSE_DRAW
3
4#include <gf_pre.h>
5
6/* External library */
7
8/* Interface */
9#include <gf_client.h>
10
11/* Engine */
12#include <gf_draw.h>
13#include <gf_log.h>
14#include <gf_input.h>
15#include <gf_audio.h>
16
17/* Standard */
18#include <stdlib.h>
19#include <string.h>
20
21void gf_client_begin(void) { gf_draw_begin(); }
22
23void gf_client_end(void) { gf_draw_end(); }
24
25gf_client_t* gf_client_create(gf_engine_t* engine, const char* title) {
26 gf_client_t* client = malloc(sizeof(*client));
27 memset(client, 0, sizeof(*client));
28 client->engine = engine;
29 client->draw = gf_draw_create(engine, title);
30 if(client->draw == NULL) {
31 gf_log_function(engine, "Failed to create drawing interface", "");
32 gf_client_destroy(client);
33 return NULL;
34 }
35 client->audio = gf_audio_create(engine);
36 if(client->audio == NULL) {
37 gf_log_function(engine, "Failed to create audio interface", "");
38 gf_client_destroy(client);
39 return NULL;
40 }
41 client->input = gf_input_create(engine);
42 gf_draw_set_input(client->draw, client->input);
43 return client;
44}
45
46void gf_client_destroy(gf_client_t* client) {
47 if(client->draw != NULL) gf_draw_destroy(client->draw);
48 if(client->audio != NULL) gf_audio_destroy(client->audio);
49 if(client->input != NULL) gf_input_destroy(client->input);
50 gf_log_function(client->engine, "Destroyed client interface", "");
51 free(client);
52}
53
54int gf_client_step(gf_client_t* client) {
55 int s = gf_draw_step(client->draw);
56 return s;
57}
Audio interface.
Client interface.
Drawing interface.
Logger.
#define gf_log_function(engine, fmt,...)
Output log with line number and function name.
Definition gf_log.h:33
Required headers before anything.
Client interface.
Definition client.h:48
gf_draw_t * draw
Drawing interface.
Definition client.h:48
gf_audio_t * audio
Audio interface.
Definition client.h:48
gf_input_t * input
Input interface.
Definition client.h:48
gf_engine_t * engine
Engine instance.
Definition client.h:48
Engine instance.
Definition core.h:46