This commit is contained in:
tovjemam 2026-06-05 23:30:39 +02:00
parent dbe2e0da8e
commit cfe84f1438
2 changed files with 61 additions and 3 deletions

View File

@ -1,4 +1,5 @@
#include "cow.hpp"
#include "utils/random.hpp"
static game::CharacterTuning GetCowTuning()
{
@ -10,11 +11,61 @@ static game::CharacterTuning GetCowTuning()
game::Cow::Cow(World& world, const glm::vec3& position, float yaw) : Animal(world, GetCowTuning(), position, yaw)
{
walk_speed_ = 3.0f;
turn_speed_ = 3.0f;
SetUseMessage("vlízt na krávu");
AddAnimalSeat(glm::vec3(0.0f, -0.098926f, 0.447576f));
AddAnimalSeat(glm::vec3(0.0f, 0.394027f, 0.458536f));
AddAnimalSeat(glm::vec3(0.0f, 0.098926f, 0.447576f));
AddAnimalSeat(glm::vec3(0.0f, -0.394027f, 0.458536f));
SetIdleAnim("idle");
SetWalkAnim("walk");
ScheduleRandomMoo();
}
void game::Cow::OnPassengerChanged(size_t seat_idx, HumanCharacter* passenger)
{
Super::OnPassengerChanged(seat_idx, passenger);
if (passenger)
{
PlayUseSound();
}
}
void game::Cow::ScheduleRandomMoo()
{
Schedule(rand() % 15000 + 5000, [this]() {
PlayRandomMoo();
ScheduleRandomMoo();
});
}
void game::Cow::PlayRandomMoo()
{
float volume = RandomFloat(0.9f, 1.1f);
float pitch = RandomFloat(0.9f, 1.0f);
switch (rand() % 4)
{
case 0:
PlaySound("cow-01", volume, pitch);
break;
case 1:
PlaySound("cow-02", volume, pitch);
break;
case 2:
PlaySound("cow-04", volume, pitch);
break;
case 3:
PlaySound("cow-05", volume, pitch);
break;
}
}
void game::Cow::PlayUseSound()
{
PlaySound("cow-06", 1.0f, RandomFloat(0.9f, 1.1f));
}

View File

@ -8,10 +8,17 @@ namespace game
class Cow : public Animal
{
public:
using Super = Animal;
Cow(World& world, const glm::vec3& position, float yaw);
private:
protected:
virtual void OnPassengerChanged(size_t seat_idx, HumanCharacter* passenger) override;
private:
void ScheduleRandomMoo();
void PlayRandomMoo();
void PlayUseSound();
};