]> git.lizzy.rs Git - nothing.git/blob - src/game/debug_tree.c
Remove TODO(#345)
[nothing.git] / src / game / debug_tree.c
1 #include <assert.h>
2 #include <stdlib.h>
3
4 #include "debug_tree.h"
5 #include "game/sprite_font.h"
6 #include "system/error.h"
7 #include "system/lt.h"
8
9 struct Debug_tree
10 {
11     Lt *lt;
12     const Sprite_font *font;
13     int enabled;
14 };
15
16 Debug_tree * create_debug_tree(const Sprite_font *font)
17 {
18     Lt * const lt = create_lt();
19
20     if (lt == NULL) {
21         return NULL;
22     }
23
24     Debug_tree * const debug_tree = PUSH_LT(lt, malloc(sizeof(Debug_tree)), free);
25     if (debug_tree == NULL) {
26         throw_error(ERROR_TYPE_LIBC);
27         RETURN_LT(lt, NULL);
28     }
29     debug_tree->lt = lt;
30
31     debug_tree->enabled = 0;
32     debug_tree->font = font;
33
34     return debug_tree;
35 }
36
37 void destroy_debug_tree(Debug_tree *debug_tree)
38 {
39     assert(debug_tree);
40     RETURN_LT0(debug_tree->lt);
41 }
42
43 int debug_tree_render(const Debug_tree *debug_tree,
44                       SDL_Renderer *renderer)
45 {
46     assert(debug_tree);
47     assert(renderer);
48
49     if (!debug_tree->enabled) {
50         return 0;
51     }
52
53     if (sprite_font_render_text(
54             debug_tree->font,
55             renderer,
56             vec(10.0f, 10.0f),
57             vec(5.0f, 5.0f),
58             color(0.0f, 0.0f, 0.0f, 1.0f),
59             "Hello Debug Tree") < 0) {
60         return -1;
61     }
62
63     return 0;
64 }
65
66 void debug_tree_toggle_enabled(Debug_tree *debug_tree)
67 {
68     debug_tree->enabled = !debug_tree->enabled;
69 }