Implement fonts
This commit is contained in:
parent
37391cfdfd
commit
592f1883aa
|
@ -10,6 +10,8 @@
|
|||
#include "game/game.h"
|
||||
#include "gui/state.h"
|
||||
|
||||
#include "tools/resourceholder.h"
|
||||
|
||||
class Application
|
||||
{
|
||||
public:
|
||||
|
@ -29,6 +31,8 @@ private:
|
|||
void exec();
|
||||
void pushState(GUIState::Tag new_state);
|
||||
void popState();
|
||||
|
||||
FontHolder _font_holder;
|
||||
};
|
||||
|
||||
#endif // APPLICATION_H
|
||||
|
|
|
@ -20,14 +20,14 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
Resource& get(Id id) const
|
||||
const std::shared_ptr<Resource>& get(Id id) const
|
||||
{
|
||||
const auto found = _resources.find(id);
|
||||
return *found->second;
|
||||
return found->second;
|
||||
}
|
||||
|
||||
private:
|
||||
std::map<Id, std::unique_ptr<Resource>> _resources;
|
||||
std::map<Id, std::shared_ptr<Resource>> _resources;
|
||||
};
|
||||
|
||||
namespace Fonts
|
||||
|
|
|
@ -15,9 +15,12 @@
|
|||
const sf::Time TIME_PER_FRAME = sf::seconds(1.f / 90.f);
|
||||
|
||||
Application::Application() :
|
||||
_game_window({1280, 720}, "Test", sf::Style::Default),
|
||||
_game(std::make_unique<ClassicGame>(std::make_unique<ClassicGraphicsManager>(_game_window), std::make_unique<MusicSFML>()))
|
||||
_game_window({1280, 720}, "Test", sf::Style::Default)
|
||||
{
|
||||
_font_holder.load(Fonts::Id::GUI, "SourceCodePro-Regular.ttf");
|
||||
|
||||
_game = std::make_unique<ClassicGame>(std::make_unique<ClassicGraphicsManager>(_game_window), std::make_unique<MusicSFML>());
|
||||
|
||||
_game_window.setFramerateLimit(60);
|
||||
_game_window.setKeyRepeatEnabled(false);
|
||||
_game_window.setMouseCursorGrabbed(false);
|
||||
|
@ -26,9 +29,9 @@ Application::Application() :
|
|||
MainMenu::Callbacks callbacks = {[&](){ pushState(GUIState::Tag::EDITOR); }};
|
||||
Editor::Callbacks editor_callbacks = {[&](){ popState(); }};
|
||||
|
||||
const auto main_menu = std::make_shared<MainMenu>(_game_window, std::move(callbacks));
|
||||
const auto main_menu = std::make_shared<MainMenu>(_game_window, std::move(callbacks), _font_holder);
|
||||
const auto game_state = std::make_shared<GameState>(_game_window, _game, GameState::Callbacks());
|
||||
const auto editor = std::make_shared<Editor>(_game_window, std::move(editor_callbacks), std::make_unique<MusicSFML>());
|
||||
const auto editor = std::make_shared<Editor>(_game_window, std::move(editor_callbacks), std::make_unique<MusicSFML>(), _font_holder);
|
||||
_states[GUIState::Tag::MAIN_MENU] = main_menu;
|
||||
_states[GUIState::Tag::GAME] = game_state;
|
||||
_states[GUIState::Tag::EDITOR] = editor;
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
|
||||
#include <iostream>
|
||||
|
||||
Editor::Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr<Music>&& music) :
|
||||
_menu_bar(std::make_shared<MenuBar>()),
|
||||
Editor::Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr<Music>&& music, const FontHolder& font_holder) :
|
||||
_game_window(game_window),
|
||||
_music(std::move(music)),
|
||||
_bpm_calculator(std::make_unique<BPMCalculator>(_music))
|
||||
|
@ -16,13 +15,15 @@ Editor::Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique
|
|||
const float window_width = game_window.getSize().x;
|
||||
//const float window_height = game_window.getSize().y;
|
||||
|
||||
auto bpm_button = std::make_shared<PushButton>("Calculate BPM");
|
||||
_menu_bar = std::make_shared<MenuBar>(font_holder.get(Fonts::Id::GUI));
|
||||
|
||||
auto bpm_button = std::make_shared<PushButton>("Play song :)", font_holder.get(Fonts::Id::GUI));
|
||||
bpm_button->setCallback([&]()
|
||||
{
|
||||
_bpm_calculator->startListening(0);
|
||||
});
|
||||
|
||||
auto quit_button = std::make_shared<PushButton>("Quit");
|
||||
auto quit_button = std::make_shared<PushButton>("Quit", font_holder.get(Fonts::Id::GUI));
|
||||
quit_button->setCallback(callbacks.onLeaveEditorState);
|
||||
|
||||
auto test_menu = std::make_shared<MenuDrop>();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "gui/state.h"
|
||||
#include "tools/music.h"
|
||||
|
||||
#include "tools/resourceholder.h"
|
||||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
|
||||
class MenuBar;
|
||||
|
@ -17,7 +17,7 @@ public:
|
|||
std::function<void(void)> onLeaveEditorState;
|
||||
};
|
||||
|
||||
explicit Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr<Music>&& music);
|
||||
explicit Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr<Music>&& music, const FontHolder& font_holder);
|
||||
virtual void input(const sf::Event& event) override;
|
||||
virtual void update() override;
|
||||
virtual void draw() const override;
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
#include "widgets/pushbutton.h"
|
||||
#include "widgets/group.h"
|
||||
|
||||
MainMenu::MainMenu(sf::RenderWindow& game_window, Callbacks&& callbacks) :
|
||||
MainMenu::MainMenu(sf::RenderWindow& game_window, Callbacks&& callbacks, const FontHolder& font_holder) :
|
||||
_buttons(std::make_shared<Group>()),
|
||||
_game_window(game_window)
|
||||
{
|
||||
const float window_width = game_window.getSize().x;
|
||||
const float window_height = game_window.getSize().y;
|
||||
|
||||
std::shared_ptr<PushButton> button_start = std::make_shared<PushButton>("Start");
|
||||
std::shared_ptr<PushButton> button_start = std::make_shared<PushButton>("Start", font_holder.get(Fonts::Id::GUI), 48);
|
||||
button_start->setRect(sf::FloatRect(window_width / 3., window_height / 7. * 2, window_width / 3., window_height / 7.));
|
||||
button_start->setCallback(callbacks.onAppendGameState);
|
||||
|
||||
std::shared_ptr<PushButton> button_exit = std::make_shared<PushButton>("Exit");
|
||||
std::shared_ptr<PushButton> button_exit = std::make_shared<PushButton>("Exit", font_holder.get(Fonts::Id::GUI), 48);
|
||||
button_exit->setRect(sf::FloatRect(window_width / 3., window_height / 7. * 4, window_width / 3., window_height / 7.));
|
||||
button_exit->setCallback([&]()
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "gui/state.h"
|
||||
#include "tools/resourceholder.h"
|
||||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
|
||||
class Group;
|
||||
|
@ -14,7 +15,7 @@ public:
|
|||
std::function<void(void)> onAppendGameState;
|
||||
};
|
||||
|
||||
explicit MainMenu(sf::RenderWindow& game_window, Callbacks&& callbacks);
|
||||
explicit MainMenu(sf::RenderWindow& game_window, Callbacks&& callbacks, const FontHolder &font_holder);
|
||||
virtual void input(const sf::Event& event) override;
|
||||
virtual void update() override;
|
||||
virtual void draw() const override;
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
#include "button.h"
|
||||
|
||||
Button::Button(const std::string &text)
|
||||
Button::Button(const std::string &text, const std::shared_ptr<sf::Font>& font, unsigned int font_size) :
|
||||
_font(font)
|
||||
{
|
||||
setText(text);
|
||||
_button_text.setFillColor(sf::Color::Black);
|
||||
_button_text.setCharacterSize(font_size);
|
||||
_button_text.setFont(*_font);
|
||||
_button_content.setFillColor(sf::Color::White);
|
||||
|
||||
}
|
||||
|
||||
void Button::update()
|
||||
|
@ -27,6 +31,7 @@ void Button::setRect(const sf::FloatRect& rect)
|
|||
{
|
||||
_button_content.setPosition(rect.left, rect.top);
|
||||
_button_content.setSize({rect.width, rect.height});
|
||||
_button_text.setPosition(rect.left + 5, rect.top + 5);
|
||||
}
|
||||
|
||||
void Button::setPosition(const sf::Vector2f &position)
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
class Button : public Widget
|
||||
{
|
||||
public:
|
||||
explicit Button(const std::string& text);
|
||||
explicit Button(const std::string& text, const std::shared_ptr<sf::Font>& font, unsigned int font_size);
|
||||
|
||||
virtual void input(const sf::Event& event) override = 0;
|
||||
virtual void update() override final;
|
||||
|
@ -23,5 +23,6 @@ public:
|
|||
protected:
|
||||
sf::RectangleShape _button_content;
|
||||
sf::Text _button_text;
|
||||
std::shared_ptr<sf::Font> _font;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#include "cascademenubutton.h"
|
||||
#include "menudrop.h"
|
||||
|
||||
CascadeMenuButton::CascadeMenuButton(const std::string& text) :
|
||||
Button(text)
|
||||
CascadeMenuButton::CascadeMenuButton(const std::string& text, const std::shared_ptr<sf::Font> &font, unsigned int font_size) :
|
||||
Button(text, font, font_size)
|
||||
{}
|
||||
|
||||
void CascadeMenuButton::input(const sf::Event& event)
|
||||
|
|
|
@ -7,7 +7,7 @@ class MenuDrop;
|
|||
class CascadeMenuButton : public Button
|
||||
{
|
||||
public:
|
||||
explicit CascadeMenuButton(const std::string& text);
|
||||
explicit CascadeMenuButton(const std::string& text, const std::shared_ptr<sf::Font>& font, unsigned int font_size = 12);
|
||||
virtual void input(const sf::Event& event) override final;
|
||||
virtual void setRect(const sf::FloatRect& rect) override final;
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#include "menubar.h"
|
||||
#include "iostream"
|
||||
|
||||
MenuBar::MenuBar() :
|
||||
MenuBar::MenuBar(const std::shared_ptr<sf::Font>& font) :
|
||||
_font(font),
|
||||
_button_width(170)
|
||||
{
|
||||
_bar_rect.setFillColor(sf::Color(88, 57, 107));
|
||||
|
@ -67,7 +68,7 @@ bool MenuBar::isUnderMouse(int mouse_x, int mouse_y) const
|
|||
|
||||
void MenuBar::addSubMenu(std::string name, const std::shared_ptr<MenuDrop>& submenu)
|
||||
{
|
||||
const auto new_button = std::make_shared<PushButton>(name);
|
||||
const auto new_button = std::make_shared<PushButton>(name, _font);
|
||||
|
||||
std::size_t current_index = _amount_buttons;
|
||||
new_button->setRect(sf::FloatRect(current_index * _button_width, 0, _button_width, _bar_rect.getSize().y));
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
class MenuBar : public Widget
|
||||
{
|
||||
public:
|
||||
explicit MenuBar();
|
||||
explicit MenuBar(const std::shared_ptr<sf::Font>& font);
|
||||
|
||||
virtual void input(const sf::Event& event) override;
|
||||
virtual void update() override;
|
||||
|
@ -22,6 +22,7 @@ public:
|
|||
void addSubMenu(std::string name, const std::shared_ptr<MenuDrop>& submenu);
|
||||
|
||||
private:
|
||||
std::shared_ptr<sf::Font> _font;
|
||||
sf::RectangleShape _bar_rect;
|
||||
std::size_t _amount_buttons;
|
||||
std::size_t _button_width;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "pushbutton.h"
|
||||
|
||||
PushButton::PushButton(const std::string& text) :
|
||||
Button(text),
|
||||
PushButton::PushButton(const std::string& text, const std::shared_ptr<sf::Font> &font, unsigned int font_size) :
|
||||
Button(text, font, font_size),
|
||||
_pressed(false)
|
||||
{
|
||||
_color_idle = sf::Color(230, 230, 230);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
class PushButton : public Button
|
||||
{
|
||||
public:
|
||||
explicit PushButton(const std::string& text);
|
||||
explicit PushButton(const std::string& text, const std::shared_ptr<sf::Font>& font, unsigned int font_size = 12);
|
||||
virtual void input(const sf::Event& event) override final;
|
||||
|
||||
void setCallback(std::function<void(void)> callback);
|
||||
|
|
Loading…
Reference in New Issue