/// <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);
 }
示例#3
0
 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);
 }
示例#4
0
 /// <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));
 }
示例#5
0
 /// <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;
     }
 }
示例#6
0
 /// <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;
     }
 }
示例#7
0
        /// <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;
            }
        }
示例#8
0
        /// <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;
            }
        }
示例#9
0
        /// <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;
            }
        }
示例#10
0
        /// <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;
            }
        }
示例#11
0
 /// <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));
 }
示例#12
0
 /// <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);
 }
示例#13
0
 /// <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);
 }
示例#14
0
 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);
 }
示例#15
0
 /// <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);
 }
示例#16
0
 /// <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 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);
 }
示例#21
0
 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));
 }
示例#22
0
 /// <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));
 }
示例#23
0
 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);
 }
示例#24
0
 /// <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);
 }