Coverage report for server


src/
File: src/death.c
Date: 2024-06-25 10:57:05
Lines:
0/29
0.0%
Functions:
0/3
0.0%
Branches:
0/16
0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy
4 ** File description:
5 ** death.c
6 */
7
8 #include "server.h"
9
10 ✗ static void send_pin_for_food_update(client_t *client, server_t *s)
11 {
12 ✗ message_to_graphicals(s, "pin %d %d %d %d %d %d %d %d %d %d\n",
13 ✗ client->id, client->x, client->y, client->inventory.food,
14 client->inventory.linemate, client->inventory.deraumere,
15 client->inventory.sibur, client->inventory.mendiane,
16 client->inventory.phiras, client->inventory.thystame);
17 ✗ }
18
19 ✗ static bool handle_client_death(
20 client_t *client,
21 server_t *s,
22 time_t sec_sus,
23 long nsec_sus
24 )
25 {
26 ✗ double elapsed = sec_sus + (nsec_sus / (double)NANOSECONDS_IN_SECOND);
27 ✗ double interval = PLAYER_LIFE_LIMIT / (double)s->proprieties.frequency;
28
29 ✗ if (elapsed >= interval) {
30 ✗ client->inventory.food -= 1;
31 ✗ clock_gettime(CLOCK_REALTIME, &client->live_time);
32 ✗ send_pin_for_food_update(client, s);
33 }
34 ✗ if (client->inventory.food == 0) {
35 ✗ dprintf(client->fd, "dead\n");
36 ✗ close(client->fd);
37 ✗ FD_CLR(client->fd, &s->current_sockets);
38 ✗ message_to_graphicals(s, "pdi %d\n", client->id);
39 ✗ remove_client_by_fd(&s->clients, client->fd);
40 ✗ return true;
41 }
42 return false;
43 }
44
45 ✗ bool handle_client_life(server_t *s)
46 {
47 ✗ struct timespec current = s->current_time;
48 struct timespec live_time;
49 client_t *client;
50 time_t sec_sus;
51 long nsec_sus;
52
53 ✗ for (client_list_t *item = TAILQ_FIRST(&s->clients); item;
54 ✗ item = TAILQ_NEXT(item, entries)) {
55 ✗ client = item->client;
56 ✗ if (client->is_connected == false || client->is_graphic == true)
57 ✗ continue;
58 ✗ live_time = client->live_time;
59 ✗ sec_sus = (current.tv_sec - live_time.tv_sec);
60 ✗ nsec_sus = (current.tv_nsec - live_time.tv_nsec);
61 ✗ if (handle_client_death(client, s, sec_sus, nsec_sus) == true)
62 return true;
63 }
64 return false;
65 }
66