moved floors audio logic from audio class

This commit is contained in:
Sandro Sobczyński
2020-11-04 22:33:16 +01:00
parent efe34c677d
commit 1757ef67dc
7 changed files with 35 additions and 15 deletions
+23 -5
View File
@@ -17,7 +17,10 @@
const u8 FLOORS_COUNT = 64; // Temp change it also in floor_manager.hpp
Floors::Floors(Engine *t_engine)
: engine(t_engine), floorManager(FLOORS_COUNT), camera(&t_engine->screen) {}
: engine(t_engine), floorManager(FLOORS_COUNT), camera(&t_engine->screen)
{
audioTicks = 0;
}
Floors::~Floors() {}
@@ -28,11 +31,10 @@ Floors::~Floors() {}
void Floors::onInit()
{
engine->renderer->setCameraDefinitions(&camera.worldView, &camera.unitCirclePosition, camera.planes);
engine->audio.init(2);
engine->audio.addListener(&floorManager);
engine->audio.addListener(&lightManager);
engine->audio.init(1);
engine->audio.addListener(this);
engine->audio.loadSong("NF-CHILL.WAV");
engine->audio.setVolume(1);
engine->audio.setVolume(100);
engine->audio.play();
texRepo = engine->renderer->getTextureRepository();
texRepo->addByMesh("warrior/", player.mesh);
@@ -54,3 +56,19 @@ void Floors::onUpdate()
for (u8 i = 0; i < FLOORS_COUNT; i++)
engine->renderer->drawByPath3(floorManager.floors[i].mesh, lightManager.bulbs, lightManager.bulbsCount);
}
void Floors::onAudioTick()
{
if ((++audioTicks + 20) % 41 == 0)
{
floorManager.onAudioTick();
lightManager.onAudioTick();
}
if (audioTicks > 10000)
audioTicks = 0;
}
void Floors::onAudioFinish()
{
audioTicks = 0;
}
+4 -1
View File
@@ -20,7 +20,7 @@
#include "objects/player.hpp"
#include "./camera.hpp"
class Floors : public Game
class Floors : public Game, AudioListener
{
public:
@@ -29,10 +29,13 @@ public:
void onInit();
void onUpdate();
void onAudioTick();
void onAudioFinish();
Engine *engine;
private:
u32 audioTicks;
TextureRepository *texRepo;
LightManager lightManager;
FloorManager floorManager;
@@ -20,7 +20,7 @@ class Player; // Forward definition
#include "../objects/floor.hpp"
/** Class which is maintaining floors objects */
class FloorManager : public AudioListener
class FloorManager
{
public:
@@ -15,7 +15,7 @@
#include <models/audio_listener.hpp>
/** Class which is maintaining floors objects */
class LightManager : public AudioListener
class LightManager
{
public: