private static string ReplaceCounterTag(string s, CounterTagType tagType) { if (string.IsNullOrEmpty(s) || currentQuest == null) { return(s); } var counterName = (tagType == CounterTagType.Current || tagType == CounterTagType.AsTime) ? s.Substring(2, s.Length - 3).Trim() : s.Substring(3, s.Length - 4).Trim(); // Look for counter in current quest: var counter = currentQuest.GetCounter(counterName); if (counter != null) { return(GetCounterTagValue(counter, tagType)); } // Otherwise look for quest by ID: var index = counterName.IndexOf(CounterTagQuestNameSeparator); if (index > 0) { var questName = counterName.Substring(0, index); counterName = counterName.Substring(index + 1); var quest = QuestMachine.GetQuestInstance(questName); counter = (quest != null) ? quest.GetCounter(counterName) : null; if (counter != null) { return(GetCounterTagValue(counter, tagType)); } } return(s); }
private static string GetCounterTagValue(QuestCounter counter, CounterTagType tagType) { if (counter == null) { return(string.Empty); } switch (tagType) { default: case CounterTagType.Current: return(counter.currentValue.ToString()); case CounterTagType.Min: return(counter.minValue.ToString()); case CounterTagType.Max: return(counter.maxValue.ToString()); case CounterTagType.AsTime: return(SecondsToTimeString(counter.currentValue)); } }