// nau.hpp - Classe per a la nave del jugador
// © 1999 Visente i Sergi (versió Pascal)
// © 2025 Port a C++20 amb SDL3

#pragma once
#include "core/graphics/shape.hpp"
#include "core/types.hpp"
#include <SDL3/SDL.h>
#include <memory>

class Nau {
public:
  Nau() : renderer_(nullptr) {}
  Nau(SDL_Renderer *renderer);

  void inicialitzar();
  void processar_input(float delta_time);
  void actualitzar(float delta_time);
  void dibuixar() const;

  // Getters (API pública sense canvis)
  const Punt &get_centre() const { return centre_; }
  float get_angle() const { return angle_; }
  bool esta_viva() const { return !esta_tocada_; }

  // Col·lisions (Fase 10)
  void marcar_tocada() { esta_tocada_ = true; }

private:
  SDL_Renderer *renderer_;

  // [NUEVO] Forma vectorial (compartida, només 1 instància de Nau però preparat
  // per reutilització)
  std::shared_ptr<Graphics::Shape> forma_;

  // [NUEVO] Estat de la instància (separat de la geometria)
  Punt centre_;
  float angle_;     // Angle d'orientació
  float velocitat_; // Velocitat (px/s)
  bool esta_tocada_;

  void aplicar_fisica(float delta_time);
};
