#pragma once

#include <object/entity.hpp>
#include <renderer/texture.hpp>
#include <renderer/font.hpp>
#include <object/sound.hpp>

namespace Game::AGame {
GAME_ENTITY(Player)
    public:
        void setShipTexture(std::shared_ptr<Game::Renderer::Texture> tex);
        void setGroundTexture(std::shared_ptr<Game::Renderer::Texture> tex);
        void respawnRandomSea(float landBoundaryX);
        bool isShipMode() const { return mIsShipMode; }
        void onCollisionEnter(Object::Entity* other) override;
    private:
        Object::Sound mSound;
        float mSpeed = 200.f; // Pixels per second
        [[maybe_unused]] float mHealth = 100.f;
        std::shared_ptr<Game::Renderer::Texture> mShipTex;
        std::shared_ptr<Game::Renderer::Texture> mGroundTex;
        bool mIsShipMode = true;
        float mShoreMargin = 40.f;
END_GAME_ENTITY()
}