133 lines
2.9 KiB
C++
Executable File
133 lines
2.9 KiB
C++
Executable File
#include "../H/player.h"
|
|
|
|
Mob::Mob(){}
|
|
|
|
Mob::Mob(const Vector3f & position, float Damage, int Armour) : m_pos(position), m_damage(Damage), m_armour(Armour)
|
|
{
|
|
m_health = 100.f * Armour;
|
|
}
|
|
|
|
void Mob::SetPosition (Vector3f delta){
|
|
m_pos.x = delta.x;
|
|
m_pos.y = delta.y;
|
|
m_pos.z = delta.z;
|
|
}
|
|
|
|
void Mob::Move(Player p1){
|
|
double speed = 0.1;
|
|
Vector3f p1pos = p1.Position();
|
|
if (p1pos.x >= m_pos.x){
|
|
m_pos.x += speed;
|
|
}
|
|
if (p1pos.x < m_pos.x){
|
|
m_pos.x -= speed;
|
|
}
|
|
if (p1pos.y >= m_pos.y){
|
|
m_pos.y += speed;
|
|
}
|
|
if (p1pos.y < m_pos.y){
|
|
m_pos.y -= speed;
|
|
}
|
|
if (p1pos.z >= m_pos.z){
|
|
m_pos.z += speed;
|
|
}
|
|
if (p1pos.z < m_pos.z){
|
|
m_pos.z -= speed;
|
|
}
|
|
}
|
|
|
|
Vector3f Mob::Position(){
|
|
return m_pos;
|
|
}
|
|
|
|
void Mob::Damage(Player& p1){
|
|
p1.setHealth(p1.Health() - m_damage);
|
|
}
|
|
|
|
float Mob::GetDamage(){
|
|
return m_damage;
|
|
}
|
|
|
|
float Mob::Health(){
|
|
return m_health;
|
|
}
|
|
|
|
void Mob::setHealth(float health){
|
|
m_health = health;
|
|
}
|
|
|
|
void Mob::RenderMob()
|
|
{
|
|
//around1
|
|
glBegin(GL_TRIANGLES);
|
|
glNormal3f(0, 1, 0);
|
|
|
|
glTexCoord2f(0, 0);
|
|
glVertex3f(m_pos.x, m_pos.y + .5f, m_pos.z);
|
|
|
|
glTexCoord2f(1, 0);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z - .5f);
|
|
|
|
glTexCoord2f(1, 1);
|
|
glVertex3f(m_pos.x - .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
glEnd();
|
|
|
|
//around2
|
|
glBegin(GL_TRIANGLES);
|
|
glNormal3f(0, 1, 0);
|
|
|
|
glTexCoord2f(0, 0);
|
|
glVertex3f(m_pos.x, m_pos.y + .5f, m_pos.z);
|
|
|
|
glTexCoord2f(1, 0);
|
|
glVertex3f(m_pos.x - .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
|
|
glTexCoord2f(1, 1);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
glEnd();
|
|
|
|
//around3
|
|
glBegin(GL_TRIANGLES);
|
|
glNormal3f(0, 1, 0);
|
|
|
|
glTexCoord2f(0, 0);
|
|
glVertex3f(m_pos.x, m_pos.y + .5f, m_pos.z);
|
|
|
|
glTexCoord2f(1, 0);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
|
|
glTexCoord2f(1, 1);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z - .5f);
|
|
glEnd();
|
|
|
|
//bottom
|
|
glBegin(GL_TRIANGLES);
|
|
glNormal3f(0, -1, 0);
|
|
|
|
glTexCoord2f(0, 0);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z - .5f);
|
|
|
|
glTexCoord2f(1, 0);
|
|
glVertex3f(m_pos.x - .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
|
|
glTexCoord2f(1, 1);
|
|
glVertex3f(m_pos.x + .5f, m_pos.y - .5f, m_pos.z + .5f);
|
|
glEnd();
|
|
}
|
|
|
|
bool Mob::isNull(){
|
|
if (m_pos.x == 0 && m_pos.y == 0 && m_pos.z == 0 && m_damage == 0 && m_armour == 0)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
int Mob::GetArmour(){
|
|
return m_armour;
|
|
}
|
|
|
|
bool Mob::isEqual(Mob mob){
|
|
Vector3f v = mob.Position();
|
|
if (m_pos.x == v.x && m_pos.y == v.y && m_pos.z == v.z && m_damage == mob.GetDamage() && m_armour == mob.GetArmour())
|
|
return true;
|
|
return false;
|
|
} |