Beispiel #1
0
        static void Main(string[] args)
        {
            Player player = new Player();

            Console.WriteLine($"> Iniciando Juego :O");
            Thread.Sleep(2500);

            player.Level  = 1;
            player.Score  = 500;
            player.Health = 100;

            Console.WriteLine($"\n[OK] > Nivel 1 completado :)\n{player}");
            Thread.Sleep(2500);

            //Cuando el jugador completa un nivel, crear un checkpoint para ese nivel.
            GameMemory     gameMemory = GameMemory.Instance;
            IPublicMemento memento    = player.CreateCheckpoint();

            gameMemory.SaveGameMarker(memento);

            player.Level  = 2;
            player.Score  = 250;
            player.Health = 50;

            Console.WriteLine($"\n[OK] > Nivel 2 completado :P \n{player}");
            Thread.Sleep(2500);

            //Guardar resultado de nivel 2.
            memento = player.CreateCheckpoint();
            gameMemory.SaveGameMarker(memento);

            player.Level  = 3;
            player.Score  = 100;
            player.Health = 0;

            Console.WriteLine($"\n[X] > Nivel 3 NO completado :(\n{player}");
            Thread.Sleep(2500);

            IPublicMemento lastMemento = gameMemory.GetLastGameMarker();

            player.RestoreCheckpoint(lastMemento);
            Console.WriteLine($"\n[OK]> Nivel 2 Restaurado :D\n{player}");

            Thread.Sleep(2500);

            IPublicMemento firstMemento = gameMemory.GetGameMarker(0);

            player.RestoreCheckpoint(firstMemento);
            Console.WriteLine($"\n[OK]> Nivel 1 Restaurado :/\n{player}");

            //No puede utilizar la interfaz interna.
            //memento.Score = 99999;
            //IInternalGameMemento internalMemento = memento as IInternalGameMemento;
            //internalMemento.Level = 99999;

            Console.ReadKey();
        }
Beispiel #2
0
        /// <summary>
        /// Restore
        /// </summary>
        /// <returns></returns>
        public void RestoreCheckpoint(IPublicMemento memento)
        {
            if (memento == null)
            {
                throw new ArgumentException("Memento no debe ser nulo.");
            }

            IInternalMemento internalMemento = memento as IInternalMemento;

            if (internalMemento == null)
            {
                throw new InvalidCastException("Memento inválido.");
            }

            this.Level  = internalMemento.Level;
            this.Score  = internalMemento.Score;
            this.Health = internalMemento.Health;
            this.LifesLeft--;
        }
Beispiel #3
0
 /// <summary>
 /// Guarda el memento en la colección.
 /// </summary>
 /// <param name="gameMarker">Memento a guardar.</param>
 public void SaveGameMarker(IPublicMemento gameMarker)
 {
     GameMarkers.Add(gameMarker);
 }
Beispiel #4
0
 /// <summary>
 /// Guarda el memento en la colección.
 /// </summary>
 /// <param name="gameMarker">Memento a guardar.</param>
 public void SaveCheckpoint(IPublicMemento gameMarker)
 {
     Checkpoints.Add(gameMarker);
 }