vectozavr-shooter/engine/gui/Window.h

45 lines
1.3 KiB
C
Raw Normal View History

2021-09-13 15:53:43 +03:00
//
// Created by Иван Ильин on 26.03.2021.
//
#ifndef ENGINE_WINDOW_H
#define ENGINE_WINDOW_H
#include <utility>
#include <memory>
#include "Button.h"
2021-10-09 13:41:12 +03:00
#include "../Screen.h"
#include "../Mouse.h"
2021-09-13 15:53:43 +03:00
class Window final {
2021-09-13 15:53:43 +03:00
private:
2021-10-03 07:47:05 +03:00
std::string _name;
std::string _backTexture;
std::vector<Button> _buttons;
2021-09-13 15:53:43 +03:00
2021-10-03 07:47:05 +03:00
sf::Sprite _back;
2021-09-13 15:53:43 +03:00
2021-10-28 16:58:02 +03:00
Vec2D _prevMousePosition{0, 0};
std::shared_ptr<Screen> _screen;
std::shared_ptr<Mouse> _mouse;
2021-09-13 15:53:43 +03:00
public:
2021-10-28 16:58:02 +03:00
explicit Window(std::shared_ptr<Screen> screen, std::shared_ptr<Mouse> mouse, std::string name = "Menu", std::string backTexture = "") : _screen(std::move(screen)), _mouse(std::move(mouse)), _name(std::move(name)), _backTexture(std::move(backTexture)){}
2021-09-13 15:53:43 +03:00
void addButton(int x, int y, int w, int h,
std::function<void()> click,
2021-10-03 07:47:05 +03:00
const std::string& text = "_button", double sx = 1, double sy = 1,
2021-09-13 15:53:43 +03:00
const std::string& texture = "", tPos usualState = {}, tPos selectedState = {}, tPos pressedState = {},
2021-10-17 19:38:16 +03:00
const std::string& font = Consts::MEDIUM_FONT, sf::Color textColor = {255, 255, 255});
2021-09-13 15:53:43 +03:00
2021-10-28 16:58:02 +03:00
void setTitle(const std::string& title) { _name = title; }
2021-09-13 15:53:43 +03:00
void setBackgroundTexture(const std::string& texture, double sx = 1, double sy = 1, int w = 1920, int h = 1080);
void update();
2021-09-13 15:53:43 +03:00
};
#endif //MINECRAFT_3DZAVR_WINDOW_H