thatscringebro 9dfd911bff Init
2023-02-16 09:26:40 -05:00

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;
}