aboutsummaryrefslogtreecommitdiffstats
path: root/src/extern.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/extern.h')
-rw-r--r--src/extern.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/extern.h b/src/extern.h
new file mode 100644
index 0000000..482b9ed
--- /dev/null
+++ b/src/extern.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019-2020, yzrh <yzrh@noema.org>
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_ttf.h>
+
+#include "renderer.h"
+#include "game.h"
+#include "input.h"
+
+bool collision(int *a, int *b);
+bool collision_block(int *a, int *b);
+bool collision_bound(float x, float y, Snake_Text *message);
+
+void draw_clear(SDL_Renderer *renderer);
+void draw_colour(SDL_Renderer *renderer, Snake_Colour colour);
+void draw_text(SDL_Renderer *renderer, TTF_Font *font,
+ int text_x, int text_y, char *text,
+ bool centre, bool select, SDL_Color fg, SDL_Color bg,
+ Snake_Text *message);
+void draw_wall(SDL_Renderer *renderer);
+void draw_snake(SDL_Renderer *renderer, Snake_Pos **snake);
+void draw_fruit(SDL_Renderer *renderer, int *fruit);
+void draw_pipe(SDL_Renderer *renderer, Snake_Pos **pipe);
+
+void game_snake_init(Snake_Pos **snake, int dx);
+void game_snake_move(Snake_Pos **snake0, Snake_Pos **snake1,
+ Snake_Input *head, bool lawi, int *legal);
+void game_snake_grow(Snake_Pos **snake);
+void game_fruit(int *fruit, Snake_Pos **snake);
+void game_snake_fall(Snake_Pos **snake, bool norm, int speed);
+void game_pipe_init(Snake_Pos **pipe);
+void game_pipe_move(Snake_Pos **pipe);
+void game_pipe_add(Snake_Pos **pipe);
+void game_pipe_del(Snake_Pos **pipe);
+void game_pipe_pos(Snake_Pos **pipe, int *state);
+void game_pipe_bound(Snake_Pos **pipe, int *pos);
+
+void input_keyboard(SDL_Keycode sym, Snake_Input *code);
+void input_controller(uint8_t button, Snake_Input *code);
+void input_gpio(int gpio, uint8_t *button);
+
+#ifdef GPIO
+
+int gpio_export(int pin);
+int gpio_unexport(int pin);
+int gpio_config(int pin, int direction, int interrupt);
+int gpio_write(int pin, int value);
+int gpio_read(int pin);
+
+#endif /* GPIO */