void EnemyPlane::UpdatePlane()
{
	if (g_Time - m_ShowTime < m_Delay)
	{
		return;
	}

	switch (m_iState)
	{
	case P_ALIVE:
		if (abs(m_iDesX-m_iX)>m_iSpeed || abs(m_iDesY-m_iY)>m_iSpeed)
		{
			m_iAngle = atan((double)(m_iDesX-m_iX)/(double)(m_iDesY-m_iY));

			if (m_iDesY > m_iY)
			{
				SetX(m_iX + (int)(m_iSpeed*sin(m_iAngle)));
				SetY(m_iY + (int)(m_iSpeed*cos(m_iAngle)));
			}
			else if(m_iDesY < m_iY)
			{
				SetX(m_iX - (int)(m_iSpeed*sin(m_iAngle)));
				SetY(m_iY - (int)(m_iSpeed*cos(m_iAngle)));
			}
			else
			{
				if (m_iDesX > m_iX)
				{
					SetX(m_iX+m_iSpeed);
				}
				else
				{
					SetX(m_iX-m_iSpeed);
				}
			}

			//更新发射器的位置
			for (int i=0; i<(int)m_vShooterGroup.size(); i++)
			{
				for (int j=0; j<(int)m_vShooterGroup[i].size(); j++)
				{
					m_vShooterGroup[i][j]->SetPos(m_iX, m_iY);
				}
			}
			
			//更新所携带物品的位置
			for (int i=0; i<(int)items.size(); i++)
			{
				items[i]->SetPos(m_iX, m_iY);
			}
		}
		else
		{
			m_bMoveable = true;
			vector<Shooter*> *pShooters = NULL;
			if (!m_vShooterGroup.empty())
			{
				pShooters = &m_vShooterGroup[m_iNowShooterGroup];
				for (int i=0; i<(int)pShooters->size(); i++)
				{
					if (m_bFireCommand)
					{
						(*pShooters)[i]->SetCommand(true);
						m_bMoveable &= (*pShooters)[i]->Fire(false); 
					}
				}
			}

			if (m_bMoveable)
			{
				m_iNowPos++;

				if (m_iNowPos >= (int)posMap.size())
				{
					m_iNowPos = 0;
				}

				m_iDesX = posMap[m_iNowPos].x;
				m_iDesY = posMap[m_iNowPos].y;

				if (pShooters)
				{
					m_iNowShooterGroup = rand()%(int)m_vShooterGroup.size();

					for (int i=0; i<(int)pShooters->size(); i++)
					{
						(*pShooters)[i]->SetCommand(false);
						(*pShooters)[i]->Reload(); 
					}
				}
			}
		}

		{
			//判断与子弹的碰撞
			vector<Bullet*> *pBullets = g_Manager.GetMyBulletVector();
			for (int i=0; i<(int)pBullets->size(); i++)
			{
				if (!(*pBullets)[i])
				{
					continue;
				}

				if (IsImpact((*pBullets)[i]->GetImpactBox()))
				{
					delete (*pBullets)[i];
					(*pBullets)[i] = NULL;
					g_Manager.AddScore(10);

					m_iHp--;
					if (m_iHp <= 0)
					{
						//弹出物品
						for (int i=0; i<(int)items.size(); i++)
						{
							if(!items[i]) continue;

							g_Manager.AddItemToVector(items[i]);
						}
						ClearItem();

						//飞机爆炸
						PlaySound(".\\Sound\\explosion.wav", NULL,SND_ASYNC|SND_NODEFAULT|SND_FILENAME);
						m_bExplodeOver = false;
						m_iState = P_EXPLODE;
						m_Time = g_Time;
						
						if (m_bIsBoss)
						{
							g_Manager.GetHeroPlane()->AddBoom();
							g_Manager.GetHeroPlane()->BoomStart(false);
						}
					}
				}
			}
		}
		break;

	case P_EXPLODE:
		if (!m_bExplodeOver)
		{
		}
		else
		{
			m_iState = P_DISAPPEAR;
		}
		break;

	case P_DISAPPEAR:
		break;
	}
}