internal void ChangeFocus(Mode toThis) { currentMode = toThis; if (currentMode != null) { currentMode.Start(); } }
/// <summary> /// Start an interrupting conversation. /// </summary> void StartInterruption() { // Remember what we were talking about. if (interrupted == null) { interrupted = currentMode; } // Visually they stack up, so we take the last one first. currentMode = interruptions.Last(); currentMode.Start(); }
internal void SelectConversation(Mode c) { if (c == null) { Logger.Log("Trying to start non-existant conversation", Helpers.LogLevel.Warning); return; } // Avoid multiple starts. if (currentMode == c) { return; } // Let the old conversation deactivate any event hooks, grammars, etc. currentMode?.Stop(); currentMode = c; currentMode.Start(); }
/// <summary> /// Finish an interruption and resume normal conversation /// </summary> internal void FinishInterruption(Mode m) { lock (interruptions) { // Remove the terminating interruption from the list. interruptions.Remove(m); // Let it remove any event hooks, etc m.Stop(); // If there are any other interruptions pending, start one. // Otherwise resume the interrupted conversation. if (interruptions.Count > 0) { StartInterruption(); } else { currentMode = interrupted; interrupted = null; currentMode.Start(); } } }
internal void ChangeFocus(Mode toThis) { currentMode = toThis; currentMode?.Start(); }
/// <summary> /// Start an interrupting conversation. /// </summary> void StartInterruption() { // Remember what we were talking about. if (interrupted == null) interrupted = currentMode; // Visually they stack up, so we take the last one first. currentMode = interruptions.Last(); currentMode.Start(); }
internal void SelectConversation(Mode c) { if (c == null) { Talker.Say("Trying to start non-existant conversation", Talk.BeepType.Bad ); return; } // Avoid multiple starts. if (currentMode == c) return; // Let the old conversation deactivate any event hooks, grammars, etc. if (currentMode != null) currentMode.Stop(); currentMode = c; currentMode.Start(); }
/// <summary> /// Finish an interruption and resume normal conversation /// </summary> internal void FinishInterruption( Mode m ) { lock (interruptions) { // Remove the terminating interruption from the list. interruptions.Remove(m); // Let it remove any event hooks, etc m.Stop(); // If there are any other interruptions pending, start one. // Otherwise resume the interrupted conversation. if (interruptions.Count > 0) StartInterruption(); else { currentMode = interrupted; interrupted = null; currentMode.Start(); } } }
internal void ChangeFocus(Mode toThis) { currentMode = toThis; if (currentMode != null) currentMode.Start(); }
internal void SelectConversation(Mode c) { if (c == null) { Logger.Log("Trying to start non-existant conversation", Helpers.LogLevel.Warning); return; } // Avoid multiple starts. if (currentMode == c) return; // Let the old conversation deactivate any event hooks, grammars, etc. if (currentMode != null) currentMode.Stop(); currentMode = c; currentMode.Start(); }