void worms_process_input(const int ch) { switch ( ch ) { case 'h': case 'H': case KEY_LEFT: worm_set_direction(WORM_DIR_LEFT); break; case 'j': case 'J': case KEY_DOWN: worm_set_direction(WORM_DIR_DOWN); break; case 'k': case 'K': case KEY_UP: worm_set_direction(WORM_DIR_UP); break; case 'l': case 'L': case KEY_RIGHT: worm_set_direction(WORM_DIR_RIGHT); break; case 'q': case 'Q': tge_end_game(WORMS_EXIT_NORMAL); break; } }
static int get_move (void) { int player, move; if (ggz_read_int (fd, &player) < 0 || ggz_read_int (fd, &move) < 0) return -1; /* show some kind of pregame thing.... */ worm_set_direction (player, move); return 0; }
static void gnibbles_worm_dequeue_keypress (GnibblesWorm * worm) { key_queue_entry *entry; int n = worm->number; entry = (key_queue_entry *) g_queue_pop_head (key_queue[n]); worm_set_direction (entry->worm->number, entry->dir); g_free (entry); }
void worm_handle_direction (int worm, int dir) { if (ggz_network_mode) { #ifdef GGZ_CLIENT network_game_move (dir); worms[0]->direction = dir; worms[0]->keypress = 1; #endif } else { worm_set_direction (worm, dir); } }