TilePattern lisible

dézo antoine mais tes 7 niveaux d'identation + tes if else partout c'est interdit par la convention de geneve
This commit is contained in:
Crizomb 2025-06-15 00:53:36 +02:00
parent 40d3358c9d
commit 1a8e68e0b6

View file

@ -2,61 +2,36 @@
#include "AudioEmitter.hpp" #include "AudioEmitter.hpp"
#include "NoteSprite.hpp" #include "NoteSprite.hpp"
#include "NoteTile.hpp" #include "NoteTile.hpp"
#include <cstdio>
#include <utility> #include <utility>
#include <vector> #include <vector>
NotePlaceEnum getNotePlacement(int index, int notePitch, int prevPitch,
NotePlaceEnum prevPlacement) {
if (index == 0)
return Middle;
int diff_pitch = notePitch - prevPitch;
int sign_with_zero = (diff_pitch > 0) - (diff_pitch < 0);
int prevPlacementInt = prevPlacement;
int newPlacementInt = std::clamp(prevPlacementInt + sign_with_zero, 0, 2);
return static_cast<NotePlaceEnum>(newPlacementInt);
}
void generateTilePattern(std::vector<std::pair<float, int>> new_notes, void generateTilePattern(std::vector<std::pair<float, int>> new_notes,
const AudioEmitter &audio_emitter) { const AudioEmitter &audio_emitter) {
int i = -1; int i = -1;
float beatDuration = 60.f / audio_emitter.tempo; float beatDuration = 60.f / audio_emitter.tempo;
int previous_note_pitch = 0; int previous_note_pitch = 0;
NotePlaceEnum previous_note_placement = static_cast<NotePlaceEnum>(0); NotePlaceEnum previous_note_placement = static_cast<NotePlaceEnum>(1);
for (auto note : new_notes) { for (auto note : new_notes) {
i++;
float start_time = note.first; NotePlaceEnum notePlace = getNotePlacement(
NotePlaceEnum notePlace = static_cast<NotePlaceEnum>(i % 3); i, note.second, previous_note_pitch, previous_note_placement);
if (i == 0) {
notePlace = static_cast<NotePlaceEnum>(rand()%3);
}
else {
if (note.second == previous_note_pitch) {
notePlace = previous_note_placement;
}
else if (note.second < previous_note_pitch) {
if (previous_note_placement == Left) {
notePlace = Left;
}
else if (previous_note_placement == Middle) {
notePlace = Left;
}
else {
if (rand() % 2 == 0) {
notePlace = Left;
}
else {
notePlace = Middle;
}
}
}
else {
if (previous_note_placement == Right) {
notePlace = Right;
}
else if (previous_note_placement == Middle) {
notePlace = Right;
}
else {
if (rand() % 2 == 0) {
notePlace = Right;
}
else {
notePlace = Middle;
}
}
}
}
previous_note_pitch = note.second;
previous_note_placement = notePlace; previous_note_placement = notePlace;
NoteTile::create(start_time, beatDuration, notePlace, audio_emitter.getTime()); previous_note_pitch = note.second;
NoteTile::create(note.first, beatDuration, notePlace,
audio_emitter.getTime());
} }
} }