- uint32_t last_turn = 0;
- while (1) {
- if (last_turn != world.turn) {
- save_game(&world);
- last_turn = world.turn; }
- draw_all_windows (&win_meta);
- key = getch();
- if (key == get_action_key(world.keybindings, "quit"))
- break;
- else if (key == get_action_key(world.keybindings, "scroll pad right"))
- scroll_pad (&win_meta, '+');
- else if (key == get_action_key(world.keybindings, "scroll pad left"))
- scroll_pad (&win_meta, '-');
- else if (key == get_action_key(world.keybindings, "toggle keys window"))
- toggle_window(&win_meta, &win_keys);
- else if (key == get_action_key(world.keybindings, "toggle map window"))
- toggle_window(&win_meta, &win_map);
- else if (key == get_action_key(world.keybindings, "toggle info window"))
- toggle_window(&win_meta, &win_info);
- else if (key == get_action_key(world.keybindings, "toggle log window"))
- toggle_window(&win_meta, &win_log);
- else if (key == get_action_key(world.keybindings, "cycle forwards"))
- cycle_active_window(&win_meta, 'n');
- else if (key == get_action_key(world.keybindings, "cycle backwards"))
- cycle_active_window(&win_meta, 'p');
- else if (key == get_action_key(world.keybindings, "shift forwards"))
- shift_active_window(&win_meta, 'f');
- else if (key == get_action_key(world.keybindings, "shift backwards"))
- shift_active_window(&win_meta, 'b');
- else if (key == get_action_key(world.keybindings, "grow horizontally"))
- growshrink_active_window(&win_meta, '*');
- else if (key == get_action_key(world.keybindings, "shrink horizontally"))
- growshrink_active_window(&win_meta, '_');
- else if (key == get_action_key(world.keybindings, "grow vertically"))
- growshrink_active_window(&win_meta, '+');
- else if (key == get_action_key(world.keybindings, "shrink vertically"))
- growshrink_active_window(&win_meta, '-');
- else if (key == get_action_key(world.keybindings, "save keys"))
- save_keybindings(&world);
- else if (key == get_action_key(world.keybindings, "keys nav up"))
- keyswin_move_selection (&world, 'u');
- else if (key == get_action_key(world.keybindings, "keys nav down"))
- keyswin_move_selection (&world, 'd');
- else if (key == get_action_key(world.keybindings, "keys mod"))
- keyswin_mod_key (&world, &win_meta);
- else if (key == get_action_key(world.keybindings, "map up"))
- map_scroll (&map, 'n');
- else if (key == get_action_key(world.keybindings, "map down"))
- map_scroll (&map, 's');
- else if (key == get_action_key(world.keybindings, "map right"))
- map_scroll (&map, 'e');
- else if (key == get_action_key(world.keybindings, "map left"))
- map_scroll (&map, 'w');
- else if (key == get_action_key(world.keybindings, "player down"))
- move_player(&world, 's');
- else if (key == get_action_key(world.keybindings, "player up"))
- move_player(&world, 'n');
- else if (key == get_action_key(world.keybindings, "player right"))
- move_player(&world, 'e');
- else if (key == get_action_key(world.keybindings, "player left"))
- move_player(&world, 'w');
- else if (key == get_action_key(world.keybindings, "wait") )
- player_wait (&world); }
+ unsigned char result;
+ if (0 == world.interactive) {
+ int action;
+ while (1) {
+ draw_all_windows (&win_meta);
+ key = getch();
+ if (key == get_action_key(world.keybindings, "wait / next turn") ) {
+ action = getc(file);
+ if (EOF == action)
+ break;
+ else if (0 == action)
+ player_wait (&world);
+ else if ('s' == action)
+ move_player(&world, 's');
+ else if ('n' == action)
+ move_player(&world, 'n');
+ else if ('e' == action)
+ move_player(&world, 'e');
+ else if ('w' == action)
+ move_player(&world, 'w'); }
+ else
+ result = meta_keys(key, &world, &win_meta, &win_keys, &win_map, &win_info, &win_log);
+ if (1 == result)
+ break; } }
+ else {
+ uint32_t last_turn = 0;
+ while (1) {
+ if (last_turn != world.turn) {
+ save_game(&world);
+ last_turn = world.turn; }
+ draw_all_windows (&win_meta);
+ key = getch();
+ if (key == get_action_key(world.keybindings, "player down"))
+ move_player(&world, 's');
+ else if (key == get_action_key(world.keybindings, "player up"))
+ move_player(&world, 'n');
+ else if (key == get_action_key(world.keybindings, "player right"))
+ move_player(&world, 'e');
+ else if (key == get_action_key(world.keybindings, "player left"))
+ move_player(&world, 'w');
+ else if (key == get_action_key(world.keybindings, "wait / next turn"))
+ player_wait (&world);
+ else
+ result = meta_keys(key, &world, &win_meta, &win_keys, &win_map, &win_info, &win_log);
+ if (1 == result)
+ break; } }