diff --git a/http-response.h b/http-response.h index 11a55c2c670be3afbe20c2dc46892d3291d134da..63fdbb30275c61b0dbfcaefcf29aa904e91c43a3 100644 --- a/http-response.h +++ b/http-response.h @@ -19,4 +19,4 @@ char* cookie_generator(); void free_response(Response* resp); -Response* initialise_session(Request* request); \ No newline at end of file +Response* initialise_session(Request* request); diff --git a/http-server.c b/http-server.c index 6a35732b042294b73e443fc5967c06d70631d4fd..c91fb1ebc3cf1c82b8c69f8c3094cac103e2acde 100644 --- a/http-server.c +++ b/http-server.c @@ -231,28 +231,32 @@ static bool handle_http_request(int sockfd, User_list *users) printf("run\n\n\n\n\\n"); change_player_status(sockfd,users, QUIT); request(buff,sockfd, "7_gameover.html"); + // free_request(req); + // return false; } else if (strncmp(req->url, "/?start=Start", 24) == 0){ // printf("matches start"); if (req->method == GET){ change_player_status(sockfd, users, READY); int round = change_player_round(sockfd, users); - // printf("THIS IS ROUND NUMBER %d\n", round); - //get_request(buff, sockfd, "3_first_turn.html"); game_change(buff,sockfd, "3_first_turn.html", round); } if (req->method == POST){ if(strncmp(req->body, "keyword=", 8) == 0){ - if(player_won(users)){ - request(buff,sockfd, "6_endgame.html"); - change_all_status(users, RESTART); - } - else if(should_player_quit(users)){ + if(should_player_quit(users)){ + printf("is quit"); change_player_status(sockfd,users, QUIT); request(buff,sockfd, "7_gameover.html"); - free_request(req); - keep_alive = 0; - return false; + // free_request(req); + // keep_alive = 0; + // return false; + } + else if (different_round_discard(sockfd,users)){ + game_change(buff,sockfd, "5_discarded.html", user->round); + } + else if(player_won(users)){ + request(buff,sockfd, "6_endgame.html"); + change_player_status(sockfd, users, WAIT); } else if(!players_ready(users) && user!= NULL){ game_change(buff,sockfd, "5_discarded.html", user->round); @@ -268,11 +272,9 @@ static bool handle_http_request(int sockfd, User_list *users) if(user!= NULL){ char* keywords = return_all_keywords(user); text_render_game_play(buff,sockfd, "4_accepted.html", keywords, user->round); - //text_render_request(buff, sockfd, "4_accepted.html", keywords); free(keywords); } } - // free(keyword); } } } @@ -455,8 +457,6 @@ int main(int argc, char * argv[]) } } } - printf("exit loop\n"); free_users(users); - printf("free users fun loop\n"); return 0; } diff --git a/user.c b/user.c index 6fc8e0fb07c711d8c69777dceac4e4561184adab..22b67bc48472e686bb132fc2fdb71251c2da8cbb 100644 --- a/user.c +++ b/user.c @@ -69,9 +69,9 @@ void add_user(User* user, User_list* users){ void free_users(User_list* users){ for (int i=0; i <users->n_users; i++){ - for(int j=0; j < users->users[i]->n_keywords; j++){ - free(&users->users[i]->keywords[j]); - } + // for(int j=0; j < users->users[i]->n_keywords; j++){ + // free(&users->users[i]->keywords[j]); + // } free(users->users[i]->keywords); free(users->users[i]); } @@ -132,6 +132,17 @@ int change_player_round(int user_id, User_list* users){ } }return round; } +bool different_round_discard(int user_id,User_list* users){ + User *user = get_current_user(users, user_id); + if (user != NULL && user->status ==READY){ + for(int i=1; i< users->n_users; i++){ + if(users->users[i]->round != users->users[i-1]->round){ + return true; + } + } + } + return false; +} bool keyword_match(User* user, char* keyword){ printf("keyword is %s\n\n", keyword); diff --git a/user.h b/user.h index 7a1ebd9ae505df6b4e35c82d4ce471a3665c88d8..d39ef993ab1a04e66f571fe1d6d037f62ca09652 100644 --- a/user.h +++ b/user.h @@ -48,6 +48,8 @@ void change_all_status(User_list* users, STATUS status); int change_player_round(int user_id, User_list* users); +bool different_round_discard(int user_id, User_list* users); + bool keyword_match(User* user, char* keyword); void reset_players(User_list *users);