| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // ----------------------------------------------------------------
- // From Game Programming in C++ by Sanjay Madhav
- // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
- //
- // Released under the BSD License
- // See LICENSE.txt for full details.
- // ----------------------------------------------------------------
- #include "Bullet.h"
- #include "SpriteComponent.h"
- #include "MoveComponent.h"
- #include "CircleComponent.h"
- #include "Game.h"
- #include "Enemy.h"
- Bullet::Bullet(class Game* game)
- :Actor(game)
- {
- SpriteComponent* sc = new SpriteComponent(this);
- sc->SetTexture(game->GetTexture("Assets/Projectile.png"));
-
- MoveComponent* mc = new MoveComponent(this);
- mc->SetForwardSpeed(400.0f);
-
- mCircle = new CircleComponent(this);
- mCircle->SetRadius(5.0f);
-
- mLiveTime = 1.0f;
- }
- void Bullet::UpdateActor(float deltaTime)
- {
- Actor::UpdateActor(deltaTime);
-
- // Check for collision vs enemies
- for (Enemy* e : GetGame()->GetEnemies())
- {
- if (Intersect(*mCircle, *(e->GetCircle())))
- {
- // We both die on collision
- e->SetState(EDead);
- SetState(EDead);
- break;
- }
- }
-
- mLiveTime -= deltaTime;
- if (mLiveTime <= 0.0f)
- {
- // Time limit hit, die
- SetState(EDead);
- }
- }
|