MinecraftConsoles/Minecraft.World/WolfRetreatGoal.h
2026-03-15 21:10:32 +03:00

42 lines
1.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "Goal.h"
class TamableAnimal;
class WolfRetreatGoal : public Goal
{
private:
TamableAnimal* tameAnimal;
// Ïîðîã HP (0.01.0), íèæå êîòîðîãî íà÷èíàåì îòñòóïàòü
float retreatHealthFraction;
// Ìíîæèòåëü ñêîðîñòè ïðè îòñòóïëåíèè
float runSpeedMultiplier;
// Ñ÷¸ò÷èê òèêîâ äëÿ ïåðåc÷¸òà ïóòè (íå êàæäûé òèê)
int recalcPathTicks;
// Ãèñòåðåçèñ: âîññòàíîâèòüñÿ íóæíî ÷óòü âûøå ïîðîãà îòñòóïëåíèÿ,
// ÷òîáû íå ä¸ðãàòüñÿ òóäà-îáðàòíî
static constexpr float HYSTERESIS = 0.15f;
// Ðàññòîÿíèå äî õîçÿèíà, ïðè êîòîðîì ñ÷èòàåì "äîáåæàëè"
static constexpr float SAFE_DIST_SQ = 4.0f * 4.0f;
// Ïåðåñ÷èòûâàòü ïóòü êàæäûå N òèêîâ
static constexpr int PATH_RECALC_INTERVAL = 10;
public:
WolfRetreatGoal(TamableAnimal* tameAnimal,
float retreatHealthFraction,
float runSpeedMultiplier = 1.5f);
bool canUse() override;
bool canContinueToUse() override;
void start() override;
void stop() override;
void tick() override;
};