Visuel notes
This commit is contained in:
parent
e2fb0d911a
commit
05f8b11dec
14 changed files with 137 additions and 50 deletions
|
@ -1,4 +1,9 @@
|
|||
#include "Game.hpp"
|
||||
#include "AudioEmitter.hpp"
|
||||
#include "NoteSprite.hpp"
|
||||
#include "NoteTile.hpp"
|
||||
#include "TilePattern.hpp"
|
||||
#include <SFML/Graphics/Color.hpp>
|
||||
#include <iostream>
|
||||
#include <math.h>
|
||||
#include <string>
|
||||
|
@ -7,41 +12,41 @@ const sf::Time Game::TimePerFrame = sf::seconds(1.f / 60.f);
|
|||
|
||||
Game::Game() {
|
||||
assert(mFont.openFromFile("media/Sansation.ttf"));
|
||||
// We do not need to do mStatisticsText.setFont(mFont); as mStatisticsText is
|
||||
// initialized with a reference to mFont
|
||||
mStatisticsText.setPosition({5.f, 5.f});
|
||||
mStatisticsText.setCharacterSize(10);
|
||||
}
|
||||
|
||||
void Game::run() {
|
||||
sf::Clock clock;
|
||||
sf::Time timeSinceLastUpdate = sf::Time::Zero;
|
||||
AudioEmitter audioEmitter = AudioEmitter();
|
||||
audioEmitter.generateMusic();
|
||||
bool generated = false;
|
||||
mWindow.setVerticalSyncEnabled(true);
|
||||
while (mWindow.isOpen()) {
|
||||
sf::Time elapsedTime = clock.restart();
|
||||
timeSinceLastUpdate += elapsedTime;
|
||||
while (timeSinceLastUpdate > TimePerFrame) {
|
||||
if (32.f - fmod(audioEmitter.getTime(), 32.f) <
|
||||
audioEmitter.timeBeforeNewGeneration) {
|
||||
if (!generated) {
|
||||
audioEmitter.generateMusic();
|
||||
generated = true;
|
||||
}
|
||||
} else {
|
||||
generated = false;
|
||||
}
|
||||
timeSinceLastUpdate -= TimePerFrame;
|
||||
void generateTilePatternAndMusic(AudioEmitter &audio_emitter) {
|
||||
generateTilePattern(audio_emitter.generateMusic(), audio_emitter);
|
||||
}
|
||||
|
||||
processEvents(audioEmitter);
|
||||
audioEmitter.audioUpdate();
|
||||
update(TimePerFrame);
|
||||
bool updateAudio(AudioEmitter &audioEmitter, bool generated) {
|
||||
if (32.f - fmod(audioEmitter.getTimeTempo(), 32.f) <
|
||||
audioEmitter.timeBeforeNewGeneration) {
|
||||
if (!generated) {
|
||||
generateTilePatternAndMusic(audioEmitter);
|
||||
generated = true;
|
||||
}
|
||||
} else {
|
||||
generated = false;
|
||||
}
|
||||
|
||||
return generated;
|
||||
}
|
||||
|
||||
void Game::run() {
|
||||
AudioEmitter audioEmitter = AudioEmitter();
|
||||
generateTilePatternAndMusic(audioEmitter);
|
||||
bool generated = false;
|
||||
mWindow.setFramerateLimit(60);
|
||||
while (mWindow.isOpen()) {
|
||||
|
||||
updateStatistics(audioEmitter);
|
||||
render();
|
||||
generated = updateAudio(audioEmitter, generated);
|
||||
processEvents(audioEmitter);
|
||||
audioEmitter.audioUpdate();
|
||||
update(TimePerFrame);
|
||||
updateStatistics(audioEmitter);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,7 +67,8 @@ void Game::processEvents(AudioEmitter &audioEmitter) {
|
|||
void Game::update(const sf::Time elapsedTime) { mTarget.update(elapsedTime); }
|
||||
|
||||
void Game::render() {
|
||||
mWindow.clear();
|
||||
mWindow.clear(sf::Color::Yellow);
|
||||
NoteTile::update(1.0 / 60, mWindow);
|
||||
mTarget.drawCurrent(mWindow);
|
||||
mWindow.draw(mStatisticsText);
|
||||
mWindow.display();
|
||||
|
@ -70,8 +76,8 @@ void Game::render() {
|
|||
|
||||
void Game::updateStatistics(AudioEmitter &audioEmitter) {
|
||||
mStatisticsText.setString(std::format(
|
||||
"Mesure = {}\nBeat = {} us", ceil(audioEmitter.getTime() / 8.f),
|
||||
ceil(fmod(audioEmitter.getTime(), 8.f))));
|
||||
"Mesure = {}\nBeat = {} us", ceil(audioEmitter.getTimeTempo() / 8.f),
|
||||
ceil(fmod(audioEmitter.getTimeTempo(), 8.f))));
|
||||
|
||||
mStatisticsUpdateTime -= sf::seconds(1.0f);
|
||||
mStatisticsNumFrames = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue