-
Notifications
You must be signed in to change notification settings - Fork 7
/
Player.hpp
117 lines (99 loc) · 3.31 KB
/
Player.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/******************************************************************************
* @file Player.hpp
* @author Andrés Gavín Murillo, 716358
* @author Rubén Rodríguez Esteban, 737215
* @date Mayo 2020
* @coms Videojuegos - OutRun
******************************************************************************/
#ifndef OUTRUN_PLAYER_HPP
#define OUTRUN_PLAYER_HPP
#include "Vehicle.hpp"
class Player : public Vehicle {
const float speedMul, maxAcc, accInc, scaleY;
float acceleration, minCrashAcc, xDest;
int inertia;
sf::Sprite sprite;
bool crashing; // True if crashing state is on
bool smoking; // True if player generates smoke
bool skidding; // True if player is skidding
bool firstCrash, firstTurnLeft, firstTurnRight;
public:
/**
* Inicializa el vehículo del jugador.
* @param maxSpeed
* @param speedMul multiplicador de la velocidad que multiplicado por speed obtiene la velocidad real
* @param accInc incremento de la aceleración
* @param scaleX escalado del sprite del vehículo
* @param scaleY escalado del sprite del vehículo
* @param maxCounterToChange cuando counter_code_image llega a maxCounterToChange se actualiza el sprite
* @param vehicle nombre del vehículo
* @param pX
* @param pY
*/
Player(float maxSpeed, float speedMul, float accInc, float scaleX, float scaleY, int maxCounterToChange,
const std::string &vehicle, float pX, float pY);
/**
* Devuelve la posición previa Y.
* @return
*/
float getPreviousY() const;
/**
* Actualiza la lógica del choque y restablece la velocidad y aceleración.
* @param vehicleCrash true si es un choque entre vehículos
*/
void hitControl(bool vehicleCrash);
/**
* Devuelve true si la lógica de choque está en ejecución.
* @return
*/
bool isCrashing() const;
/**
* Devuelve la velocidad real del vehículo.
* @return
*/
float getRealSpeed() const;
/**
* Actualiza la lógica de la aceleración y frenado del vehículo.
* @param c
* @param hasGotOut indica si se ha salido del camino
* @return
*/
Action accelerationControl(Config &c, bool hasGotOut);
/**
* Actualiza la lógica de giro del vehículo.
* @param c
* @param curveCoefficient pertenece [-0.9, 0.9]
* @return
*/
Direction rotationControl(Config &c, float curveCoefficient);
/**
* Actualiza el sprite del vehículo jugador y lo dibuja en la pantalla.
* @param c
* @param a
* @param d
* @param e
* @param enableSound
*/
void draw(Config &c, const Action &a, const Direction &d, const Elevation &e, bool enableSound = true);
/**
* Dibuja la animación inicial en la pantalla y devuelve si ha acabado.
* @param c
* @param x
* @param end
*/
void drawInitialAnimation(Config &c, float x, bool &end);
/**
* Dibuja la animación final en la pantalla y devuelve si ha acabado.
* @param c
* @param step
* @param end
* @param smoke
*/
void drawGoalAnimation(Config &c, int &step, bool &end, bool smoke = true);
/**
* Fuerza a que el coche esté echando humo o no.
* @param smoke
*/
void setSmoking(bool smoke);
};
#endif //OUTRUN_PLAYER_HPP