2
0

Bullet.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // ----------------------------------------------------------------
  2. // From Game Programming in C++ by Sanjay Madhav
  3. // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
  4. //
  5. // Released under the BSD License
  6. // See LICENSE.txt for full details.
  7. // ----------------------------------------------------------------
  8. #include "Bullet.h"
  9. #include "SpriteComponent.h"
  10. #include "MoveComponent.h"
  11. #include "CircleComponent.h"
  12. #include "Game.h"
  13. #include "Enemy.h"
  14. Bullet::Bullet(class Game* game)
  15. :Actor(game)
  16. {
  17. SpriteComponent* sc = new SpriteComponent(this);
  18. sc->SetTexture(game->GetTexture("Assets/Projectile.png"));
  19. MoveComponent* mc = new MoveComponent(this);
  20. mc->SetForwardSpeed(400.0f);
  21. mCircle = new CircleComponent(this);
  22. mCircle->SetRadius(5.0f);
  23. mLiveTime = 1.0f;
  24. }
  25. void Bullet::UpdateActor(float deltaTime)
  26. {
  27. Actor::UpdateActor(deltaTime);
  28. // Check for collision vs enemies
  29. for (Enemy* e : GetGame()->GetEnemies())
  30. {
  31. if (Intersect(*mCircle, *(e->GetCircle())))
  32. {
  33. // We both die on collision
  34. e->SetState(EDead);
  35. SetState(EDead);
  36. break;
  37. }
  38. }
  39. mLiveTime -= deltaTime;
  40. if (mLiveTime <= 0.0f)
  41. {
  42. // Time limit hit, die
  43. SetState(EDead);
  44. }
  45. }