diff options
author | Jacob Janzen <jacob.a.s.janzen@gmail.com> | 2024-02-14 12:01:03 -0600 |
---|---|---|
committer | Jacob Janzen <jacob.a.s.janzen@gmail.com> | 2024-02-14 12:01:03 -0600 |
commit | b5b4a5d66deefa3858bedf7bc58e6c96340e829b (patch) | |
tree | 4aa42f746be3c6ce409938796ca95175dfd1da86 /include | |
parent | 8bd664e467f760db6f689eb9d30c3d685abe6de5 (diff) |
major refactor
Diffstat (limited to 'include')
-rw-r--r-- | include/cavegen.h | 26 | ||||
-rw-r--r-- | include/common.h | 9 | ||||
-rw-r--r-- | include/display.h | 40 | ||||
-rw-r--r-- | include/entity.h | 13 | ||||
-rw-r--r-- | include/ht.h | 29 |
5 files changed, 117 insertions, 0 deletions
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 <stdbool.h> + +#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 <stdbool.h> + +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_ |