-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenemy.h
135 lines (98 loc) · 3.79 KB
/
enemy.h
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#ifndef ENEMY_H_INCLUDED
#define ENEMY_H_INCLUDED
#include <list>
#include <string>
#include <SFML/Graphics.hpp>
#include "player.h"
#include "timer.h"
#include "unit.h"
#include "projectile.h"
#include "animation.h"
#include "Animated.hpp"
#include "image_manager.h"
#include "math.h"
#include "projectile_manager.h"
//Permet de créer le type enemy : ils sont ensuite créé et stocké dans population.
class Enemy : public Unit
{
public:
Enemy(int life, int scoreHit, int scoreExplosion, int xSpeed, int ySpeed, const std::string &filepath, sf::Vector2f position, char* type, char* moveMethod, int moveValue,
const int coefSpeed, const int firerate, sf::RenderWindow &app, Player &player, image_manager &imageManager, Projectile_manager &projectile_manager);
//Destructeur
~Enemy();
//Accesseur sur le sprite
virtual sf::Sprite* getSprite();
//Accesseur sur le rectangle occupé par le sprite
virtual sf::IntRect getBoundingBox();
//Inflige des dommages à l'ennemi
virtual void recieveDamages(int dmg);
//Accesseur sur le score donné par l'ennemis au joueur quand il touche
virtual int getScoreHit();
//Accesseur sur le score donné au joueur quand l'ennemi meurt
virtual int getScoreExplosion();
//Défini si l'ennemi est mort ou non
virtual bool isDead();
// Aller retour horizontal sur valeur indiqué (commence de gauche à droite)
virtual void roundTrip();
//Déplacements
virtual void moveLeft();
virtual void moveUp();
virtual void moveDown();
virtual void moveRight();
virtual void dontMove();
virtual void move();
//Dessin de l'ennemi
virtual void draw();
//Accesseur sur la position de l'ennemis sur un axe
virtual int getPositionAxis(int axis);
//Accesseur sur la position de l'ennemi
virtual sf::Vector2f getPosition();
virtual void setPosition(int axis, int value);
//Accesseur sur l'animation de l'ennemi (anim explosion dans Unit)
virtual Animated *getAnimationExplosion();
virtual Animated *getAnimation();
//Différents types de tirs
virtual void fireFocus();//Avec visée
virtual void fireCircle();//en cercle
//Accesseur sur les projectiles en cours
virtual std::list<Projectile*>* getProjectiles();
//Défini si l'ennemi peut tirer ou non
virtual bool canFire();
//Accesseur sur le type de tir
virtual char* getType();
//Timer pour les tirs
virtual void startTimer();
virtual void pauseTimer();
protected:
//Joueur
Player &m_player;
//listes des projectils et de leurs vitesse (en cas de visée)
std::list<Projectile*> m_projectiles;
std::list<sf::Vector2f> m_vitesses;
//Direction de déplacememnt pour certains mouvements particuliers
char* direction;
Projectile *projectile;
sf::Image *image;
//Temps au dernier tir
float lastShot;
//Timers pour les tirs et les déplacememnts
Timer timer, timerMove;
//Constantes de score, vitesse et fréquence de tir
int const m_scoreHit, m_scoreExplosion, projectileSpeed, m_coefSpeed, m_fireRate;
//Sauvegarde du timer de déplacement
float savedTimerMove;
//Variables d'animation
Animated *m_animated;
Anim m_anim;
//Manager d'image
image_manager &m_imageManager;
//Position du joueur (en cas de visée)
sf::Vector2f playerPosition;
//type de tir
char* m_type;
//type de déplacement
char* m_moveMethod;
//Etat du déplacement
int m_moveValue;
};
#endif // ENEMY_H_INCLUDED