diff --git a/include/constants.hpp b/include/constants.hpp index 0354af6..201252b 100644 --- a/include/constants.hpp +++ b/include/constants.hpp @@ -9,7 +9,7 @@ namespace Constants { * pour le calcul de l'attraction coulombienne entre * deux objets */ - static const float ATTRACTION = 2000000; + static const float ATTRACTION = 500000; /** * Correction positionnelle : pourcentage de correction diff --git a/src/editor.cpp b/src/editor.cpp index ae3f5f8..24c4098 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -159,26 +159,52 @@ void Editor::processEvent(const sf::Event& event) { drag_mode = Editor::DragMode::NONE; } - // lorsqu'on scrolle on déplace la vue + // lorsqu'on scrolle on déplace la vue ou change la polarité if (event.type == sf::Event::MouseWheelScrolled) { - sf::View camera = getCamera(); + // si on a Ctrl appuyé, on change la polarité + if (getManager().isKeyPressed(Manager::Modifier::CONTROL)) { + sf::Vector2i mouse_position(event.mouseWheelScroll.x, event.mouseWheelScroll.y); + sf::Vector2f position = pixelToCoords(mouse_position); + Object::Ptr pointed_object = getObject(position); - // la molette est horizontale ssi. elle l'est vraiment ou - // si on utilise la molette verticale et shift - bool horizontal = ( - event.mouseWheelScroll.wheel == sf::Mouse::HorizontalWheel || - (event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel && - getManager().isKeyPressed(Manager::Modifier::SHIFT)) - ); + if (pointed_object != nullptr) { + float new_charge = pointed_object->getCharge() + + event.mouseWheelScroll.delta; - if (horizontal) { - camera.move(sf::Vector2f(event.mouseWheelScroll.delta, 0) * WHEEL_SCROLL_SPEED); - } else { - camera.move(sf::Vector2f(0, event.mouseWheelScroll.delta) * WHEEL_SCROLL_SPEED); + if (new_charge != 0) { + new_charge /= std::abs(new_charge); + } + + pointed_object->setCharge(new_charge); + } } - setCamera(camera); - return; + // sinon, on déplace la vue + else { + sf::View camera = getCamera(); + + // la molette est horizontale ssi. elle l'est vraiment ou + // si on utilise la molette verticale et shift + bool horizontal = ( + event.mouseWheelScroll.wheel == sf::Mouse::HorizontalWheel || + (event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel && + getManager().isKeyPressed(Manager::Modifier::SHIFT)) + ); + + if (!horizontal) { + camera.move( + sf::Vector2f(0, event.mouseWheelScroll.delta) * + WHEEL_SCROLL_SPEED + ); + } else { + camera.move( + sf::Vector2f(event.mouseWheelScroll.delta, 0) * + WHEEL_SCROLL_SPEED + ); + } + + setCamera(camera); + } } // gestion des touches diff --git a/src/player.cpp b/src/player.cpp index ceed192..6052d4d 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -76,13 +76,13 @@ void Player::draw(Level& level) { sprite.setOutlineColor(sf::Color(255, 0, 0)); } else { sprite.setOutlineColor(sf::Color::Black); + } - // coloration du joueur en fonction de son numéro - if (getPlayerNumber() == 0) { - sprite.setFillColor(sf::Color(239, 83, 80)); - } else if (getPlayerNumber() == 1) { - sprite.setFillColor(sf::Color(92, 107, 192)); - } + // coloration du joueur en fonction de son numéro + if (getPlayerNumber() == 0) { + sprite.setFillColor(sf::Color(239, 83, 80)); + } else if (getPlayerNumber() == 1) { + sprite.setFillColor(sf::Color(92, 107, 192)); } // déplacement du sprite à la position de la balle