Skip to content

Commit

Permalink
Make players respect makes_footstep_sound in the object properties
Browse files Browse the repository at this point in the history
  • Loading branch information
TeTpaAka authored and Ekdohibs committed May 6, 2017
1 parent de028fc commit 6658ad3
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 4 deletions.
4 changes: 4 additions & 0 deletions src/content_cao.cpp
Expand Up @@ -1583,6 +1583,10 @@ void GenericCAO::processMessage(const std::string &data)
m_initial_tx_basepos_set = true;
m_tx_basepos = m_prop.initial_sprite_basepos;
}
if (m_is_local_player) {
LocalPlayer *player = m_env->getLocalPlayer();
player->makes_footstep_sound = m_prop.makes_footstep_sound;
}

if ((m_is_player && !m_is_local_player) && m_prop.nametag == "")
m_prop.nametag = m_name;
Expand Down
14 changes: 10 additions & 4 deletions src/game.cpp
Expand Up @@ -476,6 +476,7 @@ class SoundMaker
ISoundManager *m_sound;
INodeDefManager *m_ndef;
public:
bool makes_footstep_sound;
float m_player_step_timer;

SimpleSoundSpec m_player_step_sound;
Expand All @@ -485,6 +486,7 @@ class SoundMaker
SoundMaker(ISoundManager *sound, INodeDefManager *ndef):
m_sound(sound),
m_ndef(ndef),
makes_footstep_sound(true),
m_player_step_timer(0)
{
}
Expand All @@ -493,7 +495,8 @@ class SoundMaker
{
if (m_player_step_timer <= 0 && m_player_step_sound.exists()) {
m_player_step_timer = 0.03;
m_sound->playSound(m_player_step_sound, false);
if (makes_footstep_sound)
m_sound->playSound(m_player_step_sound, false);
}
}

Expand Down Expand Up @@ -3419,11 +3422,14 @@ void Game::updateSound(f32 dtime)
camera->getCameraNode()->getUpVector());
sound->setListenerGain(g_settings->getFloat("sound_volume"));

LocalPlayer *player = client->getEnv().getLocalPlayer();

// Update sound maker
soundmaker->step(dtime);
// Tell the sound maker whether to make footstep sounds
soundmaker->makes_footstep_sound = player->makes_footstep_sound;

LocalPlayer *player = client->getEnv().getLocalPlayer();
// Update sound maker
if (player->makes_footstep_sound)
soundmaker->step(dtime);

ClientMap &map = client->getEnv().getClientMap();
MapNode n = map.getNodeNoEx(player->getFootstepNodePos());
Expand Down
1 change: 1 addition & 0 deletions src/localplayer.cpp
Expand Up @@ -58,6 +58,7 @@ LocalPlayer::LocalPlayer(Client *client, const char *name):
last_camera_fov(0),
last_wanted_range(0),
camera_impact(0.f),
makes_footstep_sound(true),
last_animation(NO_ANIM),
hotbar_image(""),
hotbar_selected_image(""),
Expand Down
2 changes: 2 additions & 0 deletions src/localplayer.h
Expand Up @@ -91,6 +91,8 @@ class LocalPlayer : public Player

float camera_impact;

bool makes_footstep_sound;

int last_animation;
float last_animation_speed;

Expand Down

0 comments on commit 6658ad3

Please sign in to comment.