private bool testCondition(GameData.DescCondition c) { bool flag; if (c == null) { return(true); } object obj = this.castItemValue(c.key); if (!c.values.GetType().IsArray) { return(c.values.Equals(obj) == c.match); } IEnumerator enumerator = ((IEnumerable)c.values).GetEnumerator(); try { while (enumerator.MoveNext()) { if (!enumerator.Current.Equals(obj)) { continue; } flag = c.match; return(flag); } return(!c.match); } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } return(flag); }
public static void export(string file) { SortedList <string, SortedList <string, List <string> > > strs = new SortedList <string, SortedList <string, List <string> > >(); foreach (KeyValuePair <itemType, SortedList <string, GameData.Desc> > keyValuePair in GameData.desc) { SortedList <string, List <string> > strs1 = new SortedList <string, List <string> >(); strs.Add(keyValuePair.Key.ToString(), strs1); foreach (KeyValuePair <string, GameData.Desc> value in keyValuePair.Value) { string str = value.Value.category; string str1 = string.Concat(value.Key, ": "); while (str1.Length < 22) { str1 = string.Concat(str1, " "); } if (value.Value.defaultValue is string) { str1 = string.Concat(str1, "\"", value.Value.defaultValue.ToString(), "\" "); if ((value.Value.flags & 16) > 0) { str1 = string.Concat(str1, "multiline "); } } else if (value.Value.defaultValue is GameData.TripleInt) { GameData.TripleInt tripleInt = value.Value.defaultValue as GameData.TripleInt; str1 = string.Concat(str1, value.Value.list.ToString(), " "); if (value.Value.flags == 1) { str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ") " }); } else if (value.Value.flags == 2) { str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ", ", tripleInt.v1, ") " }); } else if (value.Value.flags == 3) { str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ", ", tripleInt.v1, ",", tripleInt.v2, ") " }); } str = ""; } else if (value.Value.defaultValue is GameData.Instance) { str1 = string.Concat(str1, value.Value.list.ToString(), " (0,0,0) (1,0,0,0) "); str = ""; } else if (value.Value.defaultValue is Color) { Color color = (Color)value.Value.defaultValue; int argb = color.ToArgb() & 16777215; str1 = string.Concat(str1, "#", argb.ToString("X").PadLeft(6, '0'), " "); } else if (value.Value.defaultValue is GameData.File) { if (!value.Value.mask.EndsWith("*.dds")) { str1 = (value.Value.mask != "Nvidia dds|*.dds|tga|*.tga|jpg|*.jpg|png|*.png|bmp|*.bmp" ? string.Concat(str1, "\"", value.Value.mask, "\" ") : string.Concat(str1, "TEXTURE_ANY ")); } else { str1 = string.Concat(str1, "TEXTURE_DDS "); } } else if (value.Value.defaultValue == null) { str1 = string.Concat(str1, "null "); } else if (value.Value.defaultValue.GetType().IsEnum) { str1 = string.Concat(new string[] { str1, value.Value.defaultValue.GetType().Name, ".", value.Value.defaultValue.ToString(), " " }); if ((value.Value.flags & 256) > 0) { str1 = string.Concat(str1, "bitset "); } } else if (value.Value.defaultValue is float || value.Value.defaultValue is double) { string str2 = value.Value.defaultValue.ToString(); if (!str2.Contains(".")) { str2 = string.Concat(str2, ".0"); } str1 = string.Concat(str1, str2, " "); } else { str1 = string.Concat(str1, value.Value.defaultValue.ToString(), " "); } if (str.Length > 0 && value.Value.limit == 9999) { str1 = string.Concat(str1, "looped "); } if (value.Value.description.Length > 0) { str1 = string.Concat(str1, "\"", value.Value.description.Replace("\n", "\\n"), "\""); } if (!strs1.ContainsKey(str)) { strs1.Add(str, new List <string>()); } strs1[str].Add(str1); if (value.Value.condition == null) { continue; } GameData.DescCondition descCondition = value.Value.condition; string str3 = ""; if (!descCondition.values.GetType().IsArray) { if (descCondition.values.GetType().IsEnum) { str3 = string.Concat(descCondition.values.GetType().Name, "."); } str3 = string.Concat(str3, descCondition.values.ToString()); } else { List <string> strs2 = new List <string>(); foreach (object obj in (IEnumerable)descCondition.values) { strs2.Add(string.Concat((obj.GetType().IsEnum ? string.Concat(obj.GetType().Name, ".") : ""), obj.ToString())); } str3 = string.Join(" or ", strs2); } if (descCondition.values.GetType().IsEnum) { string.Concat(descCondition.values.GetType().Name, "."); } if (!strs1.ContainsKey("CONDITIONS")) { strs1.Add("CONDITIONS", new List <string>()); } List <string> item = strs1["CONDITIONS"]; string[] key = new string[] { "condition \"", value.Key, "\" if \"", descCondition.key, "\"", null, null }; key[5] = (descCondition.match ? " is " : " not "); key[6] = str3; item.Add(string.Concat(key)); } } bool flag = true; Label0: while (flag) { flag = false; foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair1 in strs) { foreach (KeyValuePair <string, List <string> > value1 in keyValuePair1.Value) { foreach (string value2 in value1.Value) { foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair2 in strs) { if (!(keyValuePair1.Key != keyValuePair2.Key) || !keyValuePair2.Value.ContainsKey(value1.Key) || !keyValuePair2.Value[value1.Key].Contains(value2)) { continue; } string str4 = string.Concat(keyValuePair1.Key, ",", keyValuePair2.Key); if (!strs.ContainsKey(str4)) { strs.Add(str4, new SortedList <string, List <string> >()); } if (!strs[str4].ContainsKey(value1.Key)) { strs[str4].Add(value1.Key, new List <string>()); } strs[str4][value1.Key].Add(value2); keyValuePair2.Value[value1.Key].Remove(value2); value1.Value.Remove(value2); if (keyValuePair2.Value[value1.Key].Count == 0) { keyValuePair2.Value.Remove(value1.Key); } if (value1.Value.Count == 0) { keyValuePair1.Value.Remove(value1.Key); } flag = true; goto Label3; } Label3: if (!flag) { continue; } goto Label2; } Label2: if (!flag) { continue; } goto Label1; } Label1: if (!flag) { continue; } goto Label0; } } string str5 = ""; foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair3 in strs) { if (keyValuePair3.Value.Count == 0) { continue; } str5 = string.Concat(str5, "[", keyValuePair3.Key, "]\n"); foreach (KeyValuePair <string, List <string> > value3 in keyValuePair3.Value) { if (value3.Key == "CONDITIONS") { continue; } if (value3.Key.Length > 0 && value3.Value.Count > 0) { str5 = string.Concat(str5, value3.Key, ":\n"); } foreach (string value4 in value3.Value) { str5 = string.Concat(str5, value4, "\n"); } } if (!keyValuePair3.Value.ContainsKey("CONDITIONS") || keyValuePair3.Value["CONDITIONS"].Count <= 0) { continue; } str5 = string.Concat(str5, "CONDITIONS:\n"); foreach (string item1 in keyValuePair3.Value["CONDITIONS"]) { str5 = string.Concat(str5, item1, "\n"); } } FileStream fileStream = File.Open(file, FileMode.Create); byte[] bytes = Encoding.ASCII.GetBytes(str5); fileStream.Write(bytes, 0, (int)bytes.Length); fileStream.Close(); }