vectozavr-shooter/engine/gui/Button.cpp

59 lines
1.4 KiB
C++
Executable File

//
// Created by Иван Ильин on 26.03.2021.
//
#include "Button.h"
#include "../ResourceManager.h"
void Button::select()
{
if (!selected && !pressed)
{
button.setTextureRect(sf::IntRect(selectedState.tx, selectedState.ty, w, h));
selected = true;
}
}
void Button::unSelect()
{
if (selected && !pressed)
{
button.setTextureRect(sf::IntRect(usualState.tx, usualState.ty, w, h));
selected = false;
}
}
void Button::press()
{
if (!pressed)
{
button.setTextureRect(sf::IntRect(pressedState.tx, pressedState.ty, w, h));
if(checkBox)
pressed = true;
clickSound.play();
click();
}
else
{
button.setTextureRect(sf::IntRect(usualState.tx, usualState.ty, w, h));
if(checkBox)
pressed = false;
}
}
void Button::init() {
button.setTexture(*ResourceManager::loadTexture(s_texture));
button.setTextureRect(sf::IntRect(usualState.tx, usualState.ty, w, h));
button.scale(sx, sy);
button.setPosition(x - w*sx/2, y - h*sy/2);
text.setFont(*ResourceManager::loadFont(s_font));
text.setString(s_text);
text.setCharacterSize(h*sy/2);
text.setFillColor(textColor);
text.setPosition(x - text.getLocalBounds().width/2, y - h*sy/2 + text.getLocalBounds().height/4);
clickSound.setBuffer(*ResourceManager::loadSoundBuffer(s_clickSound));
clickSound.setVolume(15);
}