[Add] Sound effects.
[Add] Player walking sounds.
This commit is contained in:
parent
f2d6345a61
commit
7aa8d9adb2
@ -83,6 +83,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\src\Actor\NPC.h" />
|
||||||
<ClInclude Include="..\..\src\Actor\Player.h" />
|
<ClInclude Include="..\..\src\Actor\Player.h" />
|
||||||
<ClInclude Include="..\..\src\Collision\AABB.h" />
|
<ClInclude Include="..\..\src\Collision\AABB.h" />
|
||||||
<ClInclude Include="..\..\src\Global\Constants.h" />
|
<ClInclude Include="..\..\src\Global\Constants.h" />
|
||||||
@ -101,6 +102,7 @@
|
|||||||
<ClInclude Include="..\..\src\Math\Timer.h" />
|
<ClInclude Include="..\..\src\Math\Timer.h" />
|
||||||
<ClInclude Include="..\..\src\Math\Vec2.h" />
|
<ClInclude Include="..\..\src\Math\Vec2.h" />
|
||||||
<ClInclude Include="..\..\Src\Sound\Music.h" />
|
<ClInclude Include="..\..\Src\Sound\Music.h" />
|
||||||
|
<ClInclude Include="..\..\Src\Sound\SoundEffect.h" />
|
||||||
<ClInclude Include="..\..\src\Sprite\Sprite.h" />
|
<ClInclude Include="..\..\src\Sprite\Sprite.h" />
|
||||||
<ClInclude Include="..\..\src\System\Debug.h" />
|
<ClInclude Include="..\..\src\System\Debug.h" />
|
||||||
<ClInclude Include="..\..\src\System\ResourceManager.h" />
|
<ClInclude Include="..\..\src\System\ResourceManager.h" />
|
||||||
@ -122,6 +124,7 @@
|
|||||||
<ClInclude Include="..\..\src\TMXParser\TmxUtil.h" />
|
<ClInclude Include="..\..\src\TMXParser\TmxUtil.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\src\Actor\NPC.cpp" />
|
||||||
<ClCompile Include="..\..\src\Actor\Player.cpp" />
|
<ClCompile Include="..\..\src\Actor\Player.cpp" />
|
||||||
<ClCompile Include="..\..\src\Collision\AABB.cpp" />
|
<ClCompile Include="..\..\src\Collision\AABB.cpp" />
|
||||||
<ClCompile Include="..\..\src\Global\Constants.cpp" />
|
<ClCompile Include="..\..\src\Global\Constants.cpp" />
|
||||||
@ -136,6 +139,7 @@
|
|||||||
<ClCompile Include="..\..\src\Math\Timer.cpp" />
|
<ClCompile Include="..\..\src\Math\Timer.cpp" />
|
||||||
<ClCompile Include="..\..\src\Math\Vec2.cpp" />
|
<ClCompile Include="..\..\src\Math\Vec2.cpp" />
|
||||||
<ClCompile Include="..\..\Src\Sound\Music.cpp" />
|
<ClCompile Include="..\..\Src\Sound\Music.cpp" />
|
||||||
|
<ClCompile Include="..\..\Src\Sound\SoundEffect.cpp" />
|
||||||
<ClCompile Include="..\..\src\Sprite\Sprite.cpp" />
|
<ClCompile Include="..\..\src\Sprite\Sprite.cpp" />
|
||||||
<ClCompile Include="..\..\src\System\Debug.cpp" />
|
<ClCompile Include="..\..\src\System\Debug.cpp" />
|
||||||
<ClCompile Include="..\..\src\Texture\Texture.cpp" />
|
<ClCompile Include="..\..\src\Texture\Texture.cpp" />
|
||||||
|
@ -153,6 +153,12 @@
|
|||||||
<ClInclude Include="..\..\Src\Sound\Music.h">
|
<ClInclude Include="..\..\Src\Sound\Music.h">
|
||||||
<Filter>Sound</Filter>
|
<Filter>Sound</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\Src\Sound\SoundEffect.h">
|
||||||
|
<Filter>Sound</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Actor\NPC.h">
|
||||||
|
<Filter>Actor</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\Main\main.cpp">
|
<ClCompile Include="..\..\src\Main\main.cpp">
|
||||||
@ -242,5 +248,11 @@
|
|||||||
<ClCompile Include="..\..\Src\Sound\Music.cpp">
|
<ClCompile Include="..\..\Src\Sound\Music.cpp">
|
||||||
<Filter>Sound</Filter>
|
<Filter>Sound</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\Src\Sound\SoundEffect.cpp">
|
||||||
|
<Filter>Sound</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\Actor\NPC.cpp">
|
||||||
|
<Filter>Actor</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
BIN
Data/SFX/step_cloth1.wav
Normal file
BIN
Data/SFX/step_cloth1.wav
Normal file
Binary file not shown.
BIN
Data/SFX/step_cloth2.wav
Normal file
BIN
Data/SFX/step_cloth2.wav
Normal file
Binary file not shown.
BIN
Data/SFX/step_cloth3.wav
Normal file
BIN
Data/SFX/step_cloth3.wav
Normal file
Binary file not shown.
BIN
Data/SFX/step_cloth4.wav
Normal file
BIN
Data/SFX/step_cloth4.wav
Normal file
Binary file not shown.
@ -1,4 +1,7 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "../Sound/SoundEffect.h"
|
||||||
|
|
||||||
Player::Player(void) {
|
Player::Player(void) {
|
||||||
PLAYER_SPEED = 15;
|
PLAYER_SPEED = 15;
|
||||||
@ -17,6 +20,12 @@ Player::Player(void) {
|
|||||||
_environmentCollisionBound = new AABB();
|
_environmentCollisionBound = new AABB();
|
||||||
_environmentCollisionBound->SetMin(_collisionBound->GetMin().x, _collisionBound->GetMax().y - 50.0f);
|
_environmentCollisionBound->SetMin(_collisionBound->GetMin().x, _collisionBound->GetMax().y - 50.0f);
|
||||||
_environmentCollisionBound->SetMax(_collisionBound->GetMax().x, _collisionBound->GetMax().y);
|
_environmentCollisionBound->SetMax(_collisionBound->GetMax().x, _collisionBound->GetMax().y);
|
||||||
|
|
||||||
|
_stepSFX[0] = sfxManager.Load("../Data/SFX/step_cloth1.wav");
|
||||||
|
_stepSFX[1] = sfxManager.Load("../Data/SFX/step_cloth2.wav");
|
||||||
|
_stepSFX[2] = sfxManager.Load("../Data/SFX/step_cloth3.wav");
|
||||||
|
_stepSFX[3] = sfxManager.Load("../Data/SFX/step_cloth4.wav");
|
||||||
|
_lastStepSFXPlayed = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::~Player(void) {
|
Player::~Player(void) {
|
||||||
@ -68,8 +77,8 @@ bool Player::GetInBlueCollision(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Player::ProcessEvents(void) {
|
void Player::ProcessEvents(void) {
|
||||||
x = _player->GetX();
|
float oldX = x = _player->GetX();
|
||||||
y = _player->GetY();
|
float oldY = y = _player->GetY();
|
||||||
if(KeyStillDown(SDLK_w)) {
|
if(KeyStillDown(SDLK_w)) {
|
||||||
y -= PLAYER_SPEED;
|
y -= PLAYER_SPEED;
|
||||||
_player->SetY(y);
|
_player->SetY(y);
|
||||||
@ -86,6 +95,18 @@ void Player::ProcessEvents(void) {
|
|||||||
x += PLAYER_SPEED;
|
x += PLAYER_SPEED;
|
||||||
_player->SetX(x);
|
_player->SetX(x);
|
||||||
}
|
}
|
||||||
|
if(x != oldX || y != oldY) {
|
||||||
|
if(!SoundEffect::IsPlaying(1)) {
|
||||||
|
int sfxIndex;
|
||||||
|
do {
|
||||||
|
sfxIndex = rand() % 4;
|
||||||
|
} while(sfxIndex == _lastStepSFXPlayed);
|
||||||
|
|
||||||
|
SoundEffect::Play(_stepSFX[sfxIndex], 1, 0);
|
||||||
|
|
||||||
|
_lastStepSFXPlayed = sfxIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Player::GetWidth(void) { return _player->GetWidth(); }
|
int Player::GetWidth(void) { return _player->GetWidth(); }
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "../IO/Input.h"
|
#include "../IO/Input.h"
|
||||||
|
|
||||||
class Sprite;
|
class Sprite;
|
||||||
|
class SoundEffect;
|
||||||
|
|
||||||
// We will derive from an Actor class at some point.
|
// We will derive from an Actor class at some point.
|
||||||
class Player {
|
class Player {
|
||||||
@ -66,4 +67,7 @@ private:
|
|||||||
|
|
||||||
AABB* _collisionBound;
|
AABB* _collisionBound;
|
||||||
AABB* _environmentCollisionBound;
|
AABB* _environmentCollisionBound;
|
||||||
|
|
||||||
|
SoundEffect* _stepSFX[4];
|
||||||
|
int _lastStepSFXPlayed;
|
||||||
};
|
};
|
||||||
|
33
src/Sound/SoundEffect.cpp
Normal file
33
src/Sound/SoundEffect.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include <SDL/SDL_mixer.h>
|
||||||
|
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
|
ResourceManager<SoundEffect> sfxManager;
|
||||||
|
|
||||||
|
SoundEffect::SoundEffect() {
|
||||||
|
_chunk = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
SoundEffect::~SoundEffect() {
|
||||||
|
if(_chunk) {
|
||||||
|
Mix_FreeChunk(_chunk);
|
||||||
|
_chunk = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SoundEffect::Load(const std::string& filename) {
|
||||||
|
_chunk = Mix_LoadWAV(filename.c_str());
|
||||||
|
return _chunk != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SoundEffect::Play(SoundEffect* effect, int channel, int loops) {
|
||||||
|
Mix_PlayChannel(channel, effect->_chunk, loops);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SoundEffect::Stop(int channel) {
|
||||||
|
Mix_HaltChannel(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SoundEffect::IsPlaying(int channel) {
|
||||||
|
return Mix_Playing(channel);
|
||||||
|
}
|
24
src/Sound/SoundEffect.h
Normal file
24
src/Sound/SoundEffect.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../System/ResourceManager.h"
|
||||||
|
|
||||||
|
struct Mix_Chunk;
|
||||||
|
|
||||||
|
class SoundEffect : public Resource {
|
||||||
|
template<class T> friend class ResourceManager;
|
||||||
|
|
||||||
|
public:
|
||||||
|
SoundEffect();
|
||||||
|
~SoundEffect();
|
||||||
|
|
||||||
|
bool Load(const std::string& filename);
|
||||||
|
|
||||||
|
static void Play(SoundEffect* effect, int channel, int loops);
|
||||||
|
static void Stop(int channel);
|
||||||
|
static bool IsPlaying(int channel);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Mix_Chunk* _chunk;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern ResourceManager<SoundEffect> sfxManager;
|
Loading…
Reference in New Issue
Block a user