Ejemplo n.º 1
0
 private void Guard(TwisonPassage passage, Func <TwisonPassage, bool> condition, Func <TwisonPassage, string> error)
 {
     if (!condition(passage))
     {
         throw new TwisonValidationError(error(passage), passage);
     }
 }
Ejemplo n.º 2
0
 private void Default(TwisonPassage passage, Func <TwisonPassage, bool> condition, Action <TwisonPassage> applyDefault)
 {
     if (!condition(passage))
     {
         applyDefault(passage);
     }
 }
Ejemplo n.º 3
0
 private void OnStartRuntime(TwisonStory story, bool enterDefaultStartNode)
 {
     _active      = null;
     _activeLinks = ResolveActiveLinks();
     if (enterDefaultStartNode)
     {
         GoToPassage(story.startNodePassage, false);
     }
 }
Ejemplo n.º 4
0
        public void GoToPassage(TwisonPassage passage, bool recordHistory = true)
        {
            if (passage == null)
            {
                return;
            }

            if (_active != null)
            {
                _runtimeBehaviour.OnExitState(_active);
                if (recordHistory)
                {
                    PushHistoryEntry(_active);
                }
            }

            _runtimeBehaviour.OnEnterState(_active);
            _active      = passage;
            _activeLinks = ResolveActiveLinks();
        }
Ejemplo n.º 5
0
 private void PushHistoryEntry(TwisonPassage active)
 {
     _history.Push(active);
 }