#include "values/Dna.hpp"
#include <list>
#include <vector>

#define NUM_PER_GEN 10
#define NUM_OF_MUT 1

enum Liked
{
  tbd,
  yes,
  no
};

struct UiUnit
{
  Dna *dna;
  Liked liked;
  int index;
};

struct NetUnit
{
  uint128 hash;
  uint32_t index;
  Liked liked;
};

static_assert(24 == sizeof(NetUnit));

class DnaManager
{
public:
  void init();
  void deinit();
  UiUnit next();
  void like(UiUnit unit);
  int generation;

private:
  void saveData();
  void saveVec();
  void saveGen();
  uint128 randSeed;
  uint128 id;
  int queued;
  int showed;
  std::vector<Dna> vector;
  std::vector<int> liked;
  std::vector<int> disliked;

  void newGen();
};