]> git.gir.st - VIper.git/blob - schemes.h
fix fast 180° turns (queue all directional keystrokes)
[VIper.git] / schemes.h
1 #ifndef __SCHEMES_H__
2 #define __SCHEMES_H__
3
4 #include "viiper.h" /* for enum items */
5
6 #define BORDER_T 0
7 #define BORDER_C 1
8 #define BORDER_B 2
9 #define BORDER_S 3
10 #define BORDER_L 0
11 #define BORDER_R 2
12 #define BORDER(v,h) op.scheme->border[BORDER_ ## v][BORDER_ ## h]
13
14 struct scheme {
15 char* border[4][3];
16
17 char* snake[5][5]; /* [predecessor][successor] */
18
19 char* item[NUM_FOODS];
20
21 /* for en-/disabling e.g. DEC charset: */
22 char* init_seq;
23 char* reset_seq;
24 };
25
26 struct scheme unic0de = {
27 .border = {
28 {"╔═", "══", "═╗"},
29 {"║ ", " ", " ║"},
30 {"╚═", "══", "═╝"},
31 { "╡","","╞" },
32 },
33
34 .snake = { /* sorted like in the enum directions */
35 {/* NONE -> */
36 /*NONE */ "",
37 /*NORTH*/ "⢿⡿",
38 /*EAST */ "⢾⣿",
39 /*SOUTH*/ "⣾⣷",
40 /*WEST */ "⣿⡷",
41 },{/* NORTH -> */
42 /*NONE */ "⢇⡸",
43 /*NORTH*/ "",
44 /*EAST */ "⢇⣈",
45 /*SOUTH*/ "⡇⢸",
46 /*WEST */ "⣁⡸",
47 },{/* EAST -> */
48 /*NONE */ "⢎⣉",
49 /*NORTH*/ "⢇⣈",
50 /*EAST */ "",
51 /*SOUTH*/ "⡎⢉",
52 /*WEST */ "⣉⣉",
53 },{/* SOUTH -> */
54 /*NONE */ "⡎⢱",
55 /*NORTH*/ "⡇⢸",
56 /*EAST */ "⡎⢉",
57 /*SOUTH*/ "",
58 /*WEST */ "⡉⢱",
59 },{/* WEST -> */
60 /*NONE */ "⣉⡱",
61 /*NORTH*/ "⣁⡸",
62 /*EAST */ "⣉⣉",
63 /*SOUTH*/ "⡉⢱",
64 /*WEST */ "",
65 },
66 },
67
68 .item = {
69 [FOOD_5] = "🍐",
70 [FOOD_10] = "🍎",
71 [FOOD_20] = "🥑",
72 },
73 };
74
75 #endif
Imprint / Impressum