moved floors audio logic from audio class
This commit is contained in:
@@ -17,6 +17,7 @@ class AudioListener
|
||||
public:
|
||||
virtual ~AudioListener(){};
|
||||
virtual void onAudioTick() = 0;
|
||||
virtual void onAudioFinish() = 0;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
@@ -56,7 +56,7 @@ private:
|
||||
void loadModules();
|
||||
void initAUDSRV();
|
||||
|
||||
int ret, played;
|
||||
int ret;
|
||||
char chunk[2048];
|
||||
FILE *wav;
|
||||
audsrv_fmt_t format;
|
||||
|
||||
@@ -133,7 +133,6 @@ void Audio::loadSong(char *t_filename)
|
||||
else
|
||||
{
|
||||
fseek(wav, 0x30, SEEK_SET);
|
||||
played = 0;
|
||||
songLoaded = 1;
|
||||
PRINT_LOG("Song loaded!");
|
||||
}
|
||||
@@ -216,15 +215,14 @@ void Audio::work()
|
||||
isTrackDone = true;
|
||||
return;
|
||||
}
|
||||
played++;
|
||||
if ((played + 20) % 41 == 0 && addedListeners)
|
||||
for (u32 i = 0; i < addedListeners; i++)
|
||||
listeners[i]->onAudioTick();
|
||||
}
|
||||
else
|
||||
{
|
||||
PRINT_LOG("Song " SONG_NAME " finished. Running again...");
|
||||
played = 0;
|
||||
for (u32 i = 0; i < addedListeners; i++)
|
||||
listeners[i]->onAudioFinish();
|
||||
fseek(wav, 0x30, SEEK_SET);
|
||||
isTrackDone = false;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user