#include "pch.h"
#include "Button.h"

#include <iostream>

#include "colors.h"
#include "utils.h"
Button::Button(const std::string& filePath, Vector2f pos, Vector2f size, TextureManager* manager): m_Position(pos), m_Size(size) {
	m_Texture = manager->GetTexture(filePath);
	if(size.x == 0 && size.y == 0) {
		m_Size = Vector2f{float(m_Texture->GetWidth()), float(m_Texture->GetHeight())};
	}
	std::cout << "Button created" << '\n';
}
Button::~Button() {
	std::cout << "Button destroyed" << '\n';
}
void Button::Draw() const {
	Rectf dest = Rectf(m_Position, m_Size);
	Rectf src = Rectf(0, 0, m_Texture->GetWidth(), m_Texture->GetHeight());
	if(m_IsHovered) {
		m_Texture->Draw(dest, src, false);
	}
}
void Button::Update(float elapsedSec) {
	Vector2f mousePos = utils::GetMousePos();
	Rectf buttonRect = Rectf(m_Position, m_Size);
	
	this->m_IsHovered = utils::IsPointInRect(mousePos, buttonRect);
	
	m_IsPressed = m_IsHovered && utils::IsMouseButtonDown(SDL_BUTTON_LEFT);

	if(m_IsPressed && !m_IsPrimed) {
		m_IsPrimed = true;
		m_OnClick();
	}

	if(!m_IsPressed) {
		m_IsPrimed = false;
	}
}



