private void Guard(TwisonPassage passage, Func <TwisonPassage, bool> condition, Func <TwisonPassage, string> error) { if (!condition(passage)) { throw new TwisonValidationError(error(passage), passage); } }
private void Default(TwisonPassage passage, Func <TwisonPassage, bool> condition, Action <TwisonPassage> applyDefault) { if (!condition(passage)) { applyDefault(passage); } }
private void OnStartRuntime(TwisonStory story, bool enterDefaultStartNode) { _active = null; _activeLinks = ResolveActiveLinks(); if (enterDefaultStartNode) { GoToPassage(story.startNodePassage, false); } }
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(); }
private void PushHistoryEntry(TwisonPassage active) { _history.Push(active); }