-
Notifications
You must be signed in to change notification settings - Fork 0
/
Transicion.hpp
64 lines (48 loc) · 1.98 KB
/
Transicion.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#ifndef TRANSICION_H
#define TRANSICION_H
#include "Controlador.hpp"
#include "Modelo.hpp"
/** \brief Clase, invocada por modelo cuando se añade/elimina controladores, representa una transición animada entre dos controladores
\note Notesé que actua como un controlador más, es una clase abstracta, sus hijos definirán que efecto se aplicará (fundido, volteado...)
**/
class Transicion : public Controlador
{
public:
/**
\brief Construye la transicion y la prepara.
\param m: Referencia al Modelo
\param anterior: Imagen/Captura del controlador que se va a quitar
\param siguiente: Imagen/captura del controlador que se va a poner
\param iteraciones: Numero de fotogramas que tendrá la transición
**/
Transicion(Modelo* m,const sf::Texture& anterior,const sf::Texture& siguiente,const int iteraciones = 60);
/**
\brief Actúa como un controlador, por lo que tiene que tratar y recibir los eventos, en este caso solo procesa los eventos
de cierre de ventana
**/
virtual void tratarEvento(sf::Event & event) override
{
if (event.type == sf::Event::Closed) modelo->cerrarVentana();
}
/**
\brief Actúa como un controlador, pinta en pantalla el siguiente fotograma. Cuando se acaben las "iteraciones" el controlador
se cerrará.
**/
void refrescarPantalla() override;
/**
\brief Cuantas iteraciones quedan
**/
int getTicks() const{return ticks;}
protected:
sf::Sprite primero,segundo;
/**
\brief Función que implementará el hijo de la clase para la animación, se le llamará una vez por cada fotograma
**/
virtual void animar() = 0;
private:
const sf::Texture textura_primero;
const sf::Texture textura_segundo;
Modelo* modelo;
int ticks;
};
#endif // TRANSICION_H