#ifndef __SCHEMES_H__ #define __SCHEMES_H__ #include "viiper.h" /* for enum items */ #define BORDER_T 0 #define BORDER_C 1 #define BORDER_B 2 #define BORDER_S 3 #define BORDER_L 0 #define BORDER_R 2 #define BORDER(v,h) op.sch->border[BORDER_ ## v][BORDER_ ## h] struct scheme { char* border[4][3]; char* snake[5][5]; /* [predecessor][successor] */ char* color[3]; /* 0=even, 1=odd, 2=head */ char* food[NUM_FOODS]; char* boni[NUM_BONI]; /* for en-/disabling e.g. DEC charset: */ char* init_seq; char* reset_seq; int cell_width; /* number of characters per cell */ int display_width; /* how wide a cell appears to be */ }; struct scheme unic0de = { .border = { {"╔", "══", "╗"}, {"║", " ", "║"}, {"╚", "══", "╝"}, { "╡","","╞" }, }, .snake = { /* sorted like in the enum directions */ {/* NONE -> */ /*NONE */ "", /*NORTH*/ "⢿⡿", /*EAST */ "⢾⣿", /*SOUTH*/ "⣾⣷", /*WEST */ "⣿⡷", },{/* NORTH -> */ /*NONE */ "⢇⡸", /*NORTH*/ "", /*EAST */ "⢇⣈", /*SOUTH*/ "⡇⢸", /*WEST */ "⣁⡸", },{/* EAST -> */ /*NONE */ "⢎⣉", /*NORTH*/ "⢇⣈", /*EAST */ "", /*SOUTH*/ "⡎⢉", /*WEST */ "⣉⣉", },{/* SOUTH -> */ /*NONE */ "⡎⢱", /*NORTH*/ "⡇⢸", /*EAST */ "⡎⢉", /*SOUTH*/ "", /*WEST */ "⡉⢱", },{/* WEST -> */ /*NONE */ "⣉⡱", /*NORTH*/ "⣁⡸", /*EAST */ "⣉⣉", /*SOUTH*/ "⡉⢱", /*WEST */ "", }, }, .color = {"32", "92", "92;1"}, .food = { [FOOD_5] = "🍐", [FOOD_10] = "🍎", [FOOD_20] = "🥑", }, .boni = { [BONUS_SNIP] = "✂️ ", [BONUS_GROW] = "🐍", [BONUS_SLOW] = "🐌", [BONUS_FAST] = "🐇", }, .cell_width = 2, .display_width = 2, }; struct scheme vt220_charset = { .border = { {"\033#6\x6c","\x71","\x6b"}, {"\033#6\x78"," ","\x78"}, {"\033#6\x6d","\x71","\x6a"}, { "=","","=" }, }, .snake = { {"@","A",">","V","<"}, //head {"#","#","#","#","#"}, {"#","#","#","#","#"}, {"#","#","#","#","#"}, {"#","#","#","#","#"}, }, .color = {"0", "0", "1"}, .food = { "$", "%", "&", }, .boni = { "x", "|", "s", "f", }, .init_seq = "\033(0\033*B\x0f" /* G0=Graphics, G2=ASCII, invoke G0 */ "\033[?3l", /* disable 132 column mode (DECCOLM) */ .reset_seq = "\033(B" /* reset to DEC Multinational Character Set */ "\033[?3h", /* reenable DECCOLM (WARN: unconditionally!)*/ .cell_width = 1, .display_width = 2, }; #endif