public BattlefieldMemento CreateMemento()
        {
            BattlefieldMemento Memento = new BattlefieldMemento();

            foreach (List <Field> Row in this.BattleGrid)
            {
                Memento.BattleGrid.Add(Row.Select(x => x.CreateMemento()).ToList());
            }
            foreach (HeroInterface Hero in this.Heroes)
            {
                Memento.Heroes.Add(Hero.CreateMemento());
            }
            return(Memento);
        }
 public void Restore(BattlefieldMemento Memento)
 {
     for (int i = 0; i < BattleGrid.Count; i++)
     {
         for (int j = 0; j < BattleGrid[i].Count; j++)
         {
             BattleGrid[i][j].Restore(Memento.BattleGrid[i][j]);
         }
     }
     for (int i = 0; i < this.Heroes.Count; i++)
     {
         this.Heroes[i].Restore(Memento.Heroes[i]);
         Field Temp = GetField(this.Heroes[i].GetCoordinates()[0], this.Heroes[i].GetCoordinates()[1]);
         if (Temp != null && !this.Heroes[i].IsDead())
         {
             Temp.SetHero(this.Heroes[i]);
         }
     }
 }