2021-10-05 20:48:28 +02:00
|
|
|
#pragma once
|
|
|
|
|
2021-12-29 15:59:18 +01:00
|
|
|
#include "core/time.h"
|
|
|
|
|
|
|
|
namespace kku
|
|
|
|
{
|
2021-10-05 20:48:28 +02:00
|
|
|
|
2022-05-08 05:43:12 +02:00
|
|
|
/// BPMSection
|
|
|
|
///
|
|
|
|
/// Data to setup and distinguish
|
|
|
|
/// a section on beatmap timeline
|
2021-10-05 20:48:28 +02:00
|
|
|
struct BPMSection
|
|
|
|
{
|
2022-05-08 05:43:12 +02:00
|
|
|
/// Amount of beats
|
|
|
|
/// per minute in the section
|
2021-12-29 15:59:18 +01:00
|
|
|
unsigned int bpm = 120; // Hi, osu
|
2022-05-08 05:43:12 +02:00
|
|
|
|
|
|
|
/// Denominator in fraction of major
|
|
|
|
/// beats. Like, 1/2, 1/3. etc...
|
2021-12-29 15:59:18 +01:00
|
|
|
unsigned int fraction = 2;
|
2022-05-08 05:43:12 +02:00
|
|
|
|
|
|
|
/// Timestamp respresenting when
|
|
|
|
/// the section becomes active
|
2021-10-05 20:48:28 +02:00
|
|
|
microsec offset_start = 0;
|
2022-05-08 05:43:12 +02:00
|
|
|
|
|
|
|
/// Interval between beats
|
2021-12-09 08:55:53 +01:00
|
|
|
microsec interval = 0;
|
2021-11-02 18:03:27 +01:00
|
|
|
};
|
2021-10-05 20:48:28 +02:00
|
|
|
|
2022-05-08 05:43:12 +02:00
|
|
|
/// BPMSectionComparator
|
|
|
|
///
|
|
|
|
/// Predicate to define
|
|
|
|
/// BPMSection sorting rule:
|
|
|
|
/// by timestamp of start
|
2021-12-29 15:59:18 +01:00
|
|
|
struct BPMSectionComparator
|
2021-11-02 18:03:27 +01:00
|
|
|
{
|
2022-10-18 04:59:51 +02:00
|
|
|
bool operator()(const BPMSection &lhs, const BPMSection &rhs) const noexcept
|
2021-10-05 20:48:28 +02:00
|
|
|
{
|
2021-11-02 18:03:27 +01:00
|
|
|
return lhs.offset_start < rhs.offset_start;
|
2021-10-05 20:48:28 +02:00
|
|
|
}
|
|
|
|
};
|
2021-12-29 15:59:18 +01:00
|
|
|
|
2022-10-18 04:59:51 +02:00
|
|
|
} // namespace kku
|