public void Restore(IMemento memento) { if (!(memento is ConcreteMemento)) { throw new Exception("Unknown memento class " + memento.ToString()); } this._state = memento.GetState(); Console.Write($"Originator: My state has changed to: {_state}"); }
private void UndoConfig_OnClickCallback() { caretaker.Undo(); ConcreteMemento memento = caretaker.getCurrent() as ConcreteMemento; if (memento != null) { config = memento.GetState(); } UpdateTank(); }
public override void Load() { config = new TankConfig(0, 0, 0, 0); originator = new Originator(config); caretaker = new Caretaker(originator); caretaker.Backup(); logo = CreateEntity(new Sprite(Image.FromFile("../../res/logo.png"), new Vector2(380, 80), new Vector2(500, 250))) as Sprite; UpdateTank(); //Color edits colorDown = CreateEntity(new Button(300, 260, 15, 15, null, "<")) as Button; colorUp = CreateEntity(new Button(400, 260, 15, 15, null, ">")) as Button; colorDown.OnClickCallback += ColorDown_OnClickCallback; colorUp.OnClickCallback += ColorUp_OnClickCallback; //Chassis edits chassisDown = CreateEntity(new Button(300, 300, 15, 15, null, "<")) as Button; chassisUp = CreateEntity(new Button(400, 300, 15, 15, null, ">")) as Button; chassisDown.OnClickCallback += ChassisDown_OnClickCallback; chassisUp.OnClickCallback += ChassisUp_OnClickCallback; //Turret edits turretDown = CreateEntity(new Button(300, 280, 15, 15, null, "<")) as Button; turretUp = CreateEntity(new Button(400, 280, 15, 15, null, ">")) as Button; turretDown.OnClickCallback += TurretDown_OnClickCallback; turretUp.OnClickCallback += TurretUp_OnClickCallback; //Tracks edits tracksDown = CreateEntity(new Button(300, 320, 15, 15, null, "<")) as Button; tracksUp = CreateEntity(new Button(400, 320, 15, 15, null, ">")) as Button; tracksDown.OnClickCallback += TracksDown_OnClickCallback; tracksUp.OnClickCallback += TracksUp_OnClickCallback; saveConfig = CreateEntity(new Button(300, 360, 120, 15, null, "Save tank configuration")) as Button; saveConfig.OnClickCallback += SaveConfig_OnClickCallback; undoConfig = CreateEntity(new Button(300, 390, 120, 15, null, "Undo tank configuration")) as Button; undoConfig.OnClickCallback += UndoConfig_OnClickCallback; showHistory = CreateEntity(new Button(300, 420, 120, 15, null, "Show config history")) as Button; showHistory.OnClickCallback += ShowHistory_OnClickCallback;; backButton = CreateEntity(new Button(10, 400, 40, 15, null, "BACK")) as Button; backButton.OnClickCallback += BackButton_OnClickCallback; }
public Originator(TankConfig state) { this._state = state; Console.WriteLine("Originator: My initial state is: " + state.ToString()); }
public ConcreteMemento(TankConfig state) { this._state = state; this._date = DateTime.Now; }