#include "game_states.h" #include "net/comm.h" #include "ui.h" #include "global.h" game_state_t state_client_wait_for_hand_cards(const int sock, const uint8_t round) { data_store *d = datamodel(); if(round == 1) { // Receive and display table stacks net_recv(sock, msg_type_initial_stacks); ui_display_wnd_table_cards(&d->table_stacks, false, 0); ui_display_wnd_stack_points(&d->table_stacks, false, 0); } // Wait for hand cards from server and display them net_recv(sock, msg_type_deal_hand); ui_display_wnd_hand_cards(&d->hand, false, 0); return STATE_CLIENT_SELECT_OPEN_CARD; } game_state_t state_client_select_open_card(const int sock) { data_store *d = datamodel(); uint8_t open_card_idx; // Select open card open_card_idx = ui_choose_card(&d->hand); d->selected_card = d->hand.cards[open_card_idx]; // Send open card to server net_send(sock, msg_type_selected_card, NULL); // Remove picked open card from hand hand_remove_card(&d->hand, open_card_idx); ui_display_wnd_hand_cards(&d->hand, false, 0); return STATE_CLIENT_WAIT_FOR_OPEN_CARDS; } game_state_t state_client_wait_for_open_cards(const int sock) { data_store *d = datamodel(); net_recv(sock, msg_type_selected_card_all); pnoc_sort(d->players.players, d->players.count); // sort in ascending order ui_display_wnd_current_state(d->players.players, d->players.count, true, 0, 0); // TODO fix parameters //return STATE_CLIENT_PLAY_CARDS; return STATE_CLIENT_SELECT_OPEN_CARD;; // just for testing } game_state_t state_client_play_cards(const int sock) { #if 0 data_store *d = datamodel(); uint8_t stack_idx; foreach(open_card) { play_lowest_open_card { determine_stack_for_open_card { if (stack_has_to_be_picked) { if (we_have_to_pick) { pick_stack(); send_stack_to_server(); } else // another client has to pick { receive_stack(); } clear_stack(stack_id); } } place_card() { if(count_stack_cards == 6) clear_stack(stack_id); } } } if (we_have_hand_cards) { return STATE_CLIENT_SELECT_OPEN_CARD; } else { receive_next_server_action(); if (server_action == DEAL_CARDS) { round++; return STATE_CLIENT_WAIT_FOR_CARDS; } else if (server_action == GAME_FINISHED) return STATE_CLIENT_GAME_FINISHED; } #endif return 1337; }