This commit is contained in:
Bram Verhulst
2024-06-09 22:03:29 +02:00
parent d7389411f5
commit 5f1dcd5788
76 changed files with 1532 additions and 385 deletions

View File

@@ -5,40 +5,34 @@
#include "colors.h"
#include "utils.h"
GuiButton::GuiButton(const std::string& filePath, Vector2f pos, Vector2f size, TextureManager* manager): m_Position(pos), m_Size(size) {
GuiButton::GuiButton(const std::string& filePath, const Vector2f& pos, const Vector2f& size, bool shouldHideDefault, TextureManager* manager): m_Position(pos), m_Size(size),
m_shouldHide(shouldHideDefault) {
m_Texture = manager->GetTexture(filePath);
if(size.x == 0 && size.y == 0) {
m_Size = Vector2f{float(m_Texture->GetWidth()), float(m_Texture->GetHeight())};
if (size.x == 0 && size.y == 0) {
m_Size = Vector2f { float(m_Texture->GetWidth()), float(m_Texture->GetHeight()) };
}
std::cout << "Button created" << '\n';
}
GuiButton::~GuiButton() {
std::cout << "Button destroyed" << '\n';
}
void GuiButton::Draw() const {
Rectf dest = Rectf(m_Position, m_Size);
Rectf src = Rectf(0, 0, m_Texture->GetWidth(), m_Texture->GetHeight());
if(m_IsHovered) {
if (m_IsHovered || !m_shouldHide) {
m_Texture->Draw(dest, src, false);
}
}
void GuiButton::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) {
if (m_IsPressed && !m_IsPrimed) {
m_IsPrimed = true;
m_OnClick();
}
if(!m_IsPressed) {
if (!m_IsPressed) {
m_IsPrimed = false;
}
}