back to scratko.xyz
aboutsummaryrefslogtreecommitdiff
path: root/server_game_process.h
diff options
context:
space:
mode:
Diffstat (limited to 'server_game_process.h')
-rw-r--r--server_game_process.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/server_game_process.h b/server_game_process.h
new file mode 100644
index 0000000..1518c8c
--- /dev/null
+++ b/server_game_process.h
@@ -0,0 +1,72 @@
+#ifndef SERVER_GAME_PROCESS_H_SENTRY
+#define SERVER_GAME_PROCESS_H_SENTRY
+
+#include "card_stack.h"
+#include "server.h"
+#include "card_queue.h"
+
+enum {
+ start_deck_size = 6
+};
+
+enum {
+ max_shuffled_deck_size = 52,
+ max_card_arr_size = 18
+};
+
+struct game_info {
+ int players_number;
+ int *card_quantity_arr;
+ int shuffled_cards_left;
+ const char* trump_suit;
+ int position_whose_turn;
+ struct cards_on_table cot;
+ struct card_queue *cq;
+};
+
+char** get_shuffled_deck();
+void deal_first_cards(char **shuffled_deck, int *cards_left,
+ player_cards *deck);
+
+const char* find_trump_suit(char **shuffled_deck, int *cards_left);
+int find_lowest_trump(player_cards deck, char *trump);
+void shift_turn_queue_to_first(struct session **turn_queue, int size);
+void update_card_quantity_arr(struct server *serv);
+
+struct game_info* get_new_game_info(int players_number, int *card_quantity_arr,
+ int shuffled_cards_left, char *trump_suit,
+ int number_whose_turn);
+
+int is_card_bit(const char *attack_card, const char *defend_card,
+ const char *trump_suit);
+
+int check_defender_can_defend(struct cards_on_table *cot,
+ struct player_cards deck, const char *trump_suit);
+
+void update_game_info(struct game_info *gi, int players_number,
+ int shuffled_cards_left, int position_whose_turn);
+
+int check_someone_can_toss_card(struct session **turn_queue,
+ int players_quantity,
+ struct card_queue *cq);
+
+int check_player_can_toss_card(player_cards deck, struct cards_on_table *cot);
+int is_correct_tossing_card(const char *card, struct cards_on_table *cot);
+
+void put_all_cards_from_queue_to_table(struct cards_on_table *cot,
+ struct card_queue *cq);
+
+void put_one_card_from_queue_to_table(struct cards_on_table *cot,
+ struct card_queue *cq);
+
+void put_defender_card_on_table(struct cards_on_table *cot, const char *card)
+
+void move_all_cards_to_defender(struct cards_on_table *cot,
+ struct card_queue *cq, player_cards *deck);
+void remove_cards_from_table(struct cards_on_table *cot);
+
+int calculate_defense_card_quantity_on_table(const struct cards_on_table *cot);
+int calculate_attack_card_quantity_on_table(const struct cards_on_table *cot);
+int check_all_answers_were_received(const session **turn_queue, int size);
+
+#endif