From ca3eb4ece7ea93bb83ed94056471ef58118691c4 Mon Sep 17 00:00:00 2001 From: Tamir Atias Date: Mon, 16 Jan 2012 17:53:18 +0200 Subject: [PATCH] [Add] Health bar now shows only when character is being attacked. --- src/libUnuk/Engine/Character.cpp | 8 +++++++- src/libUnuk/Engine/Character.h | 3 +++ src/libUnuk/Engine/WorldManager.cpp | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libUnuk/Engine/Character.cpp b/src/libUnuk/Engine/Character.cpp index f89d1ea..d08dbfa 100644 --- a/src/libUnuk/Engine/Character.cpp +++ b/src/libUnuk/Engine/Character.cpp @@ -119,7 +119,9 @@ void Character::Render(void) { ApplySurface((int)x, (int)y, _texture, screen, &_sprites[directionFacing][_animationStage]); } - _healthBar.Draw(); + if(_healthBarDuration.IsStarted() && (_healthBarDuration.GetTicks() < 5000)) { + _healthBar.Draw(); + } } void Character::Update(void) { @@ -142,6 +144,10 @@ void Character::Update(void) { _healthBar.SetProgress((float)_health / 100.0f); } +void Character::OnAttack(void) { + _healthBarDuration.Start(); +} + void Character::Move(void) { x += xVel; tileX = (int)(((x + (w / 2)) / TILE_WIDTH)); diff --git a/src/libUnuk/Engine/Character.h b/src/libUnuk/Engine/Character.h index 36c3824..db6d072 100644 --- a/src/libUnuk/Engine/Character.h +++ b/src/libUnuk/Engine/Character.h @@ -45,6 +45,8 @@ public: void Render(void); void Update(void); + void OnAttack(void); + inline void* operator new(size_t size) { return gMemManager.Allocate(size); } @@ -101,6 +103,7 @@ protected: static const int ANIM_ATTACK = 3; Bar _healthBar; + Timer _healthBarDuration; private: static const int ANIMATION_SPEED = 200; diff --git a/src/libUnuk/Engine/WorldManager.cpp b/src/libUnuk/Engine/WorldManager.cpp index a39b965..0f8fc81 100644 --- a/src/libUnuk/Engine/WorldManager.cpp +++ b/src/libUnuk/Engine/WorldManager.cpp @@ -92,6 +92,7 @@ void WorldManager::OnPlayerAttack(Character* player) { } npc->SetHealth(npc->GetHealth() - 5); + npc->OnAttack(); if(npc->GetHealth() <= 0) { i = _npcs.erase(i);