#include "PickupComponent.h" #include "TextureComponent.h" #include "PlayerScoreComponent.h" #include "ColliderComponent.h" #include "RigidbodyComponent.h" #include "GameEvents.h" #include "Scene.h" #include "ServiceLocator.h" #include "GameObject.h" dae::PickupComponent::PickupComponent(PickupId pickupId, float startX, float startY, const std::vector& pPlayerColliders) : m_PickupId{ pickupId } , m_StartX{ startX } , m_StartY{ startY } , m_pPlayerColliders { pPlayerColliders } { } dae::PickupComponent::~PickupComponent() { } void dae::PickupComponent::Initialize() { m_pSoundSystem = &ServiceLocator::GetSoundSystem(); GameObject* pPickup = GetGameObject(); pPickup->SetName("pickup"); std::string spriteName{}; switch (m_PickupId) { default:break; case WATERMELON: spriteName = "watermelon.png"; break; case FRIES: spriteName = "fries.png"; break; case BANANA: spriteName = "banana.png"; break; } pPickup->AddComponent(new TextureComponent(spriteName)); pPickup->SetPosition(m_StartX, m_StartY); GameObject* pPlayer1ScoreGo = SceneManager::GetInstance().GetActiveScene()->FindChild("Player1ScoreGo"); if (pPlayer1ScoreGo != nullptr) AddObserver(pPlayer1ScoreGo->GetComponent()); GameObject* pPlayer2ScoreGo = SceneManager::GetInstance().GetActiveScene()->FindChild("Player2ScoreGo"); if (pPlayer2ScoreGo != nullptr) AddObserver(pPlayer2ScoreGo->GetComponent()); pPickup->AddComponent(new ColliderComponent(32, 32, false, 0, 0)); pPickup->AddComponent(new RigidbodyComponent()); } void dae::PickupComponent::Update(float ) { GameObject* pPickupGo = GetGameObject(); float colX{}; float colY{}; if (pPickupGo->GetComponent()->IsCollidingWith(m_pPlayerColliders, colX, colY, true)) { GameObject* pCollidedGameObject = pPickupGo->GetComponent()->GetLastCollidedGameObject(); if (pCollidedGameObject != nullptr) { PickupEvents event{}; if (pCollidedGameObject->GetName() == "Player1Go") { switch (m_PickupId) { default:break; case WATERMELON: event = P1_PICKED_UP_WATERMELON; break; case FRIES: event = P1_PICKED_UP_FRIES; break; case BANANA: event = P1_PICKED_UP_BANANA; break; } NotifyObservers(event); } else if (pCollidedGameObject->GetName() == "Player2Go") { switch (m_PickupId) { default:break; case WATERMELON: event = P2_PICKED_UP_WATERMELON; break; case FRIES: event = P2_PICKED_UP_FRIES; break; case BANANA: event = P2_PICKED_UP_BANANA; break; } NotifyObservers(event); } } m_pSoundSystem->Play(6, 0.5f); pPickupGo->SetActive(false); pPickupGo->Destroy(); } } void dae::PickupComponent::FixedUpdate(float ) { }