int vec_create()

in coinrun/coinrun.cpp [1864:1895]


int vec_create(int game_type, int nenvs, int lump_n, bool want_hires, float default_zoom)
{
  std::shared_ptr<VectorOfStates> vstate(new VectorOfStates);
  vstate->states.resize(nenvs);
  vstate->game_type = game_type;

  for (int n = 0; n < nenvs; n++) {
    vstate->states[n] = std::shared_ptr<State>(new State(vstate));
    vstate->states[n]->state_n = n;
    state_reset(vstate->states[n], vstate->game_type);
    vstate->states[n]->agent_ready = false;
    vstate->states[n]->agent.zoom = default_zoom;
    vstate->states[n]->agent.target_zoom = default_zoom;
    if (
        (monitor_csv_policy == 1 && n == 0) ||
        (monitor_csv_policy == 2))
    {
      vstate->states[n]->agent.monitor_csv_open(n + lump_n * nenvs);
    }
    if (want_hires)
        vstate->states[n]->agent.render_hires_buf = new uint8_t[VIDEORES*VIDEORES*4];
  }
  vstate->nenvs = nenvs;
  int h;
  {
    QMutexLocker lock(&h2s_mutex);
    h = handle_seq++;
    h2s[h] = vstate;
    vstate->handle = h;
  }
  return h;
}