#pragma once
#include "../ship.hpp"
#include "common/Bar.hpp"
namespace {
  Counter restart_timer = {}; ///< после смерти задержка и вызов меню рестарта
  Counter nokill_timer = {}; ///< время неуязвимости
  bool plr_nokill = false; ///< включает проверку таймера бессмертия
  Vec plr_shake_offset = {}; ///< смещение игрока от тряски
  float plr_jolt = 0; ///< фоновая тряска от взрывов
}
//! базовый класс для игрока
class Plr: public Ship {
public:
  Plr() = default;
  virtual ~Plr() = default;
  Bar en = {}; ///< энергия на выстрелы и щит
  void reset() override {
    Ship::reset();
    flags |= EF_LIVE;
    nokill_timer = 4;
    plr_nokill = true;
  }
  void kill() override {
    Ship::kill();
    restart_timer = 4; // рестрт через 4 сек
  }
  bool update_physic(float dt, uint update_idx) override;
private:
  nocopy(Plr);
protected:
  void sub_hp(uint val) override {
    #ifdef DEBUG
    // бессмертие, если включено
    if (debuger::status & DBG_GODMOD)  
      return;
    #endif
    Ship::sub_hp(val);
  }
}; // Plr
namespace {
  Plr* p_plr = nullptr; ///< ссыль на текущего игрока
}
void load_plr_dark(CN(a83::Str) dir_name);
//! грузит разных игроков
void load_plr(CN(a83::Str) dir_name) {
  load_plr_dark(dir_name + "dark/");
  //... other plr's
}
#include "plr-physic.cpp"