Modification de la polarité : Ctrl + Scroll

This commit is contained in:
Mattéo Delabre 2016-04-11 13:06:43 +02:00
parent 578d950ec7
commit a5146dfc3d
3 changed files with 48 additions and 22 deletions

View File

@ -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

View File

@ -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

View File

@ -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