#include <vector>

#include "values/Dna.hpp"

#include <raylib.h>

class BackGround
{

public:
  BackGround() = default;
  ~BackGround() = default;
  void init(int canvasSize);
  void deinit();
  void draw(Dna *dna);

private:
  void drawStars();
  void drawSun();
  void drawMounten(size_t mountenSegments, int min, int max, Color color, float scale);
  int getColorSet();
  int getTime();

  Dna *m_dna;

  uint128 mountenSeed;
  uint128 starSeed;

  int canvasSize = 0;

  constexpr static size_t numOfStarts = 150;
  constexpr static float moonXOffset = 0.1f;
  constexpr static float minSizeOfMoon = 0.1f;
  constexpr static float maxSizeOfMoon = 0.15f;
  constexpr static float maxYPosOfMoon = 0.80f;
  constexpr static float bigRingRatio = 0.5f;
  constexpr static float smallRingRatio = 0.25f;
  constexpr static float bigRingBlend = 0.02f;
  constexpr static float smallRingBlend = 0.05f;
  constexpr static float colorRatio1 = 0.3f;
  constexpr static float colorRatio2 = 0.7f;
  constexpr static float mounten1min = 0.65f;
  constexpr static float mounten1max = 0.85f;
  constexpr static float mounten2min = 0.80f;
  constexpr static float mounten2max = 0.90;
  constexpr static float mounten3min = 0.90f;
  constexpr static float mounten3max = 0.95f;
};