feat(audio): so del sarcòfag amb pitch aleatori per obertura

This commit is contained in:
JailDesigner committed 2026-05-11 20:46:18 +02:00
1 parent 3e31a88f78
commit 932d195eb0
11 files changed
+112 -11

No files matched your search

+3
View File
@@ -18,6 +18,9 @@ auto Audio::get() -> Audio* {
void Audio::playSound(const std::string& /*name*/, Audio::Group /*group*/) {
}
void Audio::playSound(const std::string& /*name*/, Audio::Group /*group*/, float /*speed*/) {
}
namespace Resource {
auto Cache::get() -> Cache& {
+13 -9
View File
@@ -166,9 +166,11 @@ namespace {
REQUIRE(sarc->getVisitedCount() == 8);
REQUIRE(sarc->getState() == Sarcophagus::State::OPENING);
// Un update amb l'animació `opening` d'1 frame loop=false completa
// la transició a OPEN.
sarc->update(0.0F);
// Tickem prou per consumir l'animació `opening` (4 frames @ 6fps =
// ~0.67s). Quan completa, la transició OPENING → OPEN es dispara.
for (int i = 0; i < 16 && sarc->getState() == Sarcophagus::State::OPENING; ++i) {
sarc->update(0.1F);
}
REQUIRE(sarc->getState() == Sarcophagus::State::OPEN);
}
@@ -208,12 +210,14 @@ namespace {
forceOpen(s1);
forceOpen(s2);
// Un primer tick: cada sarc transiciona OPENING → OPEN i publica;
// l'handler del manager compta i, en arribar al total, crida
// door->open() — que en aquest mateix tick (la iteració sobre
// entities continua) farà transitar la porta OPENING → OPEN perquè
// l'animació és d'1 frame loop=false.
manager.update(0.0F);
// Tickem prou per consumir l'animació `opening` dels sarcs (4
// frames @ 6fps) i la de la porta. Cada sarc transiciona
// OPENING → OPEN i publica; l'handler del manager compta i, en
// arribar al total, crida `door->open()`, que també necessita
// tickar fins acabar la seua animació d'obertura.
for (int i = 0; i < 20 && door_ptr->getState() != Door::State::OPEN; ++i) {
manager.update(0.1F);
}
REQUIRE(manager.openedSarcophagusCount() == 2);
REQUIRE(door_ptr->getState() == Door::State::OPEN);