#pragma once
#include <a83/error.hpp>
#include <a83/macro.hpp>
//! полоска
struct Bar {
  float val = 0; ///< текущий размер полоски
  float size = 0; ///< макс размер полоски
  Bar() = default;
  ~Bar() = default;
  Bar(float val_, float size_)
  : val(val_), size(size_) { check_all(); }
  bool check() const { check_all(); return val > 0; }
  void sub(float x) { check_all(); val = std::max(0.0f, val - x); }
  void add(float x) { check_all(); val = std::min(size, val + x); }
private:
  void check_all() const {
    #ifdef DEBUG
    IFERROR(val > size, "Bar(): val > size");
    IFERROR(size <= 0, "Bar(): size <= 0");
    #endif
  }
}; // Bar