Exemple #1
0
    private void Start()
    {
        CareTaker careTaker = new CareTaker();

        Originator originator = new Originator();

        originator.SetState("state1");
        originator.ShowState();

        Memento memento = originator.CreateMemento();

        careTaker.AddMemento("v1.0", memento);

        originator.SetState("state2");
        originator.ShowState();
        memento = originator.CreateMemento();
        careTaker.AddMemento("v2.0", memento);

        originator.SetState("state3");
        originator.ShowState();
        memento = originator.CreateMemento();
        careTaker.AddMemento("v3.0", memento);



        originator.RecoverFromMemento(careTaker.GetMemento("v1.0"));
        originator.ShowState();
        originator.RecoverFromMemento(careTaker.GetMemento("v2.0"));
        originator.ShowState();
        originator.RecoverFromMemento(careTaker.GetMemento("v3.0"));
        originator.ShowState();
    }
Exemple #2
0
    private void Start()
    {
        //Originator originator = new Originator();
        //originator.SetState("State1");
        //originator.ShowState();

        //Memento memento = originator.CreateMemento(); //创建快照
        //originator.SetState("State2");
        //originator.ShowState();

        //originator.SetMemento(memento);
        //originator.ShowState();

        CareTaker careTaker = new CareTaker();

        Originator originator = new Originator();

        originator.SetState("state1");
        originator.ShowState();
        careTaker.AddMemento("v1.0", originator.CreateMemento());

        originator.SetState("state2");
        originator.ShowState();
        careTaker.AddMemento("v2.0", originator.CreateMemento());

        originator.SetState("state3");
        originator.ShowState();
        careTaker.AddMemento("v3.0", originator.CreateMemento());

        originator.SetMemento(careTaker.GetMemento("v2.0"));
        originator.ShowState();

        originator.SetMemento(careTaker.GetMemento("v1.0"));
        originator.ShowState();
    }
Exemple #3
0
        static void Main(string[] args)
        {
            var p = new Persona();

            p.Nombre = "Pepe";


            caretaker.Add(p.saveToMemento());

            p.Nombre = "Pepe1";
            caretaker.Add(p.saveToMemento());


            p.Nombre = "Pepe2";
            caretaker.Add(p.saveToMemento());


            Memento.Clases.Memento m1 = caretaker.GetMemento(0);
            Console.WriteLine("Viendo memento 1: " + m1.Estado);
            Console.WriteLine("Viendo memento 2: " + caretaker.GetMemento(1).Estado);
            Console.WriteLine("Viendo memento 3: " + caretaker.GetMemento(2).Estado);


            p.restoreToMemento(m1);

            p.restoreToMemento(caretaker.GetMemento(1));
            Console.ReadKey();
        }
    private void Start()
    {
        /*
         * Originator originator = new Originator();
         * originator.SetState("Test1");
         * originator.ShowState();
         *
         * Memento memento1 = originator.CreateMemento();
         *
         * originator.SetState("Test2");
         * originator.ShowState();
         *
         * originator.SetMemento(memento1);
         */
        CareTaker careTaker = new CareTaker();

        Originator originator = new Originator();

        originator.SetState("Test1");
        originator.ShowState();
        careTaker.AddMemento("V1.0", originator.CreateMemento());

        originator.SetState("Test2");
        originator.ShowState();
        careTaker.AddMemento("V2.0", originator.CreateMemento());

        originator.SetState("Test3");
        originator.ShowState();
        careTaker.AddMemento("V3.0", originator.CreateMemento());

        originator.SetMemento(careTaker.GetMemento("V2.0"));
        originator.ShowState();
    }
        public static void Main_Memento()
        {
            var originator = new Originator();
            var taker      = new CareTaker();

            taker.SetMemento(originator.SaveMemento());

            originator.RestoreMemento(taker.GetMemento());

            Console.ReadLine();
        }
 public static void PlayerPosition(object sender, KeyEventArgs e, PlayerObject playerObject, CareTaker careTaker)
 {
     if (e.Key == Key.P)
     {
         //save state
         careTaker.AddMemento(playerObject.SaveStateToMemento());
     }
     if (e.Key == Key.O)
     {
         //retrieve state
         playerObject.RestoreStateFromMemento(careTaker.GetMemento());
     }
 }
Exemple #7
0
    private void Start()
    {
        //Originator originator = new Originator();

        //originator.SetState("State1");
        //originator.ShowState();

        //Memento memento = originator.CreatMemento();//创建快照

        //originator.SetState("State2");
        //originator.ShowState();

        //originator.SetMemento(memento);
        //originator.ShowState();

        CareTaker careTaker = new CareTaker();    //多备忘录保存管理器

        Originator originator = new Originator(); //发起者(内部有需要保存的类成员)

        originator.SetState("State1");            //状态1
        originator.ShowState();
        careTaker.AddMemento("v1.0", originator.CreatMemento());

        originator.SetState("State2");//状态2
        originator.ShowState();
        careTaker.AddMemento("v2.0", originator.CreatMemento());

        originator.SetState("State3");//状态3
        originator.ShowState();
        careTaker.AddMemento("v3.0", originator.CreatMemento());

        originator.SetMemento(careTaker.GetMemento("v2.0"));//回到版本2
        originator.ShowState();

        originator.SetMemento(careTaker.GetMemento("v1.0"));//回到版本1
        originator.ShowState();
    }
Exemple #8
0
        public void TestMemento()
        {
            var careTaker  = new CareTaker <string>();
            var originator = new Originator <string>();

            originator.State = "State 1";
            careTaker.AddMemento(originator.SaveToMemento());

            originator.State = "State 2";
            careTaker.AddMemento(originator.SaveToMemento());

            originator.State = "State 3";
            originator.RestoreFromMemento(careTaker.GetMemento(1));

            Assert.That(originator.State, Is.EqualTo("State 2"));
        }
    private void Start()
    {
        CareTaker careTaker = new CareTaker();

        Originator originator = new Originator();

        originator.SetState("State1");
        originator.ShowState();
        careTaker.AddMemento("v1.0", originator.CreateMemento());

        originator.SetState("State2");
        originator.ShowState();
        careTaker.AddMemento("v2.0", originator.CreateMemento());

        Memento memento = careTaker.GetMemento("v1.0");

        originator.SetMemento(memento);
        originator.ShowState();
    }
Exemple #10
0
        public static void TestMemento()
        {
            Console.WriteLine("----------------------Memento----------------------");
            CareTaker careTaker = new CareTaker();
            User      user1     = new User("Alice", "+37064586339", new List <string> {
                "Dancing", "Swimming"
            });
            User user2 = new User("Bob", "+37074185239", new List <string> {
                "Boxing"
            });

            careTaker.Add(user1.CreateMemento());

            user1.UpdateState(new List <string> {
                "Sports", "Fishing"
            });
            UserMemento memento = careTaker.GetMemento();

            user1.GetMemento(memento);
            user2.GetMemento(memento);
            Console.WriteLine("---------------------------------------------------\n");
        }
Exemple #11
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (playerObject == null)
            {
                return;
            }

            var moved = false;

            if (PlayerSettings.canMove)
            {
                var calc = PlayerSettings.minPlayerSpeed * (PlayerSettings.maxPlayerSize / playerObject.size);

                var speed = calc > PlayerSettings.maxPlayerSpeed ? PlayerSettings.maxPlayerSpeed : calc;
                var mover = new PlayerMover();
                if (PlayerSettings.movingUp)
                {
                    var newCoord = playerObject.yCoord - speed;
                    if (newCoord < 0)
                    {
                        return;
                    }

                    ICommand moveUp = new MoveUp(playerObject, newCoord);
                    mover.performMove(moveUp);
                    moved = true;
                }

                if (PlayerSettings.movingDown)
                {
                    var newCoord = playerObject.yCoord + speed;
                    if (newCoord > maxY)
                    {
                        return;
                    }

                    ICommand moveDown = new MoveDown(playerObject, newCoord);
                    mover.performMove(moveDown);
                    moved = true;
                }

                if (PlayerSettings.movingLeft)
                {
                    var newCoord = playerObject.xCoord - speed;
                    if (newCoord < 0)
                    {
                        return;
                    }

                    ICommand moveLeft = new MoveLeft(playerObject, newCoord);
                    mover.performMove(moveLeft);
                    moved = true;
                }

                if (PlayerSettings.movingRight)
                {
                    var newCoord = playerObject.xCoord + speed;
                    if (newCoord > maxX)
                    {
                        return;
                    }

                    ICommand moveRight = new MoveRight(playerObject, newCoord);
                    mover.performMove(moveRight);
                    moved = true;
                }

                //Create memento only if moved.
                if (moved)
                {
                    playerObject.SetPosition(new TwoDimensionalPosition
                    {
                        X = playerObject.xCoord,
                        Y = playerObject.yCoord
                    });

                    playerPositions.AddMemento(playerObject.CreateMemento());
                }
            }
            else
            {
                timer--;
                savedPositionCount--;

                var newPos = playerPositions.GetMemento(savedPositionCount);

                if (newPos.GetSavedPosition(playerObject.Uuid) != null)
                {
                    playerObject.MoveX(newPos.GetSavedPosition(playerObject.Uuid).X);
                    moved = true;
                }

                if (newPos.GetSavedPosition(playerObject.Uuid) != null)
                {
                    playerObject.MoveY(newPos.GetSavedPosition(playerObject.Uuid).Y);
                    moved = true;
                }

                //Stop moving back either when timer ends or when out of saved positions
                if (timer <= 0 || savedPositionCount <= 0)
                {
                    PlayerSettings.canMove = true;
                }
            }

            //Send player locations to server.
            if (moved)
            {
                var content = new Dictionary <string, string>
                {
                    { "playerUuid", currentPlayer.Uuid },
                    { "xCoord", playerObject.objectControl.Location.X.ToString() },
                    { "yCoord", playerObject.objectControl.Location.Y.ToString() }
                };

                updater.PostData("api/player/move", Processor.PostDataType.Post, content);
            }

            CheckForCollision();
        }