Example #1
0
void display(void) {
  if (lastFrameTime == 0) {
    lastFrameTime = glutGet(GLUT_ELAPSED_TIME);
  }
  
  int now = glutGet(GLUT_ELAPSED_TIME);
  int elapsedMilliseconds = now - lastFrameTime;
  float elapsedTime = elapsedMilliseconds / 1000.0f;
  lastFrameTime = now;
  
  int windowWidth = glutGet(GLUT_WINDOW_WIDTH);
  int windowHeight = glutGet(GLUT_WINDOW_HEIGHT);
  
  if (enemy.GetX() > windowWidth - enemy.GetWidth()) {
    enemy.SetDirectionX(-1);
  } else if (enemy.GetX() < 0) {
    enemy.SetDirectionX(1);
  }
  
  enemy.SetX(enemy.GetX() +
             enemy.GetVelocity() * elapsedTime * enemy.GetDirectionX());
  enemy.SetY(enemy.GetY() +
             enemy.GetVelocity() * elapsedTime * enemy.GetDirectionY());
  
  if (enemy.GetY() > windowHeight - enemy.GetHeight()) {
    enemy.SetDirectionY(-1);
  } else if (enemy.GetY() < 0) {
    enemy.SetDirectionY(1);
  }
  
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  
  enemy.Display();
  player.Display();
  
  glutSwapBuffers();
}
Enemy * Application::FindNearest()
{
	float shortestLength = -1;
	Enemy* shortestEnemy = nullptr;
	for (vector<Enemy*>::iterator it = enemyList.begin(); it != enemyList.end(); ++it)
	{
		Enemy* e = *it;
		if (e->GetActive())
		{
			float dist = (Vector2(ships_.at(0)->GetX(), ships_.at(0)->GetY()) - Vector2(e->GetX(), e->GetY())).Length();
			if (shortestLength == -1 || dist < shortestLength)
			{
				shortestLength = dist;
				shortestEnemy = e;
			}
		}
	}
	return shortestEnemy;
}