libBeatsaber/include/beatsaber/beatlevel.h

42 lines
970 B
C++

#pragma once
#include <string>
#include <memory>
#include <vector>
#include "beatnote.h"
#include "difficulties.h"
namespace Beatsaber {
//fwd
class BeatSet;
class BeatMap;
class BeatLevelRenderHelper;
class BeatLevel {
public:
virtual ~BeatLevel() {}
virtual Difficulty::Difficulty getDifficulty() const = 0;
virtual int32_t getDifficultyRank() const = 0;
virtual std::string getFilename() const = 0;
virtual double getNoteJumpSpeed() const = 0; // in m/s
virtual double getNoteStartOffset() const = 0;
virtual std::string getCustomData() const = 0;
//TODO: get level content
virtual const std::vector<Note>& getNotes() const = 0;
virtual const std::vector<Wall>& getWalls() const = 0;
virtual void printDebug() const = 0;
virtual std::shared_ptr<BeatSet> getBeatSet() const = 0; // parent
virtual std::shared_ptr<BeatMap> getBeatMap() const = 0; // grandparent
virtual std::shared_ptr<BeatLevelRenderHelper> getRenderHelper() const = 0;
};
}