Visible Controls
This commit is contained in:
parent
f4a4dc7de7
commit
62a042184c
@ -34,6 +34,11 @@
|
|||||||
- Marker Selection
|
- Marker Selection
|
||||||
- Fix screen filter not resizing properly
|
- Fix screen filter not resizing properly
|
||||||
- Controller mapping
|
- Controller mapping
|
||||||
|
- Visible controls
|
||||||
|
- Start
|
||||||
|
- Options
|
||||||
|
- Left / Right
|
||||||
|
- Back
|
||||||
|
|
||||||
## Misc
|
## Misc
|
||||||
- Handling Resolution changes
|
- Handling Resolution changes
|
||||||
|
3
TODO.md
3
TODO.md
@ -2,8 +2,7 @@
|
|||||||
## Misc
|
## Misc
|
||||||
|
|
||||||
## Music Select Screen
|
## Music Select Screen
|
||||||
- Visible controls
|
- Start Button Action
|
||||||
- Start Button
|
|
||||||
|
|
||||||
## Gameplay Screen
|
## Gameplay Screen
|
||||||
|
|
||||||
|
18
meson.build
18
meson.build
@ -47,22 +47,24 @@ sources = [
|
|||||||
# 'src/Resources/CoverAtlas.hpp',
|
# 'src/Resources/CoverAtlas.hpp',
|
||||||
# 'src/Resources/CoverAtlas.cpp',
|
# 'src/Resources/CoverAtlas.cpp',
|
||||||
# 'src/Screens/Gameplay.hpp',
|
# 'src/Screens/Gameplay.hpp',
|
||||||
'src/Screens/MusicSelect/DensityGraph.hpp',
|
'src/Screens/MusicSelect/Drawables/ControlPanels.hpp',
|
||||||
'src/Screens/MusicSelect/DensityGraph.cpp',
|
'src/Screens/MusicSelect/Drawables/ControlPanels.cpp',
|
||||||
'src/Screens/MusicSelect/MusicPreview.hpp',
|
|
||||||
'src/Screens/MusicSelect/MusicPreview.cpp',
|
|
||||||
'src/Screens/MusicSelect/MusicSelect.hpp',
|
|
||||||
'src/Screens/MusicSelect/MusicSelect.cpp',
|
|
||||||
'src/Screens/MusicSelect/Options/OptionPage.hpp',
|
'src/Screens/MusicSelect/Options/OptionPage.hpp',
|
||||||
'src/Screens/MusicSelect/Options/OptionPage.cpp',
|
'src/Screens/MusicSelect/Options/OptionPage.cpp',
|
||||||
'src/Screens/MusicSelect/Options/InputRemap.hpp',
|
'src/Screens/MusicSelect/Options/InputRemap.hpp',
|
||||||
'src/Screens/MusicSelect/Options/InputRemap.cpp',
|
'src/Screens/MusicSelect/Options/InputRemap.cpp',
|
||||||
'src/Screens/MusicSelect/Panels/MarkerPanel.hpp',
|
'src/Screens/MusicSelect/Panels/MarkerPanel.hpp',
|
||||||
'src/Screens/MusicSelect/Panels/MarkerPanel.cpp',
|
'src/Screens/MusicSelect/Panels/MarkerPanel.cpp',
|
||||||
'src/Screens/MusicSelect/Panels/Panel.hpp',
|
'src/Screens/MusicSelect/Panels/Panel.hpp',
|
||||||
'src/Screens/MusicSelect/Panels/Panel.cpp',
|
'src/Screens/MusicSelect/Panels/Panel.cpp',
|
||||||
'src/Screens/MusicSelect/Panels/SubpagePanel.hpp',
|
'src/Screens/MusicSelect/Panels/SubpagePanel.hpp',
|
||||||
'src/Screens/MusicSelect/Panels/SubpagePanel.cpp',
|
'src/Screens/MusicSelect/Panels/SubpagePanel.cpp',
|
||||||
|
'src/Screens/MusicSelect/DensityGraph.hpp',
|
||||||
|
'src/Screens/MusicSelect/DensityGraph.cpp',
|
||||||
|
'src/Screens/MusicSelect/MusicPreview.hpp',
|
||||||
|
'src/Screens/MusicSelect/MusicPreview.cpp',
|
||||||
|
'src/Screens/MusicSelect/MusicSelect.hpp',
|
||||||
|
'src/Screens/MusicSelect/MusicSelect.cpp',
|
||||||
'src/Screens/MusicSelect/PanelLayout.hpp',
|
'src/Screens/MusicSelect/PanelLayout.hpp',
|
||||||
'src/Screens/MusicSelect/PanelLayout.cpp',
|
'src/Screens/MusicSelect/PanelLayout.cpp',
|
||||||
'src/Screens/MusicSelect/Ribbon.hpp',
|
'src/Screens/MusicSelect/Ribbon.hpp',
|
||||||
|
15
src/Main.cpp
15
src/Main.cpp
@ -17,8 +17,17 @@
|
|||||||
|
|
||||||
int main(int, char const **) {
|
int main(int, char const **) {
|
||||||
|
|
||||||
|
// Load prefs, music, markers
|
||||||
const std::string jujube_path = whereami::executable_dir();
|
const std::string jujube_path = whereami::executable_dir();
|
||||||
Data::Preferences preferences{jujube_path};
|
Data::Preferences preferences{jujube_path};
|
||||||
|
Data::SongList song_list{jujube_path};
|
||||||
|
MusicSelect::SharedResources music_select_resources{preferences};
|
||||||
|
if (music_select_resources.markers.find(preferences.options.marker) == music_select_resources.markers.end()) {
|
||||||
|
preferences.options.marker = music_select_resources.markers.begin()->first;
|
||||||
|
}
|
||||||
|
MusicSelect::Screen music_select{song_list, music_select_resources};
|
||||||
|
|
||||||
|
// Create the window
|
||||||
sf::ContextSettings settings;
|
sf::ContextSettings settings;
|
||||||
settings.antialiasingLevel = 8;
|
settings.antialiasingLevel = 8;
|
||||||
sf::RenderWindow window{
|
sf::RenderWindow window{
|
||||||
@ -30,12 +39,6 @@ int main(int, char const **) {
|
|||||||
preferences.screen.fullscreen ? sf::Style::Fullscreen : sf::Style::Default,
|
preferences.screen.fullscreen ? sf::Style::Fullscreen : sf::Style::Default,
|
||||||
settings
|
settings
|
||||||
};
|
};
|
||||||
Data::SongList song_list{jujube_path};
|
|
||||||
MusicSelect::SharedResources music_select_resources{preferences};
|
|
||||||
if (music_select_resources.markers.find(preferences.options.marker) == music_select_resources.markers.end()) {
|
|
||||||
preferences.options.marker = music_select_resources.markers.begin()->first;
|
|
||||||
}
|
|
||||||
MusicSelect::Screen music_select{song_list, music_select_resources};
|
|
||||||
music_select.select_chart(window);
|
music_select.select_chart(window);
|
||||||
/*
|
/*
|
||||||
while (true) {
|
while (true) {
|
||||||
|
111
src/Screens/MusicSelect/Drawables/ControlPanels.cpp
Normal file
111
src/Screens/MusicSelect/Drawables/ControlPanels.cpp
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#include "ControlPanels.hpp"
|
||||||
|
|
||||||
|
#include "../../../Toolkit/NormalizedOrigin.hpp"
|
||||||
|
|
||||||
|
namespace MusicSelect {
|
||||||
|
void LeftButton::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
|
states.transform *= getTransform();
|
||||||
|
sf::CircleShape circle{get_panel_size()*0.4f};
|
||||||
|
circle.setFillColor(sf::Color::Black);
|
||||||
|
circle.setOutlineThickness(0.02f*get_panel_size());
|
||||||
|
circle.setOutlineColor(sf::Color::White);
|
||||||
|
Toolkit::set_origin_normalized(circle, 0.5f, 0.5f);
|
||||||
|
circle.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(circle, states);
|
||||||
|
|
||||||
|
sf::RectangleShape arrow_part{sf::Vector2f{0.1f,0.4f}*get_panel_size()};
|
||||||
|
arrow_part.setFillColor(sf::Color::White);
|
||||||
|
Toolkit::set_origin_normalized(arrow_part, 2.f, 0.5f);
|
||||||
|
arrow_part.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
arrow_part.move(0.05f*get_panel_size(), 0.f);
|
||||||
|
arrow_part.rotate(45.f);
|
||||||
|
target.draw(arrow_part, states);
|
||||||
|
arrow_part.rotate(-90.f);
|
||||||
|
target.draw(arrow_part, states);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RightButton::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
|
states.transform *= getTransform();
|
||||||
|
sf::CircleShape circle{get_panel_size()*0.4f};
|
||||||
|
circle.setFillColor(sf::Color::Black);
|
||||||
|
circle.setOutlineThickness(0.02f*get_panel_size());
|
||||||
|
circle.setOutlineColor(sf::Color::White);
|
||||||
|
Toolkit::set_origin_normalized(circle, 0.5f, 0.5f);
|
||||||
|
circle.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(circle, states);
|
||||||
|
|
||||||
|
sf::RectangleShape arrow_part{sf::Vector2f{0.1f,0.4f}*get_panel_size()};
|
||||||
|
arrow_part.setFillColor(sf::Color::White);
|
||||||
|
Toolkit::set_origin_normalized(arrow_part, -1.f, 0.5f);
|
||||||
|
arrow_part.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
arrow_part.move(-0.05f*get_panel_size(), 0.f);
|
||||||
|
arrow_part.rotate(45.f);
|
||||||
|
target.draw(arrow_part, states);
|
||||||
|
arrow_part.rotate(-90.f);
|
||||||
|
target.draw(arrow_part, states);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsButton::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
|
states.transform *= getTransform();
|
||||||
|
sf::CircleShape circle{get_panel_size()*0.4f};
|
||||||
|
circle.setFillColor(sf::Color::Black);
|
||||||
|
circle.setOutlineThickness(0.02f*get_panel_size());
|
||||||
|
circle.setOutlineColor(sf::Color::White);
|
||||||
|
Toolkit::set_origin_normalized(circle, 0.5f, 0.5f);
|
||||||
|
circle.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(circle, states);
|
||||||
|
|
||||||
|
sf::Text label{
|
||||||
|
"OPTIONS",
|
||||||
|
resources.fallback_font.black,
|
||||||
|
static_cast<unsigned int>(0.2f*get_panel_size())
|
||||||
|
};
|
||||||
|
label.setFillColor(sf::Color::White);
|
||||||
|
Toolkit::set_local_origin_normalized(label, 0.5f, 0.5f);
|
||||||
|
label.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
label.setScale(0.8f, 1.0f);
|
||||||
|
target.draw(label, states);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartButton::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
|
states.transform *= getTransform();
|
||||||
|
sf::CircleShape circle{get_panel_size()*0.4f};
|
||||||
|
circle.setFillColor(sf::Color::Black);
|
||||||
|
circle.setOutlineThickness(0.02f*get_panel_size());
|
||||||
|
circle.setOutlineColor(resources.BSC_color);
|
||||||
|
Toolkit::set_origin_normalized(circle, 0.5f, 0.5f);
|
||||||
|
circle.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(circle, states);
|
||||||
|
|
||||||
|
sf::Text label{
|
||||||
|
"START",
|
||||||
|
resources.fallback_font.black,
|
||||||
|
static_cast<unsigned int>(0.2f*get_panel_size())
|
||||||
|
};
|
||||||
|
label.setFillColor(resources.BSC_color);
|
||||||
|
Toolkit::set_local_origin_normalized(label, 0.5f, 0.5f);
|
||||||
|
label.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(label, states);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BackButton::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
|
states.transform *= getTransform();
|
||||||
|
sf::CircleShape circle{get_panel_size()*0.4f};
|
||||||
|
circle.setFillColor(sf::Color::Black);
|
||||||
|
circle.setOutlineThickness(0.02f*get_panel_size());
|
||||||
|
circle.setOutlineColor(resources.EXT_color);
|
||||||
|
Toolkit::set_origin_normalized(circle, 0.5f, 0.5f);
|
||||||
|
circle.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(circle, states);
|
||||||
|
|
||||||
|
sf::Text label{
|
||||||
|
"BACK",
|
||||||
|
resources.fallback_font.black,
|
||||||
|
static_cast<unsigned int>(0.2f*get_panel_size())
|
||||||
|
};
|
||||||
|
label.setFillColor(resources.EXT_color);
|
||||||
|
Toolkit::set_local_origin_normalized(label, 0.5f, 0.5f);
|
||||||
|
label.setPosition(get_panel_size()*0.5f, get_panel_size()*0.5f);
|
||||||
|
target.draw(label, states);
|
||||||
|
}
|
||||||
|
}
|
42
src/Screens/MusicSelect/Drawables/ControlPanels.hpp
Normal file
42
src/Screens/MusicSelect/Drawables/ControlPanels.hpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <SFML/Graphics.hpp>
|
||||||
|
|
||||||
|
#include "../SharedResources.hpp"
|
||||||
|
|
||||||
|
namespace MusicSelect {
|
||||||
|
class LeftButton final : public sf::Drawable, public sf::Transformable, public HoldsSharedResources {
|
||||||
|
public:
|
||||||
|
using HoldsSharedResources::HoldsSharedResources;
|
||||||
|
private:
|
||||||
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class RightButton final : public sf::Drawable, public sf::Transformable, public HoldsSharedResources {
|
||||||
|
public:
|
||||||
|
using HoldsSharedResources::HoldsSharedResources;
|
||||||
|
private:
|
||||||
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class OptionsButton final : public sf::Drawable, public sf::Transformable, public HoldsSharedResources {
|
||||||
|
public:
|
||||||
|
using HoldsSharedResources::HoldsSharedResources;
|
||||||
|
private:
|
||||||
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class StartButton final : public sf::Drawable, public sf::Transformable, public HoldsSharedResources {
|
||||||
|
public:
|
||||||
|
using HoldsSharedResources::HoldsSharedResources;
|
||||||
|
private:
|
||||||
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class BackButton final : public sf::Drawable, public sf::Transformable, public HoldsSharedResources {
|
||||||
|
public:
|
||||||
|
using HoldsSharedResources::HoldsSharedResources;
|
||||||
|
private:
|
||||||
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
|
};
|
||||||
|
}
|
@ -19,9 +19,11 @@ MusicSelect::Screen::Screen(const Data::SongList& t_song_list, SharedResources&
|
|||||||
ribbon(PanelLayout::title_sort(t_song_list, t_resources), t_resources),
|
ribbon(PanelLayout::title_sort(t_song_list, t_resources), t_resources),
|
||||||
song_info(t_resources),
|
song_info(t_resources),
|
||||||
main_option_page(t_resources),
|
main_option_page(t_resources),
|
||||||
|
options_button(t_resources),
|
||||||
|
start_button(t_resources),
|
||||||
black_frame(t_resources.preferences)
|
black_frame(t_resources.preferences)
|
||||||
{
|
{
|
||||||
panel_filter.setFillColor(sf::Color(0,0,0,128));
|
panel_filter.setFillColor(sf::Color(0,0,0,200));
|
||||||
std::cout << "loaded MusicSelect::Screen" << std::endl;
|
std::cout << "loaded MusicSelect::Screen" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +35,8 @@ void MusicSelect::Screen::select_chart(sf::RenderWindow& window) {
|
|||||||
ribbon.setPosition(get_ribbon_x(), get_ribbon_y());
|
ribbon.setPosition(get_ribbon_x(), get_ribbon_y());
|
||||||
resources.button_highlight.setPosition(get_ribbon_x(), get_ribbon_y());
|
resources.button_highlight.setPosition(get_ribbon_x(), get_ribbon_y());
|
||||||
panel_filter.setSize(sf::Vector2f{window.getSize()});
|
panel_filter.setSize(sf::Vector2f{window.getSize()});
|
||||||
|
options_button.setPosition(get_ribbon_x()+2.f*get_panel_step(), get_ribbon_y()+3.f*get_panel_step());
|
||||||
|
start_button.setPosition(get_ribbon_x()+3.f*get_panel_step(), get_ribbon_y()+3.f*get_panel_step());
|
||||||
while ((not chart_selected) and window.isOpen()) {
|
while ((not chart_selected) and window.isOpen()) {
|
||||||
sf::Event event;
|
sf::Event event;
|
||||||
while (window.pollEvent(event)) {
|
while (window.pollEvent(event)) {
|
||||||
@ -58,6 +62,8 @@ void MusicSelect::Screen::select_chart(sf::RenderWindow& window) {
|
|||||||
if (not resources.options_state.empty()) {
|
if (not resources.options_state.empty()) {
|
||||||
resources.options_state.back().get().update();
|
resources.options_state.back().get().update();
|
||||||
}
|
}
|
||||||
|
options_button.setPosition(get_ribbon_x()+2.f*get_panel_step(), get_ribbon_y()+3.f*get_panel_step());
|
||||||
|
start_button.setPosition(get_ribbon_x()+3.f*get_panel_step(), get_ribbon_y()+3.f*get_panel_step());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -66,6 +72,8 @@ void MusicSelect::Screen::select_chart(sf::RenderWindow& window) {
|
|||||||
ImGui::SFML::Update(window, imguiClock.restart());
|
ImGui::SFML::Update(window, imguiClock.restart());
|
||||||
window.clear(sf::Color(7, 23, 53));
|
window.clear(sf::Color(7, 23, 53));
|
||||||
window.draw(ribbon);
|
window.draw(ribbon);
|
||||||
|
window.draw(options_button);
|
||||||
|
window.draw(start_button);
|
||||||
window.draw(song_info);
|
window.draw(song_info);
|
||||||
if (not resources.options_state.empty()) {
|
if (not resources.options_state.empty()) {
|
||||||
window.draw(panel_filter);
|
window.draw(panel_filter);
|
||||||
@ -193,16 +201,10 @@ void MusicSelect::Screen::handle_mouse_click(const sf::Event::MouseButtonEvent&
|
|||||||
void MusicSelect::Screen::press_button(const Data::Button& button) {
|
void MusicSelect::Screen::press_button(const Data::Button& button) {
|
||||||
resources.button_highlight.button_pressed(button);
|
resources.button_highlight.button_pressed(button);
|
||||||
auto button_index = Data::button_to_index(button);
|
auto button_index = Data::button_to_index(button);
|
||||||
if (button_index < 12) {
|
if (button_index < 14) {
|
||||||
ribbon.click_on(button);
|
ribbon.click_on(button);
|
||||||
} else {
|
} else {
|
||||||
switch (button) {
|
switch (button) {
|
||||||
case Data::Button::B13: // Left Arrow
|
|
||||||
ribbon.move_left();
|
|
||||||
break;
|
|
||||||
case Data::Button::B14: // Right Arrow
|
|
||||||
ribbon.move_right();
|
|
||||||
break;
|
|
||||||
case Data::Button::B15: // Options Menu
|
case Data::Button::B15: // Options Menu
|
||||||
if (resources.options_state.empty()) {
|
if (resources.options_state.empty()) {
|
||||||
resources.options_state.push_back(main_option_page);
|
resources.options_state.push_back(main_option_page);
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "SongInfo.hpp"
|
#include "SongInfo.hpp"
|
||||||
#include "SharedResources.hpp"
|
#include "SharedResources.hpp"
|
||||||
#include "Options/OptionPage.hpp"
|
#include "Options/OptionPage.hpp"
|
||||||
|
#include "Drawables/ControlPanels.hpp"
|
||||||
|
|
||||||
namespace MusicSelect {
|
namespace MusicSelect {
|
||||||
|
|
||||||
@ -32,13 +33,13 @@ namespace MusicSelect {
|
|||||||
void select_chart(sf::RenderWindow& window);
|
void select_chart(sf::RenderWindow& window);
|
||||||
void draw_debug() override;
|
void draw_debug() override;
|
||||||
private:
|
private:
|
||||||
// Data
|
|
||||||
const Data::SongList song_list;
|
const Data::SongList song_list;
|
||||||
|
|
||||||
// State
|
|
||||||
Ribbon ribbon;
|
Ribbon ribbon;
|
||||||
SongInfo song_info;
|
SongInfo song_info;
|
||||||
MainOptionPage main_option_page;
|
MainOptionPage main_option_page;
|
||||||
|
OptionsButton options_button;
|
||||||
|
StartButton start_button;
|
||||||
|
|
||||||
Drawables::BlackFrame black_frame;
|
Drawables::BlackFrame black_frame;
|
||||||
sf::RectangleShape panel_filter;
|
sf::RectangleShape panel_filter;
|
||||||
|
@ -178,15 +178,15 @@ namespace MusicSelect {
|
|||||||
mapping_preview.setPosition(get_big_cover_x(), get_big_cover_y());
|
mapping_preview.setPosition(get_big_cover_x(), get_big_cover_y());
|
||||||
target.draw(mapping_preview);
|
target.draw(mapping_preview);
|
||||||
if (confirm_clock) {
|
if (confirm_clock) {
|
||||||
if (confirm_clock->getElapsedTime() > sf::seconds(5)) {
|
auto countdown_time = confirm_clock->getElapsedTime();
|
||||||
preferences.key_mapping = Data::KeyMapping{m_key_to_button};
|
if (countdown_time < sf::seconds(5)) {
|
||||||
|
std::string seconds = std::to_string(5 - static_cast<int>(countdown_time.asSeconds()));
|
||||||
|
big_number.setString(seconds);
|
||||||
|
big_number.setCharacterSize(static_cast<unsigned int>(3*get_panel_step()));
|
||||||
|
Toolkit::set_local_origin_normalized(big_number, 0.5f, 0.5f);
|
||||||
|
big_number.setPosition(get_ribbon_size()*0.5f, get_ribbon_size()*0.5f);
|
||||||
|
target.draw(big_number, states);
|
||||||
}
|
}
|
||||||
std::string seconds = std::to_string(5 - static_cast<int>(confirm_clock->getElapsedTime().asSeconds()));
|
|
||||||
big_number.setString(seconds);
|
|
||||||
big_number.setCharacterSize(static_cast<unsigned int>(3*get_panel_step()));
|
|
||||||
Toolkit::set_local_origin_normalized(big_number, 0.5f, 0.5f);
|
|
||||||
big_number.setPosition(get_ribbon_size()*0.5f, get_ribbon_size()*0.5f);
|
|
||||||
target.draw(big_number, states);
|
|
||||||
auto text_size = 0.1f*grid_size;
|
auto text_size = 0.1f*grid_size;
|
||||||
confirm_text_top.setCharacterSize(static_cast<unsigned int>(text_size));
|
confirm_text_top.setCharacterSize(static_cast<unsigned int>(text_size));
|
||||||
confirm_text_bottom.setCharacterSize(static_cast<unsigned int>(text_size));
|
confirm_text_bottom.setCharacterSize(static_cast<unsigned int>(text_size));
|
||||||
|
@ -17,7 +17,8 @@ namespace MusicSelect {
|
|||||||
|
|
||||||
RibbonPage::RibbonPage(const PanelLayout& layout, SharedResources& t_resources) :
|
RibbonPage::RibbonPage(const PanelLayout& layout, SharedResources& t_resources) :
|
||||||
OptionPage(t_resources),
|
OptionPage(t_resources),
|
||||||
m_ribbon(layout, t_resources)
|
m_ribbon(layout, t_resources),
|
||||||
|
back_button(t_resources)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +57,8 @@ namespace MusicSelect {
|
|||||||
void RibbonPage::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
void RibbonPage::draw(sf::RenderTarget& target, sf::RenderStates states) const {
|
||||||
states.transform *= getTransform();
|
states.transform *= getTransform();
|
||||||
target.draw(m_ribbon, states);
|
target.draw(m_ribbon, states);
|
||||||
|
back_button.setPosition(2.f*get_panel_step(), 3.f*get_panel_step());
|
||||||
|
target.draw(back_button, states);
|
||||||
}
|
}
|
||||||
|
|
||||||
MainOptionPage::MainOptionPage(SharedResources& t_resources) :
|
MainOptionPage::MainOptionPage(SharedResources& t_resources) :
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <SFML/Window/Event.hpp>
|
#include <SFML/Window/Event.hpp>
|
||||||
|
|
||||||
#include "../../../Data/Buttons.hpp"
|
#include "../../../Data/Buttons.hpp"
|
||||||
|
#include "../Drawables/ControlPanels.hpp"
|
||||||
#include "../Ribbon.hpp"
|
#include "../Ribbon.hpp"
|
||||||
#include "../SharedResources.hpp"
|
#include "../SharedResources.hpp"
|
||||||
|
|
||||||
@ -25,9 +26,6 @@ namespace MusicSelect {
|
|||||||
const std::string name;
|
const std::string name;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ButtonRemapping : public OptionPage {
|
|
||||||
};
|
|
||||||
|
|
||||||
class RibbonPage : public OptionPage {
|
class RibbonPage : public OptionPage {
|
||||||
public:
|
public:
|
||||||
RibbonPage(const PanelLayout& layout, SharedResources& t_resources);
|
RibbonPage(const PanelLayout& layout, SharedResources& t_resources);
|
||||||
@ -36,6 +34,7 @@ namespace MusicSelect {
|
|||||||
private:
|
private:
|
||||||
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
|
||||||
Ribbon m_ribbon;
|
Ribbon m_ribbon;
|
||||||
|
mutable BackButton back_button;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MainOptionPage final : public RibbonPage {
|
class MainOptionPage final : public RibbonPage {
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#include "../../../Toolkit/HSL.hpp"
|
#include "../../../Toolkit/HSL.hpp"
|
||||||
#include "../../../Toolkit/NormalizedOrigin.hpp"
|
#include "../../../Toolkit/NormalizedOrigin.hpp"
|
||||||
|
|
||||||
#include "../Ribbon.hpp"
|
#include "../Ribbon.hpp"
|
||||||
#include "../SharedResources.hpp"
|
#include "../SharedResources.hpp"
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <SFML/Graphics.hpp>
|
#include <SFML/Graphics.hpp>
|
||||||
#include <SFML/Window.hpp>
|
#include <SFML/Window.hpp>
|
||||||
|
|
||||||
|
#include "../../../Data/Buttons.hpp"
|
||||||
#include "../../../Data/Song.hpp"
|
#include "../../../Data/Song.hpp"
|
||||||
#include "../../../Toolkit/AffineTransform.hpp"
|
#include "../../../Toolkit/AffineTransform.hpp"
|
||||||
#include "../DensityGraph.hpp"
|
#include "../DensityGraph.hpp"
|
||||||
|
@ -67,7 +67,9 @@ namespace MusicSelect {
|
|||||||
|
|
||||||
Ribbon::Ribbon(PanelLayout layout, SharedResources& t_resources) :
|
Ribbon::Ribbon(PanelLayout layout, SharedResources& t_resources) :
|
||||||
HoldsSharedResources(t_resources),
|
HoldsSharedResources(t_resources),
|
||||||
m_layout(layout)
|
m_layout(layout),
|
||||||
|
left_button(t_resources),
|
||||||
|
right_button(t_resources)
|
||||||
{
|
{
|
||||||
std::cout << "Loaded MusicSelect::Ribbon" << std::endl;
|
std::cout << "Loaded MusicSelect::Ribbon" << std::endl;
|
||||||
}
|
}
|
||||||
@ -87,7 +89,17 @@ namespace MusicSelect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Ribbon::click_on(const Data::Button& button) {
|
void Ribbon::click_on(const Data::Button& button) {
|
||||||
get_panel_under_button(button)->click(*this, button);
|
switch (button) {
|
||||||
|
case Data::Button::B13: // Left Arrow
|
||||||
|
move_left();
|
||||||
|
break;
|
||||||
|
case Data::Button::B14: // Right Arrow
|
||||||
|
move_right();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
get_panel_under_button(button)->click(*this, button);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ribbon::move_right() {
|
void Ribbon::move_right() {
|
||||||
@ -139,6 +151,12 @@ namespace MusicSelect {
|
|||||||
|
|
||||||
void Ribbon::draw(sf::RenderTarget &target, sf::RenderStates states) const {
|
void Ribbon::draw(sf::RenderTarget &target, sf::RenderStates states) const {
|
||||||
states.transform *= getTransform();
|
states.transform *= getTransform();
|
||||||
|
|
||||||
|
left_button.setPosition(0.f, 3.f*get_panel_step());
|
||||||
|
target.draw(left_button, states);
|
||||||
|
right_button.setPosition(get_panel_step(), 3.f*get_panel_step());
|
||||||
|
target.draw(right_button, states);
|
||||||
|
|
||||||
if (m_move_animation) {
|
if (m_move_animation) {
|
||||||
if (not m_move_animation->ended()) {
|
if (not m_move_animation->ended()) {
|
||||||
return draw_with_animation(target, states);
|
return draw_with_animation(target, states);
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "../../Toolkit/EasingFunctions.hpp"
|
#include "../../Toolkit/EasingFunctions.hpp"
|
||||||
#include "SharedResources.hpp"
|
#include "SharedResources.hpp"
|
||||||
#include "PanelLayout.hpp"
|
#include "PanelLayout.hpp"
|
||||||
|
#include "Drawables/ControlPanels.hpp"
|
||||||
|
|
||||||
namespace MusicSelect {
|
namespace MusicSelect {
|
||||||
|
|
||||||
@ -58,5 +59,7 @@ namespace MusicSelect {
|
|||||||
std::size_t m_position = 0;
|
std::size_t m_position = 0;
|
||||||
mutable std::optional<MoveAnimation> m_move_animation;
|
mutable std::optional<MoveAnimation> m_move_animation;
|
||||||
float m_time_factor = 1.f;
|
float m_time_factor = 1.f;
|
||||||
|
mutable LeftButton left_button;
|
||||||
|
mutable RightButton right_button;
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user