#include <Game.h>
#include <CardPtr.h>
#include <PlayerLoop.h>

Game::Game() : Base(this)
{
  chest   = new CardPtrDeque;
  chance  = new CardPtrDeque;
  players = new PlayerLoop;
}

Game::~Game()
{
  theGame = 0;
  delete chest;
  delete chance;
  delete players;
}

char* Game::classname() const
{
  return "Game";
}

IOstatus Game::readContents()
{
  if (deeds.read() != ok) expected("DeedIndex");
  if (cards.read() != ok) expected("CardIndex");
  if (chest->read() != ok) expected("CardPtrDeque chest");
  if (chance->read()!= ok) expected("CardPtrDeque chance");
  if (spaces.read() != ok) expected("SpaceLoop");
  if (players->read() != ok) expected("PlayerLoop");
  if (dice.read()  != ok) expected("Dice");
  return ok;
}

IOstatus Game::writeContents() const
{
  if (deeds.write() != ok) die("Writing DeedIndex");
  if (cards.write() != ok) die("Writing CardIndex");
  if (chest->write() != ok) die("Writing CardPtrDeque chest");
  if (chance->write()!= ok) die("Writing CardPtrDeque chance");
  if (spaces.write() != ok) die("Writing SpaceLoop");
  if (players->write() != ok) die("Writing PlayerLoop");
  if (dice.write()  != ok) die("Writing Dice");
  return ok;
}
