Animation de rotation
This commit is contained in:
parent
8b585c3547
commit
8d4a003e97
|
@ -19,12 +19,15 @@ enum class GravityDirection {NORTH, EAST, SOUTH, WEST};
|
||||||
class Level : public State {
|
class Level : public State {
|
||||||
private:
|
private:
|
||||||
sf::View camera;
|
sf::View camera;
|
||||||
|
float camera_angle;
|
||||||
|
float camera_angle_animate;
|
||||||
|
GravityDirection gravity_direction;
|
||||||
|
|
||||||
sf::String name;
|
sf::String name;
|
||||||
int total_time;
|
int total_time;
|
||||||
sf::Sprite background;
|
sf::Sprite background;
|
||||||
std::string music_name;
|
std::string music_name;
|
||||||
|
|
||||||
GravityDirection gravity_direction;
|
|
||||||
std::vector<ObjectPtr> objects;
|
std::vector<ObjectPtr> objects;
|
||||||
std::vector<std::pair<float, float>> zone;
|
std::vector<std::pair<float, float>> zone;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,14 @@
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constante de gravité
|
||||||
|
*/
|
||||||
const float GRAVITY = 235;
|
const float GRAVITY = 235;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constante de déplacement des objets à déplacement manuel
|
||||||
|
*/
|
||||||
const float MOVE = 200;
|
const float MOVE = 200;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,7 +29,9 @@ std::map<unsigned int, std::function<ObjectPtr(std::ifstream&)>> object_type_map
|
||||||
{GravityBlock::TYPE_ID, GravityBlock::load}
|
{GravityBlock::TYPE_ID, GravityBlock::load}
|
||||||
};
|
};
|
||||||
|
|
||||||
Level::Level(Manager& manager) : State(manager), gravity_direction(GravityDirection::SOUTH) {}
|
Level::Level(Manager& manager) : State(manager),
|
||||||
|
camera_angle(0.f), camera_angle_animate(0.f),
|
||||||
|
gravity_direction(GravityDirection::SOUTH) {}
|
||||||
Level::~Level() {}
|
Level::~Level() {}
|
||||||
|
|
||||||
void Level::load(std::ifstream& file) {
|
void Level::load(std::ifstream& file) {
|
||||||
|
@ -143,8 +152,9 @@ void Level::processEvent(const sf::Event& event) {
|
||||||
void Level::draw() {
|
void Level::draw() {
|
||||||
sf::RenderWindow& window = getWindow();
|
sf::RenderWindow& window = getWindow();
|
||||||
|
|
||||||
// rotation de la caméra selon la gravité et passage sur cette vue
|
// animation de la rotation de la caméra
|
||||||
camera.setRotation(180 + (float) gravity_direction * 90);
|
float change = (180 + (float) gravity_direction * 90 - camera_angle) * Constants::PHYSICS_TIME.asSeconds();
|
||||||
|
camera.rotate(change);
|
||||||
window.setView(camera);
|
window.setView(camera);
|
||||||
|
|
||||||
// efface la scène précédente et dessine la couche de fond
|
// efface la scène précédente et dessine la couche de fond
|
||||||
|
|
Loading…
Reference in New Issue