diff options
| author | Mario Kilies <MarioKilies@GMX.net> | 2011-01-25 22:41:59 +0100 |
|---|---|---|
| committer | Mario Kilies <MarioKilies@GMX.net> | 2011-01-25 22:41:59 +0100 |
| commit | 92f8870fa7a75be8458e35fb8de51965c5c33d91 (patch) | |
| tree | 9e1539a75c75d103ee7822959cbbf53b273da055 | |
| parent | 6a26a90035389d3b7b82b05de0199d20259a0bc2 (diff) | |
Slowed down the 'play cards' state by inserting a delay. The player who is currently placing its card/picking its stack is highlighted.
| -rw-r--r-- | src/client_game_states.c | 23 | ||||
| -rw-r--r-- | src/game.c | 12 | ||||
| -rw-r--r-- | src/ui.c | 1 |
3 files changed, 27 insertions, 9 deletions
diff --git a/src/client_game_states.c b/src/client_game_states.c index 76be70b..49870ed 100644 --- a/src/client_game_states.c +++ b/src/client_game_states.c @@ -49,14 +49,14 @@ game_state_t state_client_wait_for_open_cards(const int sock) { data_store_t *d = data_store(); - ui_display_wnd_messages("Waiting for the other players to pick their cards"); + ui_display_wnd_messages("Waiting for the other players to pick their cards"); // The two spaces between 'pick' and 'their' are intentionally and used for poor man's word wrap net_recv(sock, msg_type_selected_card_all); player_list_sort_by_open_card(&d->player_list, d->player_list.count); // sort in ascending order player_list_entry_t *ple = get_player_list_entry_by_player_id(&d->player_list, d->own_player_id); assert(ple != NULL); - ui_display_wnd_current_state(&d->player_list, d->player_list.count, true, 0, ple->score); // TODO fix parameters + ui_display_wnd_current_state(&d->player_list, d->player_list.count, false, 0, ple->score); return STATE_CLIENT_PLAY_CARDS; } @@ -64,15 +64,20 @@ game_state_t state_client_wait_for_open_cards(const int sock) game_state_t state_client_play_cards(const int sock) { data_store_t *ds = data_store(); + player_list_entry_t *ple = get_player_list_entry_by_player_id(&ds->player_list, ds->own_player_id); + assert(ple != NULL); for(int i=0; i<ds->player_list.count; i++) { card c = ds->player_list.players[i].open_card; uint8_t stack_idx = get_stack_idx_for_card(&ds->table_stacks, c); + bool our_turn = (ds->player_list.players[i].player_id == ds->own_player_id); + + ui_display_wnd_current_state(&ds->player_list, ds->player_list.count, true, i, ple->score); if(stack_idx >= NUM_TABLE_STACKS) // card does not fit on any stack { - if(ds->player_list.players[i].player_id == ds->own_player_id) // our turn to select stack + if(our_turn) // our turn to select stack { ui_display_wnd_messages("Please choose a stack"); ds->stack_index = ui_choose_stack(&ds->table_stacks); @@ -88,9 +93,9 @@ game_state_t state_client_play_cards(const int sock) ui_display_wnd_stack_points(&ds->table_stacks, false, 0); // If it was our turn, display the score - if(ds->player_list.players[i].player_id == ds->own_player_id) + if(our_turn) { - ui_display_wnd_current_state(&ds->player_list, ds->player_list.count, true, 0, ds->player_list.players[i].score); // TODO fix parameters + ui_display_wnd_current_state(&ds->player_list, ds->player_list.count, true, i, ple->score); } } else // card fits on a stack -> place it @@ -102,9 +107,9 @@ game_state_t state_client_play_cards(const int sock) card_stack_replace(cs, c); // If it was our turn, display the score - if(ds->player_list.players[i].player_id == ds->own_player_id) + if(our_turn) { - ui_display_wnd_current_state(&ds->player_list, ds->player_list.count, true, 0, ds->player_list.players[i].score); // TODO fix parameters + ui_display_wnd_current_state(&ds->player_list, ds->player_list.count, true, i, ple->score); } } else @@ -113,6 +118,10 @@ game_state_t state_client_play_cards(const int sock) ui_display_wnd_table_cards(&ds->table_stacks, false, 0); ui_display_wnd_stack_points(&ds->table_stacks, false, 0); } + + // Wait between player turns, but not after the last one + if (i != ds->player_list.count - 1) + sleep(3); } if(hand_count_cards(&ds->hand) > 0) // still cards in hand? @@ -106,7 +106,7 @@ void start_game(const bool servermode, const char* addr, const char* port) { int server_sock; socket_list_t client_socks; - uint8_t num_players = 2; + uint8_t num_players = 3; srand(time(0)); // Initialize RNG //srand(1337); // Constant debug RNG seed @@ -142,7 +142,7 @@ void start_game(const bool servermode, const char* addr, const char* port) sock = client_connect_server(addr, port); data_store_t *data = data_store(); - strncpy(data->nickname, "nickname", 10); + strncpy(data->nickname, getenv("USER"), 10); net_send(sock, msg_type_hello_c, NULL); net_recv(sock, msg_type_hello_s); net_recv(sock, msg_type_start_game); @@ -158,6 +158,14 @@ void start_game(const bool servermode, const char* addr, const char* port) main_loop_client(sock); ui_fini(); + + printf("Final scores:\n"); + player_list_entry_t *ple; + for (int i = 0; i < data->player_list.count; i++) + { + ple = &data->player_list.players[i]; + printf("%s: %d\n", ple->player_name, ple->score); + } } destroy_data_store(); @@ -219,6 +219,7 @@ void ui_display_wnd_current_state(const player_list_t *pl, const uint8_t num_pla assert(pl != NULL); uint8_t pos = 0; + wclear(w_current_state); wattron(w_current_state, A_BOLD); mvwprintw(w_current_state, 0, 0, "Current state:"); mvwprintw(w_current_state, 0, 22, "Your Score: %3d", score); |
