mouse wheel rotates player
This commit is contained in:
parent
7b076cdc13
commit
f06dbf7bac
@ -2,6 +2,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <SFML/OpenGL.hpp>
|
#include <SFML/OpenGL.hpp>
|
||||||
#include <SFML/Graphics.hpp>
|
#include <SFML/Graphics.hpp>
|
||||||
|
#include <SFML/System.hpp>
|
||||||
#include "Client.h"
|
#include "Client.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@ -25,8 +26,13 @@ Client::Client(bool fullscreen)
|
|||||||
void Client::run()
|
void Client::run()
|
||||||
{
|
{
|
||||||
m_clock.restart();
|
m_clock.restart();
|
||||||
|
m_window->setMouseCursorVisible(false);
|
||||||
|
sf::Mouse::setPosition(sf::Vector2i(m_width / 2, m_height / 2), *m_window);
|
||||||
|
double last_time = 0.0;
|
||||||
while (m_window->isOpen())
|
while (m_window->isOpen())
|
||||||
{
|
{
|
||||||
|
double current_time = m_clock.getElapsedTime().asSeconds();
|
||||||
|
double elapsed_time = current_time - last_time;
|
||||||
sf::Event event;
|
sf::Event event;
|
||||||
while (m_window->pollEvent(event))
|
while (m_window->pollEvent(event))
|
||||||
{
|
{
|
||||||
@ -53,7 +59,7 @@ void Client::run()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update(elapsed_time);
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
@ -69,6 +75,7 @@ void Client::run()
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
m_window->display();
|
m_window->display();
|
||||||
|
last_time = current_time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +89,9 @@ void Client::initgl()
|
|||||||
|
|
||||||
void Client::resize_window(int width, int height)
|
void Client::resize_window(int width, int height)
|
||||||
{
|
{
|
||||||
|
m_width = width;
|
||||||
|
m_height = height;
|
||||||
|
sf::Mouse::setPosition(sf::Vector2i(m_width / 2, m_height / 2), *m_window);
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
float aspect = (float)width / (float)height;
|
float aspect = (float)width / (float)height;
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
@ -91,12 +101,9 @@ void Client::resize_window(int width, int height)
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::update()
|
void Client::update(double elapsed_time)
|
||||||
{
|
{
|
||||||
static double last_time = 0.0;
|
|
||||||
const double move_speed = 300.0;
|
const double move_speed = 300.0;
|
||||||
const double current_time = m_clock.getElapsedTime().asSeconds();
|
|
||||||
const double elapsed_time = current_time - last_time;
|
|
||||||
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
|
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
|
||||||
{
|
{
|
||||||
double direction = m_player->direction + M_PI_2;
|
double direction = m_player->direction + M_PI_2;
|
||||||
@ -121,7 +128,9 @@ void Client::update()
|
|||||||
m_player->x += cos(direction) * move_speed * elapsed_time;
|
m_player->x += cos(direction) * move_speed * elapsed_time;
|
||||||
m_player->y += sin(direction) * move_speed * elapsed_time;
|
m_player->y += sin(direction) * move_speed * elapsed_time;
|
||||||
}
|
}
|
||||||
last_time = current_time;
|
int xrel = sf::Mouse::getPosition(*m_window).x - m_width / 2;
|
||||||
|
sf::Mouse::setPosition(sf::Vector2i(m_width / 2, m_height / 2), *m_window);
|
||||||
|
m_player->direction -= M_PI * 0.5 * xrel / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::draw_players()
|
void Client::draw_players()
|
||||||
|
@ -15,13 +15,15 @@ class Client
|
|||||||
protected:
|
protected:
|
||||||
void initgl();
|
void initgl();
|
||||||
void resize_window(int width, int height);
|
void resize_window(int width, int height);
|
||||||
void update();
|
void update(double elapsed_time);
|
||||||
void draw_players();
|
void draw_players();
|
||||||
void draw_map();
|
void draw_map();
|
||||||
refptr<sf::Window> m_window;
|
refptr<sf::Window> m_window;
|
||||||
sf::Clock m_clock;
|
sf::Clock m_clock;
|
||||||
Map m_map;
|
Map m_map;
|
||||||
refptr<Player> m_player;
|
refptr<Player> m_player;
|
||||||
|
int m_width;
|
||||||
|
int m_height;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user