Coverage report for ai


src/
File: src/run/listeners/broadcast/ListenGroupBroadcast.cpp
Date: 2024-06-25 10:57:00
Lines:
0/60
0.0%
Functions:
0/4
0.0%
Branches:
0/133
0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy/ai/run/listeners/broadcast
4 ** File description:
5 ** ListenGroupBroadcast.cpp
6 */
7
8 #include "../../../bots/ABot.hpp"
9
10 #include <iostream>
11 #include <string>
12 #include <sstream>
13
14 ✗ void ABot::listenGroupBroadcast(const std::string &message)
15 {
16 ✗ if (_state.metadata["should_group"] != "true") // TODO: rename it in process_group ?
17 {
18 try
19 {
20 ✗ size_t firstUnderscore = message.find('_');
21 ✗ size_t secondUnderscore = message.find('_', firstUnderscore + 1);
22
23 ✗ if (firstUnderscore == std::string::npos || secondUnderscore == std::string::npos)
24 {
25 ✗ throw std::invalid_argument("Invalid format: underscores not found");
26 }
27
28 ✗ std::string levelStr = message.substr(firstUnderscore + 1, secondUnderscore - firstUnderscore - 1);
29
30 ✗ std::string currentIdGroup = message.substr(secondUnderscore + 1);
31
32 ✗ unsigned int askLevel = std::stoi(levelStr);
33
34 ✗ _state.metadata["id_group"] = currentIdGroup;
35
36 ✗ if (_state.level + 1 == askLevel)
37 {
38 ✗ queue.clear();
39 ✗ _state.metadata["should_group"] = "true";
40 ✗ _state.state = ACT_ON_BROADCAST;
41 }
42 }
43 ✗ catch (std::invalid_argument &e)
44 {
45 ✗ PRINT_ERROR(e.what());
46 ✗ }
47 ✗ catch (std::out_of_range &e)
48 {
49 ✗ PRINT_ERROR(e.what());
50 ✗ }
51 }
52 ✗ }
53
54 ✗ void ABot::listenGroupJoinedBroadcast(const std::string &message)
55 {
56 ✗ size_t underscorePos = message.find('_');
57 ✗ std::string idGroup = "0";
58
59 ✗ if (underscorePos != std::string::npos)
60 {
61 ✗ idGroup = message.substr(underscorePos + 1);
62 }
63 else
64 {
65 return;
66 }
67 ✗ if (idGroup == _state.metadata["id_group"])
68 ✗ _state.nbAlly++;
69 ✗ if (_state.level == 2 || _state.level == 3)
70 {
71 ✗ if (_state.nbAlly >= 1)
72 {
73 ✗ _state.metadata["should_incant"] = "true";
74 ✗ _state.metadata["ask_for_group"] = "false";
75 }
76 }
77 ✗ else if (_state.level == 4 || _state.level == 5)
78 {
79 ✗ if (_state.nbAlly >= 3)
80 {
81 ✗ _state.metadata["should_incant"] = "true";
82 ✗ _state.metadata["ask_for_group"] = "false";
83 ✗ _state.nbAlly = 0;
84 }
85 }
86 ✗ else if (_state.level == 6 || _state.level == 7)
87 {
88 ✗ if (_state.nbAlly >= 5)
89 {
90 ✗ _state.metadata["should_incant"] = "true";
91 ✗ _state.metadata["ask_for_group"] = "false";
92 ✗ _state.nbAlly = 0;
93 }
94 }
95 }
96
97 ✗ void ABot::listenMeetingDoneBroadcast(const std::string &message)
98 {
99 ✗ const std::string prefix = "meeting_";
100 ✗ const std::string suffix = "_done";
101 ✗ std::string messageCopy = message;
102
103 ✗ if (messageCopy.find(prefix) == 0 && messageCopy.rfind(suffix) == (messageCopy.length() - suffix.length()))
104 {
105 ✗ std::string idGroup = messageCopy.substr(prefix.length(), messageCopy.length() - prefix.length() - suffix.length());
106 ✗ if (idGroup == _state.metadata["id_group"])
107 {
108 ✗ _state.metadata["should_group"] = "false";
109 ✗ _state.state = STANDARD;
110 }
111 }
112 ✗ }
113
114 ✗ void ABot::listenWarnsBroadcast(const std::string &message)
115 {
116 ✗ const std::string prefix = "warns_will_incant_";
117
118 ✗ if (message.rfind(prefix, 0) == 0)
119 {
120 ✗ std::string idGroup = message.substr(prefix.length());
121 ✗ if (idGroup == _state.metadata["id_group"])
122 {
123 ✗ _state.metadata["should_group"] = "false";
124 ✗ _state.state = STANDARD;
125 }
126 }
127 ✗ }
128