F.E.I.S/Marker.h
Stepland 8d44098063 - Tab selection in linear view
- Cut/Copy/Paste selected notes
- LN displayed correctly in the Linear View
- bunch of other small stuff
2019-03-27 20:37:30 +01:00

66 lines
1.5 KiB
C++

//
// Created by Syméon on 17/08/2017.
//
//
// Un objet marker contient les différentes textures d'un marker choisi
//
#ifndef FEIS_MARKER_H
#define FEIS_MARKER_H
#include <iostream>
#include <SFML/Graphics.hpp>
#include <map>
#include <cmath>
#include <sstream>
#include <iomanip>
#include <filesystem>
#include <functional>
enum MarkerEndingState {
MarkerEndingState_MISS,
MarkerEndingState_EARLY,
MarkerEndingState_GOOD,
MarkerEndingState_GREAT,
MarkerEndingState_PERFECT
};
struct MarkerStatePreview {
MarkerEndingState state;
std::string textureName;
std::string printName;
};
namespace Markers {
static std::vector<MarkerStatePreview> markerStatePreviews{
{MarkerEndingState_PERFECT,"h402","PERFECT"},
{MarkerEndingState_GREAT,"h302","GREAT"},
{MarkerEndingState_GOOD,"h202","GOOD"},
{MarkerEndingState_EARLY,"h102","EARLY / LATE"},
{MarkerEndingState_MISS,"ma17","MISS"}
};
}
/*
* Holds the textures associated with a given marker folder from the assets folder
*/
class Marker {
public:
Marker();
explicit Marker(std::filesystem::path folder);
std::optional<std::reference_wrapper<sf::Texture>> getSprite(MarkerEndingState state, float seconds);
const std::map<std::string, sf::Texture> &getTextures() const;
private:
std::map<std::string,sf::Texture> textures;
std::filesystem::path path;
bool validMarkerFolder(std::filesystem::path folder);
void initFromFolder(std::filesystem::path folder);
};
#endif //FEIS_MARKER_H