Example #1
0
 public bool Remove(string name, bool isAbsoluteName = false)
 {
     if (name.NullOrEmpty())
     {
         return(false);
     }
     if (!isAbsoluteName && !prefix.NullOrEmpty())
     {
         name = prefix + "/" + name;
     }
     name = QuestGenUtility.NormalizeVarPath(name);
     return(vars.Remove(name));
 }
Example #2
0
 public bool Exists(string name, bool isAbsoluteName = false)
 {
     if (name.NullOrEmpty())
     {
         return(false);
     }
     if (!isAbsoluteName && !prefix.NullOrEmpty())
     {
         name = prefix + "/" + name;
     }
     name = QuestGenUtility.NormalizeVarPath(name);
     if (allowNonPrefixedLookup)
     {
         name = TryResolveFirstAvailableName(name);
     }
     return(vars.ContainsKey(name));
 }
Example #3
0
 public bool TryGet <T>(string name, out T var, bool isAbsoluteName = false)
 {
     if (name.NullOrEmpty())
     {
         var = default(T);
         return(false);
     }
     if (!isAbsoluteName && !prefix.NullOrEmpty())
     {
         name = prefix + "/" + name;
     }
     name = QuestGenUtility.NormalizeVarPath(name);
     if (allowNonPrefixedLookup)
     {
         name = TryResolveFirstAvailableName(name);
     }
     if (!vars.TryGetValue(name, out object value))
     {
         var = default(T);
         return(false);
     }
     if (value == null)
     {
         var = default(T);
         return(true);
     }
     if (value is T)
     {
         var = (T)value;
         return(true);
     }
     if (ConvertHelper.CanConvert <T>(value))
     {
         var = ConvertHelper.Convert <T>(value);
         return(true);
     }
     Log.Error("Could not convert slate variable \"" + name + "\" (" + value.GetType().Name + ") to " + typeof(T).Name);
     var = default(T);
     return(false);
 }
Example #4
0
        private string TryResolveFirstAvailableName(string nameWithPrefix)
        {
            if (nameWithPrefix == null)
            {
                return(null);
            }
            nameWithPrefix = QuestGenUtility.NormalizeVarPath(nameWithPrefix);
            if (vars.ContainsKey(nameWithPrefix))
            {
                return(nameWithPrefix);
            }
            int num = nameWithPrefix.LastIndexOf('/');

            if (num < 0)
            {
                return(nameWithPrefix);
            }
            string text  = nameWithPrefix.Substring(num + 1);
            string text2 = nameWithPrefix.Substring(0, num);

            while (true)
            {
                string text3 = text;
                if (!text2.NullOrEmpty())
                {
                    text3 = text2 + "/" + text3;
                }
                if (vars.ContainsKey(text3))
                {
                    return(text3);
                }
                if (text2.NullOrEmpty())
                {
                    break;
                }
                int num2 = text2.LastIndexOf('/');
                text2 = ((num2 < 0) ? "" : text2.Substring(0, num2));
            }
            return(nameWithPrefix);
        }
Example #5
0
        public static void AddTextRequest(string localKeyword, Action <string> setter, List <Rule> extraLocalRules)
        {
            if (!working)
            {
                Log.Error("Tried to add a text request while not resolving any quest.");
                return;
            }
            QuestTextRequest questTextRequest = new QuestTextRequest();

            questTextRequest.keyword = localKeyword;
            if (!slate.CurrentPrefix.NullOrEmpty())
            {
                questTextRequest.keyword = slate.CurrentPrefix + "/" + questTextRequest.keyword;
            }
            questTextRequest.keyword = QuestGenUtility.NormalizeVarPath(questTextRequest.keyword);
            questTextRequest.setter  = setter;
            if (extraLocalRules != null)
            {
                questTextRequest.extraRules = QuestGenUtility.AppendCurrentPrefix(extraLocalRules);
            }
            textRequests.Add(questTextRequest);
        }
Example #6
0
        public void Set <T>(string name, T var, bool isAbsoluteName = false)
        {
            if (name.NullOrEmpty())
            {
                Log.Error("Tried to set a variable with null name. var=" + var.ToStringSafe());
                return;
            }
            if (!isAbsoluteName && !prefix.NullOrEmpty())
            {
                name = prefix + "/" + name;
            }
            name = QuestGenUtility.NormalizeVarPath(name);
            ISlateRef slateRef = var as ISlateRef;

            if (slateRef != null)
            {
                slateRef.TryGetConvertedValue(this, out object value);
                vars[name] = value;
            }
            else
            {
                vars[name] = var;
            }
        }