#pragma once
#include "raycaster.hpp"

struct CameraLOL {
  Raycaster& rayview;
  double t = 0.0;
  double move_speed = 0.1;
  double rot_speed = 0.06;
  double target_x = 0.0;
  double target_y = 0.0;
  double target_dir_x = 0.0;
  double target_dir_y = 0.0;
  double target_plane_x = 0.0;
  double target_plane_y = 0.0;

  CameraLOL(Raycaster& rv) :
    rayview(rv) {}

  Point plan_move(int dir, bool strafe);
  void plan_rotate(int dir);

  bool play_rotate();
  bool play_move();

  void abort_plan();
  Point aimed_at();
};