Adicionando hp em config, renomeando opçoes de config para tipos para ser mais generico
[Projeto-PCG.git] / enemy.cpp
blob24226c674e92f00b109c5e3c9a366a81712f3ee6
1 #include "enemy.h"
2 #include "shot.h"
3 #include "player.h"
5 Enemy::Enemy(Game* agame): Shooter(agame, Ponto(0,0), Ponto(0,0)) {
8 void Enemy::die() {
9 if (dead) return;
10 dead = true;
11 //game->enemyManager->remove(this);
12 //game->gravityManager->deleteThing(this);
13 //game->collisionManager->remove(this);
16 double Enemy::distanceFromPlayer() {
17 return distance(game->player->getPosition(), this->getPosition());
19 #include <iostream>
20 void Enemy::think() {
21 addSpeed(closerToZero(-getSpeedX(),sign(getSpeedX())*-0.5),0);
22 if (dead) return;
23 Player *player = game->player;
24 Ponto playerpos = player->getPosition();
25 if (playerpos.x < getPosition().x)
26 direction = -1;
27 else
28 direction = 1;
29 if (distanceFromPlayer() >= 500)
30 return;
31 if (player->crawl && onGround) {
32 crawl = true;
34 else
35 crawl = false;
36 if (playerpos.y > getPosition().y + 30 && distanceFromPlayer() <= 200)
37 bypass = true;
38 else
39 bypass = false;
40 if (playerpos.y < getPosition().y && player->onGround) {
41 addSpeed( 0, -1);
43 if (distanceFromPlayer() <= 300 && distanceFromPlayer() >= 200)
44 addSpeed( direction*3, 0);
45 Ponto leftfeet = player->leftFeet();
46 Ponto rightfeet = player->rightFeet();
47 setAim(playerpos.x + player->pescoco().x,playerpos.y+player->pescoco().y + std::min(-rightfeet.y,-leftfeet.y));
48 fire();
51 void Enemy::collide(Thing* b) {
52 if (dead) return;
53 Shot* shot = dynamic_cast<Shot*>(b);
54 if (shot && shot->firedBy == game->player) {
55 this->die();
57 Shooter* shooter = dynamic_cast<Shooter*>(b);
58 if (shooter) {
59 if (shooter->getPosition().x > getPosition().x)
60 addSpeed(-2,0);
61 else
62 addSpeed(2,0);
66 void Enemy::drawEquipment() {
67 glPushMatrix();
68 Ponto hip = cintura();
69 Ponto leftfeet = leftFeet();
70 Ponto rightfeet = rightFeet();
71 glTranslatef(hip.x,hip.y,0);
72 glRotatef(bodyAngle*180.0/PI,0,0,1);
73 glBegin(GL_LINE_LOOP);
74 glVertex3f(0,0,0);
75 glVertex3f(-10,0,0);
76 glVertex3f(-10,-30,0);
77 glVertex3f(0,-30,0);
78 glEnd();
79 glBegin(GL_LINE_LOOP);
80 glVertex3f(-2.5,0,0);
81 glVertex3f(-7.5,0,0);
82 glVertex3f(-7.5,5,0);
83 glVertex3f(-2.5,5,0);
84 glEnd();
85 glPopMatrix();