]> git.gir.st - VIper.git/blob - viiper.h
move enums, struct defs, etc into header file
[VIper.git] / viiper.h
1 #ifndef __VIIPER_H__
2 #define __VIIPER_H__
3
4 #define SHORTHELP "%s [OPTIONS] [FIELDSIZE]\n"
5 #define LONGHELP \
6 "OPTIONS:\n" \
7 " -h(elp)\n" \
8 "FIELDSIZE:\n" \
9 " WxH (width 'x' height)\n" \
10 " defaults to 30x20\n" \
11 "\n" \
12 "Keybindings:\n" \
13 " hjkl: move left/down/up/right\n" \
14 " p: pause / unpause\n" \
15 " r: start a new game\n" \
16 " q: quit\n"
17
18 struct snake {
19 int r; /* row */
20 int c; /* column */
21 struct snake* next; /* points to tail */
22 };
23 struct item {
24 int r; /* row */
25 int c; /* column */
26 int t; /* type */
27 int v; /* value */ //TODO: make type only differentiate between food/bonus/etc, and use value (so we can randomly select one of each)
28 int s; /* spawn time (for bonus) */
29 struct item* prev;
30 struct item* next;
31 };
32 enum direction {
33 NONE,
34 NORTH,
35 EAST,
36 SOUTH,
37 WEST,
38 };
39 enum item_type {
40 NO_ITEM,
41 FOOD_5,
42 FOOD_10,
43 FOOD_20,
44 BONUS,
45
46 NUM_ITEMS,
47 };
48
49 int viiper(void);
50 void snake_advance (void);
51 void spawn_item (int type);
52 void consume_item (struct item* i);
53 void show_playfield (void);
54 void snake_append (struct snake* s, int row, int col);
55 void init_snake();
56 void quit (void);
57 int getctrlseq (void);
58 void move_ph (int line, int col);
59 void clamp_fieldsize (void);
60 void timer_setup (int enable);
61 void signal_setup (void);
62 void signal_handler (int signum);
63 void screen_setup (int enable);
64 void raw_mode(int enable);
65 enum event {
66 /* for getctrlseq() */
67 CTRSEQ_NULL = 0,
68 CTRSEQ_EOF = -1,
69 CTRSEQ_INVALID = -2,
70 CTRSEQ_MOUSE = -3,
71 CTRSEQ_CURSOR_LEFT = -7,
72 CTRSEQ_CURSOR_DOWN = -8,
73 CTRSEQ_CURSOR_UP = -9,
74 CTRSEQ_CURSOR_RIGHT = -10,
75 };
76
77 #endif
Imprint / Impressum