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

#define NUM_PER_GEN 16
#define NUM_OF_MUT 3

enum Liked
{
  tbd,
  yes,
  no
};

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

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

static_assert(12 == sizeof(NetUnit));

struct DnaManagerData
{
  int generation;
  uint128 randSeed;
  int64_t id;
  int queued;
  int showed;
  std::vector<Dna> vector;
  std::vector<int> liked;
  std::vector<int> disliked;
};

namespace DnaManager
{
  UiUnit next(DnaManagerData *data);
  bool like(UiUnit unit, DnaManagerData *data);
  void newGen(DnaManagerData *data);
};