00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "Enemy.hpp"
00019 #include "MathFuncs.hpp"
00020
00021 bool CEnemy::calculate_y(float* down_up)
00022 {
00023
00024 if (m_Ship->GetYPosition() > SCREEN_Y_SIZE + 4)
00025 {
00026 des_y = -1;
00027 return false;
00028 }
00029 if (m_Ship->GetYPosition() < -4)
00030 {
00031 des_y = 1;
00032 return false;
00033 }
00034
00035
00036 int distance = m_player->GetYPosition() - m_Ship->GetYPosition();
00037
00038 if(distance < 0)
00039 {
00040 des_y = -1;
00041 return false;
00042 }
00043
00044
00045
00046 float tmp = distance - desired_distance;
00047
00048 if (abs(tmp) < m_parameter->sensibility_y)
00049 {
00050 down_up[0] = -50;
00051 down_up[1] = -50;
00052 return true;
00053 }
00054 if (sgn(tmp) > 0)
00055 {
00056 down_up[0] = abs(tmp);
00057 down_up[1] = -abs(tmp);
00058 return true;
00059 }
00060 else
00061 {
00062 down_up[0] = -abs(tmp);
00063 down_up[1] = abs(tmp);
00064 return true;
00065 }
00066 }
00067
00068
00069 void CEnemy::number_enemys(int* results, std::list<ANPC*>& r_Enemys)
00070 {
00071 std::list<ANPC*>::iterator ship = r_Enemys.begin();
00072 while (ship != r_Enemys.end())
00073 {
00074 if ((*ship)->getShip()->GetXPosition() > m_Ship->GetXPosition() + m_Ship->GetCollisionSystemWidth()/2 + m_weapon_offset)
00075 {
00076 results[2]++;
00077 }
00078 else if ((*ship)->getShip()->GetXPosition() < m_Ship->GetXPosition() - m_Ship->GetCollisionSystemWidth()/2 + m_weapon_offset)
00079 {
00080 results[0]++;
00081 }
00082 else
00083 {
00084 results[1]++;
00085 }
00086 ship++;
00087 }
00088 if (m_player->GetShip()->GetXPosition() > m_Ship->GetXPosition() + m_Ship->GetCollisionSystemWidth()/2)
00089 {
00090 ++(++results[2]);
00091 }
00092 else if (m_player->GetShip()->GetXPosition() < m_Ship->GetXPosition() - m_Ship->GetCollisionSystemWidth()/2)
00093 {
00094 ++(++results[0]);
00095 }
00096 else
00097 {
00098 ++(++results[1]);
00099 }
00100 }