From b5b4a5d66deefa3858bedf7bc58e6c96340e829b Mon Sep 17 00:00:00 2001 From: Jacob Janzen Date: Wed, 14 Feb 2024 12:01:03 -0600 Subject: major refactor --- include/cavegen.h | 26 ++++++++++++++++++++++++++ include/common.h | 9 +++++++++ include/display.h | 40 ++++++++++++++++++++++++++++++++++++++++ include/entity.h | 13 +++++++++++++ include/ht.h | 29 +++++++++++++++++++++++++++++ 5 files changed, 117 insertions(+) create mode 100644 include/cavegen.h create mode 100644 include/common.h create mode 100644 include/display.h create mode 100644 include/entity.h create mode 100644 include/ht.h (limited to 'include') diff --git a/include/cavegen.h b/include/cavegen.h new file mode 100644 index 0000000..b6ed1e4 --- /dev/null +++ b/include/cavegen.h @@ -0,0 +1,26 @@ +#ifndef CAVEGEN_H_ +#define CAVEGEN_H_ + +#include "common.h" + +#define HEIGHT 100 +#define WIDTH 180 + +enum tile_type { + WALL, + GROUND, + UP_STAIR, + DOWN_STAIR, +}; + +struct map { + enum tile_type *map; + struct point entry_point; + + int width; + int height; +}; + +void create_cave(struct map *map); + +#endif // CAVEGEN_H_ diff --git a/include/common.h b/include/common.h new file mode 100644 index 0000000..11b11d4 --- /dev/null +++ b/include/common.h @@ -0,0 +1,9 @@ +#ifndef COMMON_H_ +#define COMMON_H_ + +struct point { + int x; + int y; +}; + +#endif // COMMON_H_ diff --git a/include/display.h b/include/display.h new file mode 100644 index 0000000..c4f5249 --- /dev/null +++ b/include/display.h @@ -0,0 +1,40 @@ +#ifndef DISPLAY_H_ +#define DISPLAY_H_ + +#include + +#include "cavegen.h" +#include "entity.h" +#include "ht.h" + +#define MAIN_PANEL_WIDTH 100 +#define MAIN_PANEL_HEIGHT 41 +#define INSTRUCTION_PANEL_WIDTH 32 +#define INSTRUCTION_PANEL_HEIGHT 39 +#define MESSAGE_PANEL_WIDTH 100 +#define MESSAGE_PANEL_HEIGHT 3 +#define STATUS_PANEL_WIDTH 32 +#define STATUS_PANEL_HEIGHT 5 + +typedef struct windows display_t; + +enum action { + ACTION_NONE, + ACTION_EXIT, + ACTION_DOWN, + ACTION_UP, + ACTION_LEFT, + ACTION_RIGHT, + ACTION_STAIR_DOWN, + ACTION_STAIR_UP, + NUM_ACTIONS, +}; + +display_t *display_init(void); +void display_map(display_t *disp, struct map *map, ht_t *entities); +void display_instructions(display_t *disp); +void display_message(display_t *disp, char *msg); +void display_status(display_t *disp, struct entity *entity); +enum action display_process_input(void); + +#endif // DISPLAY_H_ diff --git a/include/entity.h b/include/entity.h new file mode 100644 index 0000000..b003efe --- /dev/null +++ b/include/entity.h @@ -0,0 +1,13 @@ +#ifndef ENTITY_H_ +#define ENTITY_H_ + +#include "common.h" + +struct entity { + struct point p; + char *disp_ch; + bool solid; + bool visible; +}; + +#endif // ENTITY_H_ diff --git a/include/ht.h b/include/ht.h new file mode 100644 index 0000000..ef15540 --- /dev/null +++ b/include/ht.h @@ -0,0 +1,29 @@ +#ifndef HT_H_ +#define HT_H_ + +#include + +typedef struct hash_table ht_t; + +struct kvp { + char *key; + void *val; +}; + +// construct and destructor +ht_t *ht_create(int size); +void ht_destroy(ht_t *h); + +// accessors +void *ht_find(ht_t *h, char *key); +void ht_insert(ht_t *h, char *key, void *val); +void ht_delete(ht_t *h, char *key); + +// queries +int ht_size(ht_t *h); + +// iterator +void ht_iter_init(ht_t *h); +struct kvp ht_iter_next(ht_t *h); + +#endif // HT_H_ -- cgit v1.2.3