#include "PlayerScoreComponent.h" #include "GameObject.h" #include #include "PlayerComponent.h" #include "BubbleComponent.h" #include "PickupComponent.h" #include "GameEvents.h" #include "GameState.h" #include "Scene.h" //#include #include "TextComponent.h" dae::PlayerScoreComponent::PlayerScoreComponent(int id) : m_Id{ id } { } dae::PlayerScoreComponent::~PlayerScoreComponent() { } void dae::PlayerScoreComponent::Initialize() { } void dae::PlayerScoreComponent::ReceiveNotification(unsigned eventId, Component* pComponent) { auto pPlayerComponent = dynamic_cast(pComponent); if (pPlayerComponent != nullptr) { if (PlayerEvents(eventId) == PlayerEvents::REVIVED_AFTER_GAMEOVER) { m_Score = 0; UpdateScore(); } } auto pPickupComponent = dynamic_cast(pComponent); if (pPickupComponent != nullptr) { if (m_Id == 1) { switch (PickupEvents(eventId)) { case PickupEvents::P1_PICKED_UP_WATERMELON: m_Score += 100; UpdateScore(); break; case PickupEvents::P1_PICKED_UP_FRIES: m_Score += 200; UpdateScore(); break; case PickupEvents::P1_PICKED_UP_BANANA: m_Score += 500; UpdateScore(); break; default: break; } } else if (m_Id == 2) { switch (PickupEvents(eventId)) { case PickupEvents::P2_PICKED_UP_WATERMELON: m_Score += 100; UpdateScore(); break; case PickupEvents::P2_PICKED_UP_FRIES: m_Score += 200; UpdateScore(); break; case PickupEvents::P2_PICKED_UP_BANANA: m_Score += 500; UpdateScore(); break; default: break; } } } auto pBubbleComponent = dynamic_cast(pComponent); if (pBubbleComponent != nullptr) { if (m_Id == 1) { switch (BubbleEvents(eventId)) { case BubbleEvents::P1_POPPED_EMPTY_BUBBLE: m_Score += 10; UpdateScore(); break; case BubbleEvents::P1_POPPED_ZENCHAN_BUBBLE: m_Score += 1000; UpdateScore(); break; default: break; } } else if (m_Id == 2) { switch (BubbleEvents(eventId)) { case BubbleEvents::P2_POPPED_EMPTY_BUBBLE: m_Score += 10; UpdateScore(); break; case BubbleEvents::P2_POPPED_ZENCHAN_BUBBLE: m_Score += 1000; UpdateScore(); break; default: break; } } } } void dae::PlayerScoreComponent::UpdateScore() { std::string paddedScore = std::to_string(m_Score); if (paddedScore.length() < 5) { paddedScore.insert(0, 5 - paddedScore.length(), ' '); } GetGameObject()->GetComponent()->SetText(paddedScore); if (m_Id == 1) { GameState::GetInstance().SetPlayer1Score(m_Score); } else if (m_Id == 2) { GameState::GetInstance().SetPlayer2Score(m_Score); } if (GameState::GetInstance().GetHighScore() < m_Score) { GameState::GetInstance().SetHighScore(m_Score); SceneManager::GetInstance().GetActiveScene()->FindChild("HighScoreText")->GetComponent()->SetText(std::to_string(m_Score)); } } void dae::PlayerScoreComponent::Update(float) { } void dae::PlayerScoreComponent::FixedUpdate(float) { } void dae::PlayerScoreComponent::RefreshScore() { if (m_Id == 1) { m_Score = GameState::GetInstance().GetPlayer1Score(); UpdateScore(); } else if (m_Id == 2) { m_Score = GameState::GetInstance().GetPlayer2Score(); UpdateScore(); } }