mirror of
https://gitlab.com/square-game-liberation-front/F.E.I.S.git
synced 2025-03-01 07:50:25 +01:00
58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <variant>
|
|
#include <utility>
|
|
|
|
#include "better_note.hpp"
|
|
#include "better_notes.hpp"
|
|
#include "better_song.hpp"
|
|
#include "generic_interval.hpp"
|
|
#include "history.hpp"
|
|
#include "long_note_dummy.hpp"
|
|
#include "notes_clipboard.hpp"
|
|
#include "notifications_queue.hpp"
|
|
#include "widgets/density_graph.hpp"
|
|
|
|
struct ChartState {
|
|
ChartState(better::Chart& c, const std::string& name, std::filesystem::path assets);
|
|
better::Chart& chart;
|
|
const std::string& difficulty_name;
|
|
|
|
void cut(NotificationsQueue& nq);
|
|
void copy(NotificationsQueue& nq);
|
|
void paste(Fraction at_beat, NotificationsQueue& nq);
|
|
void delete_(NotificationsQueue& nq);
|
|
|
|
Interval<Fraction> visible_beats(const sf::Time& playback_position, const better::Timing& timing);
|
|
void update_visible_notes(const sf::Time& playback_position, const better::Timing& timing);
|
|
std::vector<better::Note> visible_notes;
|
|
|
|
void toggle_note(
|
|
const sf::Time& playback_position,
|
|
std::uint64_t snap,
|
|
const better::Position& button,
|
|
const better::Timing& timing
|
|
);
|
|
|
|
better::Notes selected_notes;
|
|
NotesClipboard notes_clipboard;
|
|
|
|
void handle_time_selection_tab(Fraction beats);
|
|
std::optional<Interval<Fraction>> time_selection;
|
|
|
|
/*
|
|
The long note currently being created, represented as a pair of tap notes.
|
|
Time span of the represented long note is the span between both taps
|
|
1st note's position defines the long note's position
|
|
2nd note's position suggests where the tail should start
|
|
*/
|
|
std::optional<TapNotePair> long_note_being_created;
|
|
|
|
// Is the user currently holding right click ? (over the playfield or not)
|
|
bool creating_long_note;
|
|
History history;
|
|
DensityGraph density_graph;
|
|
};
|