#pragma once #include "beatlevel.h" #include using json = nlohmann::json; namespace Beatsaber { class BeatLevelImpl : public BeatLevel, protected std::enable_shared_from_this { protected: std::weak_ptr parent; Difficulty::Difficulty dif; int32_t diffRank; std::string filename; double njs; double nso; const json& base; public: BeatLevelImpl(std::weak_ptr p, const json& j); virtual ~BeatLevelImpl(); virtual Difficulty::Difficulty getDifficulty() const override; virtual int32_t getDifficultyRank() const override; virtual std::string getFilename() const override; virtual double getNoteJumpSpeed() const override; // in m virtual double getNoteStartOffset() const override; virtual std::string getCustomData() const override; //TODO: get level content virtual std::shared_ptr getBeatSet() const override; virtual std::shared_ptr getBeatMap() const override; }; }