Modification de la polarité : Ctrl + Scroll
This commit is contained in:
parent
578d950ec7
commit
a5146dfc3d
|
@ -9,7 +9,7 @@ namespace Constants {
|
||||||
* pour le calcul de l'attraction coulombienne entre
|
* pour le calcul de l'attraction coulombienne entre
|
||||||
* deux objets
|
* deux objets
|
||||||
*/
|
*/
|
||||||
static const float ATTRACTION = 2000000;
|
static const float ATTRACTION = 500000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Correction positionnelle : pourcentage de correction
|
* Correction positionnelle : pourcentage de correction
|
||||||
|
|
|
@ -159,26 +159,52 @@ void Editor::processEvent(const sf::Event& event) {
|
||||||
drag_mode = Editor::DragMode::NONE;
|
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) {
|
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
|
if (pointed_object != nullptr) {
|
||||||
// si on utilise la molette verticale et shift
|
float new_charge = pointed_object->getCharge() +
|
||||||
bool horizontal = (
|
event.mouseWheelScroll.delta;
|
||||||
event.mouseWheelScroll.wheel == sf::Mouse::HorizontalWheel ||
|
|
||||||
(event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel &&
|
|
||||||
getManager().isKeyPressed(Manager::Modifier::SHIFT))
|
|
||||||
);
|
|
||||||
|
|
||||||
if (horizontal) {
|
if (new_charge != 0) {
|
||||||
camera.move(sf::Vector2f(event.mouseWheelScroll.delta, 0) * WHEEL_SCROLL_SPEED);
|
new_charge /= std::abs(new_charge);
|
||||||
} else {
|
}
|
||||||
camera.move(sf::Vector2f(0, event.mouseWheelScroll.delta) * WHEEL_SCROLL_SPEED);
|
|
||||||
|
pointed_object->setCharge(new_charge);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setCamera(camera);
|
// sinon, on déplace la vue
|
||||||
return;
|
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
|
// gestion des touches
|
||||||
|
|
|
@ -76,13 +76,13 @@ void Player::draw(Level& level) {
|
||||||
sprite.setOutlineColor(sf::Color(255, 0, 0));
|
sprite.setOutlineColor(sf::Color(255, 0, 0));
|
||||||
} else {
|
} else {
|
||||||
sprite.setOutlineColor(sf::Color::Black);
|
sprite.setOutlineColor(sf::Color::Black);
|
||||||
|
}
|
||||||
|
|
||||||
// coloration du joueur en fonction de son numéro
|
// coloration du joueur en fonction de son numéro
|
||||||
if (getPlayerNumber() == 0) {
|
if (getPlayerNumber() == 0) {
|
||||||
sprite.setFillColor(sf::Color(239, 83, 80));
|
sprite.setFillColor(sf::Color(239, 83, 80));
|
||||||
} else if (getPlayerNumber() == 1) {
|
} else if (getPlayerNumber() == 1) {
|
||||||
sprite.setFillColor(sf::Color(92, 107, 192));
|
sprite.setFillColor(sf::Color(92, 107, 192));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// déplacement du sprite à la position de la balle
|
// déplacement du sprite à la position de la balle
|
||||||
|
|
Loading…
Reference in New Issue