RType
Player.cpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2023
3 ** RType
4 ** File description:
5 ** Player.cpp
6 */
7 
8 #include "Player.hpp"
9 
10 /**
11  * @brief Construct a new Player:: Player object
12  * @param socket
13  */
15  socket(socket)
16 {
17  gettimeofday(&_annimationTime, nullptr);
18  _positionX = 100;
19  _positionY = 100;
20  _direction = 0.1;
21 }
22 
23 /**
24  * @brief draw, draw the player
25  */
26 void Player::draw()
27 {
28  Packet *packet;
29  timeval now{};
30  timeval diff{};
31 
32  gettimeofday(&now, nullptr);
33  timersub(&now, &_annimationTime, &diff);
34  if (_positionX + 200 >= 800)
35  _direction = -0.1;
36  if (_positionX <= 0)
37  _direction = 0.1;
38  if (diff.tv_usec > 100) {
39  _positionX += _direction;
40  _annimationTime = now;
41  packet = getPacket();
42  for (auto &client : socket->getClients())
43  socket->send(packet, std::get<1>(client));
44  }
45 }
46 
47 /**
48  * @brief getPacket, get the packet
49  * @return packet (Packet *)
50  */
51 Packet *Player::getPacket()
52 {
53  std::unique_ptr<Packet> packet = std::make_unique<Packet>();
54  std::unique_ptr<Element> element = std::make_unique<Element>();
55 
56  element->x = _positionX;
57  element->y = _positionY;
58  element->width = 1;
59  element->height = 1;
60  element->type = PLAYER;
61 
62  packet->code = ELEMENT;
63  packet->data_size = sizeof(Element);
64  packet->data = malloc(packet->data_size);
65  memcpy(packet->data, element.get(), packet->data_size);
66  return packet.release();
67 }