BubbleBobbleRemake / BubbleBobble / LevelComponent.h
LevelComponent.h
Raw
#pragma once
#include "Component.h"
#include <string>

#include <algorithm>

namespace dae
{
	class ColliderComponent;
	class LevelComponent : public Component
	{
	public:
		LevelComponent(int levelId);
		~LevelComponent();

		virtual void Initialize() override;

		const std::vector<ColliderComponent*>& GetNearbyLevelTileColliders()
		{
			return m_pTilesColliders;
		}

		const std::vector<ColliderComponent*>& GetBorderColliders()
		{
			return m_pBorderColliders;
		}

		const std::vector<ColliderComponent*>& GetTopLevelTileColliders()
		{
			return m_pTopColliders;
		}

		void AddPlayerCollider(ColliderComponent* pPlayerCollider)
		{
			if (std::find(m_pPlayersColliders.begin(), m_pPlayersColliders.end(), pPlayerCollider) == m_pPlayersColliders.end())
			{
				m_pPlayersColliders.emplace_back(pPlayerCollider);
			}
		}

		const std::vector<ColliderComponent*>& GetPlayersColliders()
		{
			return m_pPlayersColliders;
		}

		void DeleteTiles();
		
		void Update(float deltaTime) override;
		void FixedUpdate(float deltaTime) override;
		void Render() const override {};

		int GetLevelId() { return m_LevelId; }

	private:
		const unsigned int LEVEL_LINE_SIZE{ 32 };
		const float TILE_SIZE{ 16.f };
		std::string m_LevelPath;
		int m_LevelId;

		std::vector<ColliderComponent*> m_pTilesColliders{};
		std::vector<ColliderComponent*> m_pBorderColliders{};
		std::vector<ColliderComponent*> m_pTopColliders{};

		std::vector<ColliderComponent*> m_pPlayersColliders{};
	};
}