1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#pragma once
#include "../ActorBase.h"
namespace Jazz2::Actors::Environment
{
/** @brief Spring */
class Spring : public ActorBase
{
DEATH_RUNTIME_OBJECT(ActorBase);
public:
Spring();
/** @brief Whether player horizontal speed should be kept */
bool KeepSpeedX;
/** @brief Whether player vertical speed should be kept */
bool KeepSpeedY;
bool OnHandleCollision(std::shared_ptr<ActorBase> other) override;
static void Preload(const ActorActivationDetails& details);
/** @brief Activates the spring */
Vector2f Activate();
protected:
Task<bool> OnActivatedAsync(const ActorActivationDetails& details) override;
void OnUpdate(float timeMult) override;
void OnUpdateHitbox() override;
private:
enum class State {
Default,
Frozen,
Heated
};
enum class Orientation : uint8_t {
Bottom,
Right,
Top,
Left
};
uint8_t _type;
Orientation _orientation;
float _strength;
uint8_t _delay;
State _state;
float _cooldown;
};
}
|