#include "TinyTerminal.hpp"
void TinyTerminal::start()
{
sf::RenderWindow window( sf::VideoMode( 512, 256, 32 ), "TinyTerminal", sf::Style::None );
window.setFramerateLimit(30);
sf::Event e;
sf::Texture txtSkin;
sf::Sprite sprSkin;
txtSkin.loadFromFile("TinyTerminal.png");
sprSkin.setTexture( txtSkin );
int lastMX = 0;
int lastMY = 0;
bool dragging = false;
while (window.isOpen())
{
while (window.pollEvent(e))
{
}
if( sf::Mouse::isButtonPressed( sf::Mouse::Button::Left ) )
{
if( sf::Mouse::getPosition(window).x > 0 && sf::Mouse::getPosition(window).x < 512 )
{
if( sf::Mouse::getPosition(window).y > 0 && sf::Mouse::getPosition(window).y < 12 )
{
dragging = true;
lastMX = window.getPosition().x - sf::Mouse::getPosition().x;
lastMY = window.getPosition().y - sf::Mouse::getPosition().y;
window.setMouseCursorVisible(false);
}
}
}
else
{
dragging = false;
lastMX = 0;
lastMY = 0;
window.setMouseCursorVisible(true);
}
if( dragging )
{
/* Offset */
window.setPosition( sf::Vector2i( sf::Mouse::getPosition().x + lastMX, sf::Mouse::getPosition().y + lastMY ) );
}
/* Parse some sweet commands here. */
/* Draw some sweet sprites here. */
window.clear(sf::Color::Black);
window.draw( sprSkin );
window.draw( output );
window.display();
}
}
This works, a lot better BUT there are some response issues when dragging the mouse along the x-axel without changing the y-axel.
If I am understanding what you want, Why not do this?
if( sf::Mouse::isButtonPressed( sf::Mouse::Button::Left ) )
{
if( sf::Mouse::getPosition(window).x > 0 && sf::Mouse::getPosition(window).x < 512 )
{
dragging = true;
lastMX = window.getPosition().x - sf::Mouse::getPosition().x;
window.setMouseCursorVisible(false);
}
if( sf::Mouse::getPosition(window).y > 0 && sf::Mouse::getPosition(window).y < 12 )
{
dragging = true;
lastMY = window.getPosition().y - sf::Mouse::getPosition().y;
window.setMouseCursorVisible(false);
}
}
}