summaryrefslogtreecommitdiff
path: root/src/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.c')
-rw-r--r--src/game.c86
1 files changed, 4 insertions, 82 deletions
diff --git a/src/game.c b/src/game.c
index 621eb8a..d70f14c 100644
--- a/src/game.c
+++ b/src/game.c
@@ -65,103 +65,25 @@ static void main_loop_client(int sock)
bool running = true;
game_state_t state = STATE_CLIENT_WAIT_FOR_HAND_CARDS;
uint8_t round = 1;
- data_store *data = datamodel();
- uint8_t open_card_idx;
- uint8_t picked_stack_idx;
while(running)
{
switch(state)
{
case STATE_CLIENT_WAIT_FOR_HAND_CARDS:
- if(round == 1)
- {
- // Receive and display table stacks
- net_recv(sock, msg_type_initial_stacks);
- ui_display_wnd_table_cards(&data->table_stacks, false, 0);
- ui_display_wnd_stack_points(&data->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(&data->hand, false, 0);
-
- state = STATE_CLIENT_SELECT_OPEN_CARD;
+ state = state_client_wait_for_hand_cards(sock, round);
break;
case STATE_CLIENT_SELECT_OPEN_CARD:
- // Select open card
- open_card_idx = ui_choose_card(&data->hand);
- data->selected_card = data->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(&data->hand, open_card_idx);
- ui_display_wnd_hand_cards(&data->hand, false, 0);
-
- state = STATE_CLIENT_WAIT_FOR_OPEN_CARDS;
+ state = state_client_select_open_card(sock);
break;
case STATE_CLIENT_WAIT_FOR_OPEN_CARDS:
- net_recv(sock, msg_type_selected_card_all);
- pnoc_sort(data->players.players, data->players.count); // sort in ascending order
-
- ui_display_wnd_current_state(data->players.players, data->players.count, true, 0, 0); // TODO fix parameters
-
- //state = STATE_CLIENT_PLAY_CARDS;
- //sleep(2);
- //return;
- state = STATE_CLIENT_SELECT_OPEN_CARD;; // just for testing
+ state = state_client_wait_for_open_cards(sock);
break;
-
#if 0
case STATE_CLIENT_PLAY_CARDS:
- 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)
- {
- state = STATE_CLIENT_SELECT_OPEN_CARD;
- }
- else
- {
- receive_next_server_action();
- if (server_action == DEAL_CARDS)
- {
- round++;
- state = STATE_CLIENT_WAIT_CARDS;
- }
- else if (server_action == GAME_FINISHED)
- state = STATE_CLIENT_GAME_FINISHED;
- }
+ state = state_client_play_cards(sock);
break;
#endif
default: