Files
dae16-VerhulstBram-GameProject/Game/Player.h
Bram Verhulst 5477b8a7f2 Fix digging
2024-04-20 20:20:54 +02:00

103 lines
1.9 KiB
C++

#pragma once
#include "Collision.h"
#include "TextureManager.h"
#include "Animations/Animation.h"
class WorldLevel;
enum class PlayerState
{
Idle,
Walking,
Digging,
};
enum class PlayerDirection
{
Left,
Right,
Up,
Down,
};
enum class DigDirection
{
Left,
Right,
Down
};
class Player
{
public:
Player(const Vector2f& Position, TextureManager* pTextureManager);
Collision::CollisionRect GetCollisionRect() const;
void Update(float elapsedTime, WorldLevel& level);
void Draw() const;
void SetPosition(Vector2f pos) {
m_Position = pos;
}
Vector2f GetPosition() const {
return m_Position;
}
void SetVelocity(Vector2f vel) {
m_Vel = vel;
}
Vector2f GetVelocity() const {
return m_Vel;
}
auto GetContactMap() {
return m_ContactMap;
}
void SetContactMap(Collision::CollisionDirection dir, WorldTile* tile) {
m_ContactMap[dir] = tile;
}
void ProcessImGui();
private:
void Dig(Collision::CollisionDirection dir, WorldLevel& level);
bool CanDig(Collision::CollisionDirection dir, WorldLevel& level);
Vector2f m_Position;
Vector2f m_Size;
Vector2f m_Vel;
std::map<Collision::CollisionDirection, WorldTile *> m_ContactMap;
Vector2f m_Acc;
Vector2f m_Gravity { 0, -9.81f };
float m_BobTimer{ 0.0f };
const float m_BobTime{ 0.1f };
bool m_BobUp{ true };
Vector2f m_DigDestination{};
bool m_Digging{ false };
Vector2f m_DigStart{};
float m_DigProgress{};
bool m_HasDeletedTile{ false };
WorldTile* m_DigTile{ nullptr };
const float m_DigTime{ 0.5f };
bool m_Grounded { false };
bool m_DidJustDigRight { false };
bool m_DidJustDigLeft { false };
Animation* m_currentAnimation{ nullptr };
Animation* m_walkAnimation;
Animation* m_turnAnimation;
Animation* m_digAnimation;
PlayerState m_State { PlayerState::Idle };
PlayerDirection m_Direction { PlayerDirection::Right };
DigDirection m_DigDirection { DigDirection::Right };
//Testing
bool m_DrawCollisionRect { true };
};