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