Drumloop will now play when a team is about to win
This commit is contained in:
+1
-1
Submodule assets updated: 00329bcf3e...cea183a06a
@@ -89,7 +89,10 @@ private:
|
|||||||
Source* createSource(std::string filePath);
|
Source* createSource(std::string filePath);
|
||||||
std::unordered_map<EntityID, Source*> m_Sources;
|
std::unordered_map<EntityID, Source*> m_Sources;
|
||||||
void mainMenuLoop();
|
void mainMenuLoop();
|
||||||
|
void matchBGMLoop();
|
||||||
Source* m_CurrentBGM;
|
Source* m_CurrentBGM;
|
||||||
|
Source* m_CurrentBGMCombo;
|
||||||
|
bool m_TempPleaseDeleteMeASAP = false;
|
||||||
|
|
||||||
// Logic
|
// Logic
|
||||||
World* m_World = nullptr;
|
World* m_World = nullptr;
|
||||||
|
|||||||
@@ -66,7 +66,9 @@ void SoundManager::Update(double dt)
|
|||||||
deleteInactiveEmitters();
|
deleteInactiveEmitters();
|
||||||
updateEmitters(dt);
|
updateEmitters(dt);
|
||||||
updateListener(dt);
|
updateListener(dt);
|
||||||
if(false)
|
if (m_TempPleaseDeleteMeASAP)
|
||||||
|
matchBGMLoop();
|
||||||
|
if (false)
|
||||||
mainMenuLoop();
|
mainMenuLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,6 +189,30 @@ void SoundManager::mainMenuLoop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoundManager::matchBGMLoop()
|
||||||
|
{
|
||||||
|
if (m_CurrentBGMCombo == nullptr)
|
||||||
|
return;
|
||||||
|
auto cCapturePoints = m_World->GetComponents("CapturePoint");
|
||||||
|
for (auto it = cCapturePoints->begin(); it != cCapturePoints->end(); it++) {
|
||||||
|
float timeCaptured = (float)(double)(*it)["CaptureTimer"];
|
||||||
|
float maxTimer = (float)(double)(*it)["CapturePointMaxTimer"];
|
||||||
|
int capturePointIndex = (int)(*it)["CapturePointNumber"];
|
||||||
|
|
||||||
|
if (capturePointIndex == 0) { // Home for red team
|
||||||
|
if (timeCaptured < 0 && glm::abs(timeCaptured) < maxTimer) {
|
||||||
|
float gain = glm::abs(timeCaptured) / maxTimer;
|
||||||
|
setGain(m_CurrentBGMCombo, gain);
|
||||||
|
}
|
||||||
|
} else if (capturePointIndex == 4) { // Home for blue team
|
||||||
|
if (timeCaptured > 0 && timeCaptured < maxTimer) {
|
||||||
|
float gain = timeCaptured / maxTimer;
|
||||||
|
setGain(m_CurrentBGMCombo, gain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SoundManager::playSound(Source* source)
|
void SoundManager::playSound(Source* source)
|
||||||
{
|
{
|
||||||
alSourcei(source->ALsource, AL_BUFFER, source->SoundResource->Buffer());
|
alSourcei(source->ALsource, AL_BUFFER, source->SoundResource->Buffer());
|
||||||
@@ -260,7 +286,7 @@ bool SoundManager::OnPlayBackgroundMusic(const Events::PlayBackgroundMusic & e)
|
|||||||
auto listenerComponents = m_World->GetComponents("Listener");
|
auto listenerComponents = m_World->GetComponents("Listener");
|
||||||
for (auto it = listenerComponents->begin(); it != listenerComponents->end(); it++) {
|
for (auto it = listenerComponents->begin(); it != listenerComponents->end(); it++) {
|
||||||
if ((*it).EntityID != m_LocalPlayer.ID) {
|
if ((*it).EntityID != m_LocalPlayer.ID) {
|
||||||
break;
|
continue;;
|
||||||
}
|
}
|
||||||
auto emitterChild = m_World->CreateEntity((*it).EntityID);
|
auto emitterChild = m_World->CreateEntity((*it).EntityID);
|
||||||
auto emitter = m_World->AttachComponent(emitterChild, "SoundEmitter");
|
auto emitter = m_World->AttachComponent(emitterChild, "SoundEmitter");
|
||||||
@@ -348,6 +374,15 @@ bool SoundManager::OnPlayerSpawned(const Events::PlayerSpawned &e)
|
|||||||
{
|
{
|
||||||
if (e.PlayerID == -1) { // Local player
|
if (e.PlayerID == -1) { // Local player
|
||||||
m_LocalPlayer = e.Player;
|
m_LocalPlayer = e.Player;
|
||||||
|
if (m_TempPleaseDeleteMeASAP) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
m_CurrentBGMCombo = createSource("Audio/bgm/nearWin.wav");
|
||||||
|
m_CurrentBGMCombo->Type = SoundType::BGM;
|
||||||
|
alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1);
|
||||||
|
setGain(m_CurrentBGMCombo, 0);
|
||||||
|
playSound(m_CurrentBGMCombo);
|
||||||
|
m_TempPleaseDeleteMeASAP = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -368,7 +403,6 @@ bool SoundManager::OnPlayQueueOnEntity(const Events::PlayQueueOnEntity &e)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SoundManager::OnChangeBGM(const Events::ChangeBGM &e)
|
bool SoundManager::OnChangeBGM(const Events::ChangeBGM &e)
|
||||||
{
|
{
|
||||||
if (m_CurrentBGM == nullptr) {
|
if (m_CurrentBGM == nullptr) {
|
||||||
@@ -396,10 +430,10 @@ void SoundManager::setSoundProperties(Source* source, ComponentWrapper* soundCom
|
|||||||
{
|
{
|
||||||
float gain;
|
float gain;
|
||||||
switch (source->Type) {
|
switch (source->Type) {
|
||||||
case SoundType::SFX: gain = m_SFXVolumeChannel; break;
|
case SoundType::SFX: gain = m_SFXVolumeChannel; break;
|
||||||
case SoundType::BGM: gain = m_BGMVolumeChannel; break;
|
case SoundType::BGM: gain = m_BGMVolumeChannel; break;
|
||||||
case SoundType::Announcer: gain = m_AnnouncerVolumeChannel; break;
|
case SoundType::Announcer: gain = m_AnnouncerVolumeChannel; break;
|
||||||
default: gain = 1.f; break;
|
default: gain = 1.f; break;
|
||||||
}
|
}
|
||||||
alSourcef(source->ALsource, AL_GAIN, (float)(double)(*soundComponent)["Gain"] * gain);
|
alSourcef(source->ALsource, AL_GAIN, (float)(double)(*soundComponent)["Gain"] * gain);
|
||||||
alSourcef(source->ALsource, AL_PITCH, (float)(double)(*soundComponent)["Pitch"]);
|
alSourcef(source->ALsource, AL_PITCH, (float)(double)(*soundComponent)["Pitch"]);
|
||||||
|
|||||||
@@ -139,18 +139,18 @@ bool SoundSystem::OnPlayerHealthPickup(const Events::PlayerHealthPickup & e)
|
|||||||
|
|
||||||
bool SoundSystem::OnTriggerTouch(const Events::TriggerTouch & e)
|
bool SoundSystem::OnTriggerTouch(const Events::TriggerTouch & e)
|
||||||
{
|
{
|
||||||
// Temp for play test.
|
//// Temp for play test.
|
||||||
if (m_DrumsIsPlaying) {
|
//if (m_DrumsIsPlaying) {
|
||||||
return false;
|
// return false;
|
||||||
}
|
//}
|
||||||
if (m_World->HasComponent(e.Trigger.ID, "CapturePoint")) {
|
//if (m_World->HasComponent(e.Trigger.ID, "CapturePoint")) {
|
||||||
Events::PlaySoundOnEntity ev; // should be BGM
|
// Events::PlaySoundOnEntity ev; // should be BGM
|
||||||
ev.EmitterID = LocalPlayer.ID;
|
// ev.EmitterID = LocalPlayer.ID;
|
||||||
ev.FilePath = "Audio/bgm/drumstest.wav";
|
// ev.FilePath = "Audio/bgm/drumstest.wav";
|
||||||
m_EventBroker->Publish(ev);
|
// m_EventBroker->Publish(ev);
|
||||||
// Temp for play test.
|
// // Temp for play test.
|
||||||
m_DrumsIsPlaying = true;
|
// m_DrumsIsPlaying = true;
|
||||||
}
|
//}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user