Skip to content

Commit

Permalink
changed health display text to sprites
Browse files Browse the repository at this point in the history
  • Loading branch information
RiverHillbug committed Jun 5, 2024
1 parent 88483a4 commit ea3f7a3
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
40 changes: 32 additions & 8 deletions Galaga/HealthDisplayComponent.cpp
Original file line number Diff line number Diff line change
@@ -1,37 +1,61 @@
#include "HealthDisplayComponent.h"
#include "Text.h"
#include "Sprite.h"
#include "PlayerCharacter.h"
#include "GameObject.h"
#include "IEventParam.h"
#include "CharactersManager.h"
#include <sstream>
#include <memory>
#include <format>

HealthDisplayComponent::HealthDisplayComponent(Fluffy::GameObject* pOwner, int playerIndex, const std::string& fontPath, int fontSize)
HealthDisplayComponent::HealthDisplayComponent(Fluffy::GameObject* pOwner, int playerIndex)
: Fluffy::Component(pOwner)
, m_PlayerIndex{ playerIndex }
{
if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance().GetPlayer(playerIndex) })
if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance()->GetPlayer(playerIndex) })
{
pPlayer->GetOnDeath().AddListener(this);
}

m_pText = pOwner->AddComponent<Fluffy::Text>(GetLivesString(), fontPath, fontSize);
std::string fileName = std::format("galaga_player{}.png", playerIndex + 1);
const float padding{ 5.0f };
float spriteWidth{ 0.0f };

for (int i{ 0 }; i < pPlayer->GetLivesCount() - 1; ++i)
{
m_Lives.push_back(pOwner->AddComponent<Fluffy::Sprite>(fileName, glm::vec2((spriteWidth + padding) * i, 0.0f)));

if (i == 0)
spriteWidth = m_Lives[0]->GetTextureSize().x;
}
}
}

HealthDisplayComponent::~HealthDisplayComponent()
{
if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance().GetPlayer(m_PlayerIndex) })
if (CharactersManager::GetInstance() == nullptr)
return;

if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance()->GetPlayer(m_PlayerIndex) })
{
pPlayer->GetOnDeath().RemoveListener(this);
}
}

void HealthDisplayComponent::OnNotify(const Fluffy::EventType& eventType, const Fluffy::IEventParam*)
{
int lives{ 0 };

switch (eventType)
{
case Fluffy::EventType::OnCharacterDeath:
m_pText->SetText(GetLivesString());
if (PlayerCharacter * pPlayer{ CharactersManager::GetInstance()->GetPlayer(m_PlayerIndex) })
{
lives = pPlayer->GetLivesCount();
}

if (lives != 0)
m_Lives[lives-1]->SetEnabled(false);

break;
}
}
Expand All @@ -43,7 +67,7 @@ std::string HealthDisplayComponent::GetLivesString() const

int lives{ 0 };

if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance().GetPlayer(m_PlayerIndex) })
if (PlayerCharacter* pPlayer{ CharactersManager::GetInstance()->GetPlayer(m_PlayerIndex) })
{
lives = pPlayer->GetLivesCount();
}
Expand Down
6 changes: 4 additions & 2 deletions Galaga/HealthDisplayComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ namespace Fluffy
{
class Component;
class GameObject;
class Sprite;
class IEventListener;
class Event;
class Text;
Expand All @@ -15,14 +16,15 @@ namespace Fluffy
class HealthDisplayComponent final : public Fluffy::Component, Fluffy::IEventListener
{
public:
HealthDisplayComponent(Fluffy::GameObject* pOwner, int playerIndex, const std::string& fontPath, int fontSize);
HealthDisplayComponent(Fluffy::GameObject* pOwner, int playerIndex);
~HealthDisplayComponent();

void OnNotify(const Fluffy::EventType& eventType, const struct Fluffy::IEventParam* param) override;

private:
const int m_PlayerIndex;
Fluffy::Text* m_pText;

std::vector<Fluffy::Sprite*> m_Lives;

std::string GetLivesString() const;
};

0 comments on commit ea3f7a3

Please sign in to comment.