/// <summary> /// Removes a Lua expression observer. To be removed, the expression, frequency, and /// notification delegate must all match. /// </summary> /// <param name='luaExpression'> /// Lua expression being watched. /// </param> /// <param name='frequency'> /// Frequency that the expression is being watched. /// </param> /// <param name='luaChangedHandler'> /// Delegate that's called when the expression changes. /// </param> public static void RemoveLuaObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { if (!hasInstance) { return; } instance.RemoveLuaObserver(luaExpression, frequency, luaChangedHandler); }
/// <summary> /// Removes all Lua expression observers for a specified frequency. /// </summary> /// <param name='frequency'> /// Frequency. /// </param> public static void RemoveAllObservers(LuaWatchFrequency frequency) { if (!hasInstance) { return; } instance.RemoveAllObservers(frequency); }
public QuestWatchItem(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { this.title = title; this.entryNumber = entryNumber; this.frequency = frequency; this.luaExpression = string.Format("return Item[\"{0}\"].Entry_{1}_State", new System.Object[] { DialogueLua.StringToTableIndex(title), entryNumber }); this.questChangedHandler = questChangedHandler; DialogueManager.AddLuaObserver(luaExpression, frequency, OnLuaChanged); }
/// <summary> /// Removes a quest state observer. To be removed, the title, frequency, and delegate must /// all match. /// </summary> /// <param name='title'> /// Title of the quest. /// </param> /// <param name='entryNumber'> /// The entry number (1...Entry Count) in the quest. /// </param> /// <param name='frequency'> /// Frequency that the quest state is being checked. /// </param> /// <param name='questChangedHandler'> /// Quest changed handler delegate. /// </param> public static void RemoveQuestStateObserver(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { foreach (var questWatchItem in questWatchList) { if (questWatchItem.Matches(title, entryNumber, frequency, questChangedHandler)) { questWatchItem.StopObserving(); } } questWatchList.RemoveAll(questWatchItem => questWatchItem.Matches(title, entryNumber, frequency, questChangedHandler)); }
/// <summary> /// Checks the observers for a specified frequency. /// </summary> /// <param name='frequency'> /// Frequency. /// </param> public void NotifyObservers(LuaWatchFrequency frequency) { switch (frequency) { case LuaWatchFrequency.EveryUpdate: everyUpdateList.NotifyObservers(); break; case LuaWatchFrequency.EveryDialogueEntry: everyDialogueEntryList.NotifyObservers(); break; case LuaWatchFrequency.EndOfConversation: endOfConversationList.NotifyObservers(); break; default: Debug.LogError(string.Format("{0}: Internal error - unexpected Lua watch frequency {1}", new System.Object[] { DialogueDebug.Prefix, frequency })); break; } }
/// <summary> /// Adds a Lua observer. /// </summary> /// <param name='luaExpression'> /// Lua expression to observe. /// </param> /// <param name='frequency'> /// Frequency to check. /// </param> /// <param name='luaChangedHandler'> /// Delegate to call when the expression changes. /// </param> public void AddObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { switch (frequency) { case LuaWatchFrequency.EveryUpdate: everyUpdateList.AddObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EveryDialogueEntry: everyDialogueEntryList.AddObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EndOfConversation: endOfConversationList.AddObserver(luaExpression, luaChangedHandler); break; default: Debug.LogError(string.Format("{0}: Internal error - unexpected Lua watch frequency {1}", new System.Object[] { DialogueDebug.Prefix, frequency })); break; } }
/// <summary> /// Removes a Lua observer. /// </summary> /// <param name='luaExpression'> /// Lua expression. /// </param> /// <param name='frequency'> /// Frequency. /// </param> /// <param name='luaChangedHandler'> /// Lua changed handler. /// </param> public void RemoveObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { switch (frequency) { case LuaWatchFrequency.EveryUpdate: everyUpdateList.RemoveObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EveryDialogueEntry: everyDialogueEntryList.RemoveObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EndOfConversation: endOfConversationList.RemoveObserver(luaExpression, luaChangedHandler); break; default: Debug.LogError(string.Format("{0}: Internal error - unexpected Lua watch frequency {1}", new System.Object[] { DialogueDebug.Prefix, frequency })); break; } }
/// <summary> /// Removes a Lua observer. /// </summary> /// <param name='luaExpression'> /// Lua expression. /// </param> /// <param name='frequency'> /// Frequency. /// </param> /// <param name='luaChangedHandler'> /// Lua changed handler. /// </param> public void RemoveObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { switch (frequency) { case LuaWatchFrequency.EveryUpdate: m_everyUpdateList.RemoveObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EveryDialogueEntry: m_everyDialogueEntryList.RemoveObserver(luaExpression, luaChangedHandler); break; case LuaWatchFrequency.EndOfConversation: m_endOfConversationList.RemoveObserver(luaExpression, luaChangedHandler); break; default: Debug.LogError("Dialogue System: Internal error - unexpected Lua watch frequency " + frequency); break; } }
/// <summary> /// Checks the observers for a specified frequency. /// </summary> /// <param name='frequency'> /// Frequency. /// </param> public void NotifyObservers(LuaWatchFrequency frequency) { switch (frequency) { case LuaWatchFrequency.EveryUpdate: m_everyUpdateList.NotifyObservers(); break; case LuaWatchFrequency.EveryDialogueEntry: m_everyDialogueEntryList.NotifyObservers(); break; case LuaWatchFrequency.EndOfConversation: m_endOfConversationList.NotifyObservers(); break; default: Debug.LogError("Dialogue System: Internal error - unexpected Lua watch frequency " + frequency); break; } }
/// <summary> /// Adds a quest state observer. /// </summary> /// <param name='title'> /// Title of the quest. /// </param> /// <param name='entryNumber'> /// The entry number (1...Entry Count) in the quest. /// </param> /// <param name='frequency'> /// Frequency to check the quest state. /// </param> /// <param name='questChangedHandler'> /// Delegate to call when the quest state changes. This should be in the form: /// <code>void MyDelegate(string title, QuestState newState) {...}</code> /// </param> public static void AddQuestStateObserver(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { questWatchList.Add(new QuestWatchItem(title, entryNumber, frequency, questChangedHandler)); }
/// <summary> /// Removes all Lua expression observers for a specified frequency. /// </summary> /// <param name='frequency'> /// Frequency. /// </param> public static void RemoveAllObservers(LuaWatchFrequency frequency) { Instance.RemoveAllObservers(frequency); }
/// <summary> /// Adds a Lua expression observer. /// </summary> /// <param name='luaExpression'> /// Lua expression to watch. /// </param> /// <param name='frequency'> /// Frequency to check the expression. /// </param> /// <param name='luaChangedHandler'> /// Delegate to call when the expression changes. This should be in the form: /// <code>void MyDelegate(LuaWatchItem luaWatchItem, Lua.Result newValue) {...}</code> /// </param> public static void AddLuaObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { Instance.AddLuaObserver(luaExpression, frequency, luaChangedHandler); }
public bool Matches(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { return string.Equals(title, this.title) && (entryNumber == this.entryNumber) && (frequency == this.frequency) && (questChangedHandler == this.questChangedHandler); }
/// <summary> /// Removes a Lua expression observer. To be removed, the expression, frequency, and /// notification delegate must all match. /// </summary> /// <param name='luaExpression'> /// Lua expression being watched. /// </param> /// <param name='frequency'> /// Frequency that the expression is being watched. /// </param> /// <param name='luaChangedHandler'> /// Delegate that's called when the expression changes. /// </param> public void RemoveLuaObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { luaWatchers.RemoveObserver(luaExpression, frequency, luaChangedHandler); }
/// <summary> /// Removes all Lua expression observers for a specified frequency. /// </summary> /// <param name='frequency'> /// Frequency. /// </param> public void RemoveAllObservers(LuaWatchFrequency frequency) { luaWatchers.RemoveAllObservers(frequency); }
/// <summary> /// Adds a Lua expression observer. /// </summary> /// <param name='luaExpression'> /// Lua expression to watch. /// </param> /// <param name='frequency'> /// Frequency to check the expression. /// </param> /// <param name='luaChangedHandler'> /// Delegate to call when the expression changes. This should be in the form: /// <code>void MyDelegate(LuaWatchItem luaWatchItem, Lua.Result newValue) {...}</code> /// </param> public void AddLuaObserver(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { StartCoroutine(AddLuaObserverAfterStart(luaExpression, frequency, luaChangedHandler)); }
private IEnumerator AddLuaObserverAfterStart(string luaExpression, LuaWatchFrequency frequency, LuaChangedDelegate luaChangedHandler) { int MaxFramesToWait = 10; int framesWaited = 0; while (!hasStarted && (framesWaited < MaxFramesToWait)) { framesWaited++; yield return null; } yield return null; luaWatchers.AddObserver(luaExpression, frequency, luaChangedHandler); }
public bool Matches(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { return(string.Equals(title, this.title) && (entryNumber == this.entryNumber) && (frequency == this.frequency) && (questChangedHandler == this.questChangedHandler)); }
/// <summary> /// Removes a quest state observer. To be removed, the title, frequency, and delegate must /// all match. /// </summary> /// <param name='title'> /// Title of the quest. /// </param> /// <param name='entryNumber'> /// The entry number (1...Entry Count) in the quest. /// </param> /// <param name='frequency'> /// Frequency that the quest state is being checked. /// </param> /// <param name='questChangedHandler'> /// Quest changed handler delegate. /// </param> public static void RemoveQuestStateObserver(string title, int entryNumber, LuaWatchFrequency frequency, QuestChangedDelegate questChangedHandler) { foreach (var questWatchItem in questWatchList) { if (questWatchItem.Matches(title, entryNumber, frequency, questChangedHandler)) questWatchItem.StopObserving(); } questWatchList.RemoveAll(questWatchItem => questWatchItem.Matches(title, entryNumber, frequency, questChangedHandler)); }