#include <map>
#include <string>
#include <vector>
#include "any.h"
#include "ctx.h"

#ifndef memory_Context_HEADER
#define memory_Context_HEADER

struct memory_Context {
  bool didLaunch = false;
  bool exit = false;
  std::vector<int> hiddenItems;
  std::string input = "";
  std::vector<int> mismatchedItems;
  std::string outputGoOn = "";
  std::string outputGreeting = "";
  std::string outputHelp = "";
  std::string outputMatchedItems = "";
  std::string outputMismatchedItems = "";
  std::string outputPromptSelection = "";
  std::string outputVictory = "";
  std::map<int, int> playfieldItems;
  int playfieldSize = 0;
  std::string recentField = "none";
  int selectedId = -1;
  std::vector<int> selectedItems;
  bool victory = false;

  libany::any field(const std::string &fieldName);
  void setField(const std::string &fieldName, libany::any value);
};

memory_Context memory_createContext();

#endif // memory_Context_HEADER
