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(); }
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(); }
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(); }
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(); }
public void SaveChange() { GameObject copy = Instantiate(gameState); SceneManager.MoveGameObjectToScene(copy, tmp); originator.SetState(gameState); careTaker.AddMemento(originator.SaveToMemento()); currentMemento++; totalMemento++; Debug.Log("Save Changed!"); Debug.Log("totalMemento!" + totalMemento); }
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()); } }
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(); }
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(); }
/// <summary> /// Raises the save button clicked event. /// </summary> /// <param name='sender'> /// Sender. /// </param> /// <param name='e'> /// E. /// </param> protected void OnSaveButtonClicked(object sender, System.EventArgs e) { originator.state = mainTextView.Buffer.Text; careTaker.AddMemento(originator.CreateMemento()); }