#pragma once #include #include #include #include "KSolid.h" #include "Utils.h" namespace KapitanGame { class KSettings; class KPlayerController; class KPawn : public KSolid { public: KPawn(const KVector2D& position, const KTexture& texture, const std::shared_ptr& playerController, KSettings* settings) : KSolid(position, texture, nullptr), PlayerController(playerController), CanJump(false), CanDoubleJump(false), HasJumped(true), Settings(settings) { } void CollisionDetectionStep(const std::unordered_map, std::shared_ptr, Utils::PairHash>& objects); void MovementStep(const float& timeStep); void CollisionDetectionWithMapStep(const SDL_FRect& map); void AddXMovementInput(const float& input); void StopJump(); void StartJump(); private: const std::weak_ptr PlayerController; KVector2D Velocity{ 0.f, 0.f }; bool CanJump; bool CanDoubleJump; bool HasJumped; KSettings* Settings; }; }