#pragma once #include "beatlevel.h" #include using json = nlohmann::json; #include "filereader.h" namespace Beatsaber { class BeatLevelImpl : public BeatLevel, public 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; std::vector notes; public: BeatLevelImpl(std::weak_ptr p, std::shared_ptr r, 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 const std::vector& getNotes() const override; virtual void printDebug() const override; virtual std::shared_ptr getBeatSet() const override; virtual std::shared_ptr getBeatMap() const override; }; }