1
0
mirror of synced 2025-02-08 22:59:41 +01:00

Fix indentation

This commit is contained in:
Stepland 2020-02-04 21:56:04 +01:00
parent 26edf04120
commit 368551bdaf

View File

@ -21,162 +21,140 @@ MusicSelect::MoveAnimation::MoveAnimation(int previous_pos, int next_pos, size_t
{ {
} }
Toolkit::AffineTransform<float> MusicSelect::MoveAnimation::create_transform(int previous_pos, int next_pos, size_t ribbon_size, Direction direction) Toolkit::AffineTransform<float> MusicSelect::MoveAnimation::create_transform(int previous_pos, int next_pos, size_t ribbon_size, Direction direction) {
{
// We first deal with cases were we cross the end of the ribbon // We first deal with cases were we cross the end of the ribbon
if (direction == Direction::Left and next_pos > previous_pos) if (direction == Direction::Left and next_pos > previous_pos) {
{
return Toolkit::AffineTransform<float>( return Toolkit::AffineTransform<float>(
0.f, 0.f,
1.f, 1.f,
static_cast<float>(previous_pos), static_cast<float>(previous_pos),
static_cast<float>(next_pos) - ribbon_size); static_cast<float>(next_pos) - ribbon_size);
} }
else if (direction == Direction::Right and next_pos < previous_pos) else if (direction == Direction::Right and next_pos < previous_pos) {
{
return Toolkit::AffineTransform<float>( return Toolkit::AffineTransform<float>(
0.f, 0.f,
1.f, 1.f,
static_cast<float>(previous_pos), static_cast<float>(previous_pos),
static_cast<float>(next_pos) + ribbon_size); static_cast<float>(next_pos) + ribbon_size
} );
else } else {
{
return Toolkit::AffineTransform<float>( return Toolkit::AffineTransform<float>(
0.f, 0.f,
1.f, 1.f,
static_cast<float>(previous_pos), static_cast<float>(previous_pos),
static_cast<float>(next_pos)); static_cast<float>(next_pos)
);
} }
} }
float MusicSelect::MoveAnimation::get_position() float MusicSelect::MoveAnimation::get_position() {
{
return normalized_to_pos.transform( return normalized_to_pos.transform(
ease_expo.transform( ease_expo.transform(
seconds_to_normalized.clampedTransform( seconds_to_normalized.clampedTransform(
clock.getElapsedTime().asSeconds() / time_factor))); clock.getElapsedTime().asSeconds() / time_factor
)
)
);
} }
bool MusicSelect::MoveAnimation::ended() bool MusicSelect::MoveAnimation::ended() {
{
return clock.getElapsedTime() / time_factor > sf::milliseconds(300); return clock.getElapsedTime() / time_factor > sf::milliseconds(300);
} }
void MusicSelect::Ribbon::title_sort(const Data::SongList &song_list) void MusicSelect::Ribbon::title_sort(const Data::SongList &song_list) {
{
std::vector<std::reference_wrapper<const Data::Song>> songs; std::vector<std::reference_wrapper<const Data::Song>> songs;
for (auto &&song : song_list.songs) for (auto &&song : song_list.songs) {
{
songs.push_back(std::cref(song)); songs.push_back(std::cref(song));
} }
(song_list.songs.begin(), song_list.songs.end());
std::sort(songs.begin(), songs.end(), Data::Song::sort_by_title); std::sort(songs.begin(), songs.end(), Data::Song::sort_by_title);
std::map<std::string, std::vector<std::shared_ptr<Panel>>> categories; std::map<std::string, std::vector<std::shared_ptr<Panel>>> categories;
for (const auto &song : songs) for (const auto &song : songs) {
{ if (song.get().title.size() > 0) {
if (song.get().title.size() > 0)
{
char letter = song.get().title[0]; char letter = song.get().title[0];
if ('A' <= letter and letter <= 'Z') if ('A' <= letter and letter <= 'Z') {
{
categories categories
[std::string(1, letter)] [std::string(1, letter)]
.push_back( .push_back(
std::make_shared<SongPanel>(song)); std::make_shared<SongPanel>(song)
} );
else if ('a' <= letter and letter <= 'z') } else if ('a' <= letter and letter <= 'z') {
{
categories categories
[std::string(1, 'A' + (letter - 'a'))] [std::string(1, 'A' + (letter - 'a'))]
.push_back( .push_back(
std::make_shared<SongPanel>(song)); std::make_shared<SongPanel>(song)
} );
else } else {
{
categories["?"].push_back(std::make_shared<SongPanel>(song)); categories["?"].push_back(std::make_shared<SongPanel>(song));
} }
} } else {
else
{
categories["?"].push_back(std::make_shared<SongPanel>(song)); categories["?"].push_back(std::make_shared<SongPanel>(song));
} }
} }
layout_from_category_map(categories); layout_from_category_map(categories);
} }
void MusicSelect::Ribbon::test_sort() void MusicSelect::Ribbon::test_sort() {
{
layout.clear(); layout.clear();
layout.push_back( layout.push_back({
{std::make_shared<EmptyPanel>(), std::make_shared<EmptyPanel>(),
std::make_shared<CategoryPanel>("A"), std::make_shared<CategoryPanel>("A"),
std::make_shared<CategoryPanel>("truc")}); std::make_shared<CategoryPanel>("truc")
for (size_t i = 0; i < 3; i++) });
{ for (size_t i = 0; i < 3; i++) {
layout.push_back( layout.push_back({
{std::make_shared<EmptyPanel>(), std::make_shared<EmptyPanel>(),
std::make_shared<EmptyPanel>(), std::make_shared<EmptyPanel>(),
std::make_shared<EmptyPanel>()}); std::make_shared<EmptyPanel>()
});
} }
} }
void MusicSelect::Ribbon::test2_sort() void MusicSelect::Ribbon::test2_sort() {
{
std::string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
std::map<std::string, std::vector<std::shared_ptr<Panel>>> categories; std::map<std::string, std::vector<std::shared_ptr<Panel>>> categories;
Toolkit::UniformIntRNG category_size_generator{1, 10}; Toolkit::UniformIntRNG category_size_generator{1, 10};
Toolkit::UniformIntRNG panel_hue_generator{0, 255}; Toolkit::UniformIntRNG panel_hue_generator{0, 255};
for (auto &&letter : alphabet) for (auto &&letter : alphabet) {
{
auto category_size = category_size_generator.generate(); auto category_size = category_size_generator.generate();
for (int i = 0; i < category_size; i++) for (int i = 0; i < category_size; i++) {
{
categories[std::string(1, letter)].push_back( categories[std::string(1, letter)].push_back(
std::make_shared<MusicSelect::ColorPanel>( std::make_shared<MusicSelect::ColorPanel>(
sf::Color( sf::Color(
panel_hue_generator.generate(), panel_hue_generator.generate(),
panel_hue_generator.generate(), panel_hue_generator.generate(),
panel_hue_generator.generate()))); panel_hue_generator.generate()
)
)
);
} }
} }
layout_from_category_map(categories); layout_from_category_map(categories);
} }
const std::shared_ptr<MusicSelect::Panel> &MusicSelect::Ribbon::at(std::size_t button_index) const const std::shared_ptr<MusicSelect::Panel> &MusicSelect::Ribbon::at(std::size_t button_index) const {
{
return ( return (
layout layout
.at((position + (button_index % 4)) % layout.size()) .at((position + (button_index % 4)) % layout.size())
.at(button_index / 4)); .at(button_index / 4)
);
} }
void MusicSelect::Ribbon::layout_from_category_map(const std::map<std::string, std::vector<std::shared_ptr<MusicSelect::Panel>>> &categories) void MusicSelect::Ribbon::layout_from_category_map(const std::map<std::string, std::vector<std::shared_ptr<MusicSelect::Panel>>> &categories) {
{
layout.clear(); layout.clear();
for (auto &&[category, panels] : categories) for (auto &&[category, panels] : categories) {
{ if (not panels.empty()) {
if (not panels.empty())
{
std::vector<std::shared_ptr<Panel>> current_column; std::vector<std::shared_ptr<Panel>> current_column;
current_column.push_back(std::make_shared<CategoryPanel>(category)); current_column.push_back(std::make_shared<CategoryPanel>(category));
for (auto &&panel : panels) for (auto &&panel : panels) {
{ if (current_column.size() == 3) {
if (current_column.size() == 3)
{
layout.push_back({current_column[0], current_column[1], current_column[2]}); layout.push_back({current_column[0], current_column[1], current_column[2]});
current_column.clear(); current_column.clear();
} } else {
else
{
current_column.push_back(std::move(panel)); current_column.push_back(std::move(panel));
} }
} }
if (not current_column.empty()) if (not current_column.empty()) {
{ while (current_column.size() < 3) {
while (current_column.size() < 3)
{
current_column.push_back(std::make_shared<EmptyPanel>()); current_column.push_back(std::make_shared<EmptyPanel>());
} }
layout.push_back({current_column[0], current_column[1], current_column[2]}); layout.push_back({current_column[0], current_column[1], current_column[2]});
@ -185,45 +163,38 @@ void MusicSelect::Ribbon::layout_from_category_map(const std::map<std::string, s
} }
} }
void MusicSelect::Ribbon::move_right() void MusicSelect::Ribbon::move_right() {
{
std::size_t old_position = position; std::size_t old_position = position;
position = (position + 1) % layout.size(); position = (position + 1) % layout.size();
move_animation.emplace(old_position, position, layout.size(), Direction::Right, time_factor); move_animation.emplace(old_position, position, layout.size(), Direction::Right, time_factor);
} }
void MusicSelect::Ribbon::move_left() void MusicSelect::Ribbon::move_left() {
{
std::size_t old_position = position; std::size_t old_position = position;
if (position == 0) if (position == 0) {
{
position = layout.size() - 1; position = layout.size() - 1;
} } else {
else
{
position--; position--;
} }
move_animation.emplace(old_position, position, layout.size(), Direction::Left, time_factor); move_animation.emplace(old_position, position, layout.size(), Direction::Left, time_factor);
} }
void MusicSelect::Ribbon::draw(sf::RenderTarget &target, sf::RenderStates states) const void MusicSelect::Ribbon::move_to_next_category() {
{
if (move_animation) }
{
if (not move_animation->ended()) void MusicSelect::Ribbon::draw(sf::RenderTarget &target, sf::RenderStates states) const {
{ if (move_animation) {
if (not move_animation->ended()) {
return draw_with_animation(target, states); return draw_with_animation(target, states);
} } else {
else
{
move_animation.reset(); move_animation.reset();
} }
} }
draw_without_animation(target, states); draw_without_animation(target, states);
} }
void MusicSelect::Ribbon::draw_with_animation(sf::RenderTarget &target, sf::RenderStates states) const void MusicSelect::Ribbon::draw_with_animation(sf::RenderTarget &target, sf::RenderStates states) const {
{
auto float_position = move_animation->get_position(); auto float_position = move_animation->get_position();
int relative_column_zero = static_cast<int>(std::floor(float_position)); int relative_column_zero = static_cast<int>(std::floor(float_position));
std::size_t column_zero = (relative_column_zero + layout.size()) % layout.size(); std::size_t column_zero = (relative_column_zero + layout.size()) % layout.size();
@ -236,11 +207,9 @@ void MusicSelect::Ribbon::draw_with_animation(sf::RenderTarget &target, sf::Rend
ImGui::End(); ImGui::End();
} }
for (int column_offset = -1; column_offset <= 4; column_offset++) for (int column_offset = -1; column_offset <= 4; column_offset++) {
{
std::size_t actual_column = (column_zero + column_offset + layout.size()) % layout.size(); std::size_t actual_column = (column_zero + column_offset + layout.size()) % layout.size();
for (int row = 0; row < 3; row++) for (int row = 0; row < 3; row++) {
{
layout layout
.at(actual_column) .at(actual_column)
.at(row) .at(row)
@ -258,13 +227,10 @@ void MusicSelect::Ribbon::draw_with_animation(sf::RenderTarget &target, sf::Rend
} }
} }
void MusicSelect::Ribbon::draw_without_animation(sf::RenderTarget &target, sf::RenderStates states) const void MusicSelect::Ribbon::draw_without_animation(sf::RenderTarget &target, sf::RenderStates states) const {
{ for (int column = -1; column <= 4; column++) {
for (int column = -1; column <= 4; column++)
{
int actual_column_index = (column + position + layout.size()) % layout.size(); int actual_column_index = (column + position + layout.size()) % layout.size();
for (int row = 0; row < 3; row++) for (int row = 0; row < 3; row++) {
{
layout layout
.at(actual_column_index) .at(actual_column_index)
.at(row) .at(row)
@ -282,11 +248,9 @@ void MusicSelect::Ribbon::draw_without_animation(sf::RenderTarget &target, sf::R
} }
} }
void MusicSelect::Ribbon::draw_debug() void MusicSelect::Ribbon::draw_debug() {
{
if (debug) { if (debug) {
ImGui::Begin("Ribbon Debug"); ImGui::Begin("Ribbon Debug"); {
{
ImGui::SliderFloat("Time Slowdown Factor", &time_factor, 1.f, 10.f); ImGui::SliderFloat("Time Slowdown Factor", &time_factor, 1.f, 10.f);
} }
ImGui::End(); ImGui::End();