feat(mummy): so mummy_hurt en colpejada de fuet
This commit is contained in:
1 parent
4ea8ab7b6d
commit
0ec1a2548a
6 files changed
+56
No files matched your search
@@ -8,11 +8,14 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "core/audio/audio.hpp"
|
||||
#include "core/resources/resource_cache.hpp"
|
||||
#include "game/entities/entity_factory.hpp"
|
||||
#include "game/entities/entity_manager.hpp"
|
||||
#include "game/entities/event_bus.hpp"
|
||||
#include "game/entities/player.hpp"
|
||||
#include "game/map/map.hpp"
|
||||
#include "utils/defaults.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -133,6 +136,14 @@ Mummy::Mummy(const fkyaml::node& yaml)
|
||||
if (h.contains("whippable")) {
|
||||
whippable_ = h["whippable"].get_value<bool>();
|
||||
}
|
||||
// So opcional: el basename val tant de clau al Resource::Cache com de
|
||||
// path (`Defaults::Paths::AUDIO_SOUNDS_DIR + key`). Mateix patró que
|
||||
// els sons del Player. Si el camp manca, la clau queda buida i
|
||||
// `enterHurt` no dispara playSound.
|
||||
if (h.contains("sound")) {
|
||||
hurt_config_.sound_key = h["sound"].get_value<std::string>();
|
||||
Resource::Cache::get().loadSound(hurt_config_.sound_key, std::string{Defaults::Paths::AUDIO_SOUNDS_DIR} + hurt_config_.sound_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,6 +522,9 @@ void Mummy::enterHurt(Direction flee_dir) {
|
||||
state_ = State::HURT;
|
||||
hurt_remaining_s_ = hurt_config_.duration_s;
|
||||
hurt_speed_ = (hurt_config_.speed_px_per_s > 0.0F) ? hurt_config_.speed_px_per_s : speed_;
|
||||
if (!hurt_config_.sound_key.empty() && Audio::get() != nullptr) {
|
||||
Audio::get()->playSound(hurt_config_.sound_key, Audio::Group::GAME);
|
||||
}
|
||||
|
||||
const Direction CHOSEN = chooseHurtDirection(flee_dir);
|
||||
if (CHOSEN == Direction::NONE) {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <climits>
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "external/fkyaml_node.hpp"
|
||||
@@ -35,6 +36,7 @@ class Mummy : public DynamicHazard {
|
||||
struct HurtConfig {
|
||||
float duration_s{0.0F};
|
||||
float speed_px_per_s{0.0F};
|
||||
std::string sound_key; // Buit = sense so. El fitxer viu a Defaults::Paths::AUDIO_SOUNDS_DIR.
|
||||
};
|
||||
|
||||
explicit Mummy(const fkyaml::node& yaml);
|
||||
|
||||
Reference in new issue
Block a user