-void toggle_window (struct WinMeta * win_meta, struct Win * win) {
-// Toggle display of window win.
- if (0 != win->curses)
- suspend_window(win_meta, win);
- else
- append_window(win_meta, win); }
-
-struct Map init_map () {
-// Initialize map with some experimental start values.
- struct Map map;
- map.width = 128;
- map.height = 128;
- map.offset_x = 0;
- map.offset_y = 0;
- map.player_x = 2;
- map.player_y = 2;
- map.cells = malloc(map.width * map.height);
- int x, y;
- for (y = 0; y < map.height; y++)
- for (x = 0; x < map.width; x++)
- map.cells[(y * map.width) + x] = '.';
- map.cells[(5 * map.width) + 5] = 'X';
- map.cells[(3 * map.width) + 8] = 'X';
- map.cells[(8 * map.width) + 3] = 'X';
- return map; }
-
-void update_info (struct World * world) {
-// Update info data by incrementing turn value.
- world->turn++; }
-
-void update_log (struct World * world, char * text) {
-// Update log with new text to be appended.
- char * new_text;
- int len_old = strlen(world->log);
- int len_new = strlen(text);
- int len_whole = len_old + len_new + 1;
- new_text = calloc(len_whole, sizeof(char));
- memcpy(new_text, world->log, len_old);
- memcpy(new_text + len_old, text, len_new);
- free(world->log);
- world->log = new_text; }
-
-int get_action_key (struct KeyBinding * keybindings, char * name) {
-// Return key matching name in keybindings.
- int i = 0;
- while (strcmp(keybindings[i].name, name) )
- i++;
- return keybindings[i].key; }
-
-char * get_keyname(int keycode) {
-// Translate some keycodes to readable names of max 9 chars.
- char * keyname;
- keyname = malloc(15);
- if (32 < keycode && keycode < 127)
- sprintf(keyname, "%c", keycode);
- else if (keycode == 9)
- sprintf(keyname, "TAB");
- else if (keycode == 10)
- sprintf(keyname, "RETURN");
- else if (keycode == 27)
- sprintf(keyname, "ESCAPE");
- else if (keycode == 32)
- sprintf(keyname, "SPACE");
- else if (keycode == KEY_UP)
- sprintf(keyname, "UP");
- else if (keycode == KEY_DOWN)
- sprintf(keyname, "DOWN");
- else if (keycode == KEY_LEFT)
- sprintf(keyname, "LEFT");
- else if (keycode == KEY_RIGHT)
- sprintf(keyname, "RIGHT");
- else if (keycode == KEY_HOME)
- sprintf(keyname, "HOME");
- else if (keycode == KEY_BACKSPACE)
- sprintf(keyname, "BACKSPACE");
- else if (keycode >= KEY_F0 && keycode <= KEY_F(63)) {
- int f = keycode - KEY_F0;
- sprintf(keyname, "F%d", f); }
- else if (keycode == KEY_DC)
- sprintf(keyname, "DELETE");
- else if (keycode == KEY_IC)
- sprintf(keyname, "INSERT");
- else if (keycode == KEY_NPAGE)
- sprintf(keyname, "NEXT PAGE");
- else if (keycode == KEY_PPAGE)
- sprintf(keyname, "PREV PAGE");
- else if (keycode == KEY_END)
- sprintf(keyname, "END");
- else
- sprintf(keyname, "(unknown)");
- return keyname; }
-