59 lines
1.4 KiB
C++
Executable File
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);
|
|
}
|