예제 #1
0
        /// <summary>
        /// Restores a saved state.
        /// </summary>
        /// <param name="saveState">
        /// The save state.
        /// </param>
        /// <returns>
        /// A value which indicates whether the restore was successful.
        /// </returns>
        protected bool RestoreState(ZmachineSaveState saveState)
        {
            if (saveState.Memory == null || saveState.CallStack == null)
            {
                return false;
            }

            this.Restart();
            this.Memory.Restore(saveState.Memory);
            this.CallStack.Restore(saveState.CallStack);
            this.DiscoverCapabilities();
            this.State = MachineState.Running;
            return true;
        }
예제 #2
0
        /// <summary>
        /// Restores a saved state.
        /// </summary>
        /// <param name="saveState">
        /// The saved state to restore.
        /// </param>
        /// <returns>
        /// A value indicating whether the restore succeeded.
        /// </returns>
        bool IZmachine.Restore(ZmachineSaveState saveState)
        {
            lock (this.Memory)
            {
                if (this.RestoreState(saveState))
                {
                    this.FinishRestoreOperation(true);
                    return true;
                }

                return false;
            }
        }
예제 #3
0
 /// <summary>
 /// Determines whether two save states are equal.
 /// </summary>
 /// <param name="zmachineSaveState">
 /// The save state to compare.
 /// </param>
 /// <returns>
 /// A value indicating whether two save states are equal.
 /// </returns>
 public bool Equals(ZmachineSaveState zmachineSaveState)
 {
     return this.memory == zmachineSaveState.memory && this.callStack == zmachineSaveState.callStack;
 }