10 #include "SFML/Graphics/Rect.hpp"
11 #include "SFML/Window/Keyboard.hpp"
20 auto drawable = std::dynamic_pointer_cast<Drawable>(component);
23 for (
auto &other : drawable->getDrawablesCollision()) {
24 if (Collision::checkCollision(drawable, other)) {
25 if (drawable->_textureId == BULLET) {
26 if (other->_textureId == ENEMY) {
27 drawable->_toDelete =
true;
28 other->_toDelete =
true;
30 std::shared_ptr<Packet> sendpacket = std::make_shared<Packet>();
31 sendpacket->code = MESSAGE;
32 sendpacket->data_size = strlen((
"Score: " + std::to_string(_score)).c_str());
33 sendpacket->data = malloc(sendpacket->data_size);
34 std::memcpy(sendpacket->data, (
"Score: " + std::to_string(_score)).c_str(), sendpacket->data_size);
35 _serverSocket->broadcast(sendpacket.get());
36 free(sendpacket->data);
38 if (other->_textureId == BOSS) {
39 drawable->_toDelete =
true;
40 other->_toDelete =
true;
55 Position pos1 = drawable->getPosition();
56 Position pos2 = other->getPosition();
57 Size size1 = {std::get<2>(drawable->getRect()) * drawable->getScale(),
58 std::get<3>(drawable->getRect()) * drawable->getScale()};
59 Size size2 = {std::get<2>(other->getRect()) * other->getScale(), std::get<3>(other->getRect()) * other->getScale()};
61 sf::Rect<
float> rect1(std::get<0>(pos1), std::get<1>(pos1), std::get<0>(size1), std::get<1>(size1));
62 sf::Rect<
float> rect2(std::get<0>(pos2), std::get<1>(pos2), std::get<0>(size2), std::get<1>(size2));
64 return rect1.intersects(rect2);
74 std::cout <<
"collision" << std::endl;
75 std::tuple<
float,
float> pos = drawable->getPosition();
76 std::cout <<
"pos: " << std::get<0>(pos) <<
" " << std::get<1>(pos) << std::endl;
80 case sf::Keyboard::Key::Left:
81 std::cout <<
"left" << std::endl;
82 drawable->setPosition(std::make_tuple(std::get<0>(pos) + 5, std::get<1>(pos)));
84 case sf::Keyboard::Key::Right:
85 std::cout <<
"Right" << std::endl;
86 drawable->setPosition(std::make_tuple(std::get<0>(pos) - 5, std::get<1>(pos)));
88 case sf::Keyboard::Key::Up:
89 std::cout <<
"Up" << std::endl;
90 drawable->setPosition(std::make_tuple(std::get<0>(pos), std::get<1>(pos) - 5));
92 case sf::Keyboard::Key::Down:
93 std::cout <<
"Down" << std::endl;
94 drawable->setPosition(std::make_tuple(std::get<0>(pos), std::get<1>(pos) + 5));