public List <ReligionGroup> LoadReligions(string folder, string[] except = null) { var fileNames = Directory.GetFiles(Path.Combine(folder, "common", "religions")); if (except != null) { fileNames = fileNames.Where(x => !except.Any(y => x.EndsWith(y + ".json"))).ToArray(); } var religionGroups = new List <ReligionGroup>(); foreach (var fileName in fileNames) { var obj = LoadObject(fileName); var religionGroupProps = obj.Properties().Where(x => x.Name != "_filename"); foreach (var religionGroupProp in religionGroupProps) { var religionGroupValue = (JObject)religionGroupProp.Value; var religionProps = religionGroupValue.Properties() .Where(x => !ReligionGroupPropNameIgnore.Contains(x.Name)); var religions = religionProps.Select(x => { var religionValue = (JObject)x.Value; return(new Religion { Name = x.Name, Color = ((JArray)religionValue["color"]).Select(x => x.Value <string>()).ToList(), Country = ((JObject)religionValue["country"]).Properties().ToDictionary(x => x.Name, x => x.Value.Value <string>()), CountryAsSecondary = ((JObject)religionValue["country_as_secondary"])?.Properties()?.ToDictionary(x => x.Name, x => x.Value.Value <string>()), Province = ((JObject)religionValue["province"])?.Properties()?.ToDictionary(x => x.Name, x => x.Value.Value <string>()), Icon = religionValue.Value <string>("icon") }); }).ToList(); var religionGroup = new ReligionGroup { Name = religionGroupProp.Name, DefenderOfFaith = religionGroupValue.Value <string>("defender_of_faith"), CanFormPersonalUnions = religionGroupValue.Value <string>("can_form_personal_unions"), CenterOfReligion = religionGroupValue.Value <string>("center_of_religion"), Religions = religions, }; religionGroups.Add(religionGroup); } } return(religionGroups); }
static public CW_Event FromParsedItem(Parser.Item root) { CW_Event ev = new CW_Event((EventType)Enum.Parse(typeof(EventType), root.name, true)); foreach (Parser.Item item in root.GetChilderen()) { switch (item.name.ToLower()) { case "id": string id = item.GetString(); string[] x = id.Split('.'); if (x.Length == 2) { ev.name_space = x[0]; ev.id = int.Parse(x[1]); } else { ev.name_space = null; ev.id = int.Parse(id); } break; // Flags case "title": ev.title.Add(item); break; case "desc": ev.descriptions.Add(new TriggeredDescription(item)); break; case "picture": ev.defaultPicture = GFX_Link.FromTag(item.GetString()); break; case "border": ev.border = GFX_Link.FromTag(item.GetString()); break; case "major": ev.major = item.GetBool(); break; case "is_friendly": ev.is_friendly = item.GetBool(); break; case "is_hostile": ev.is_hostile = item.GetBool(); break; case "is_triggered_only": ev.is_triggered_only = item.GetBool(); break; case "triggered_from_code": ev.triggered_from_code = item.GetBool(); break; case "hide_from": ev.hide_from = item.GetBool(); break; case "hide_new": ev.hide_new = item.GetBool(); break; case "hide_window": ev.hide_window = item.GetBool(); break; case "show_root": ev.show_root = item.GetBool(); break; case "show_from_from": ev.show_from_from = item.GetBool(); break; case "show_from_from_from": ev.show_from_from_from = item.GetBool(); break; case "sound": /*Find soound file or something*/ break; case "notification": ev.notification = item.GetBool(); break; case "portrait": ev.portrait = item.GetString(); break; case "offmap": ev.offmap = item.GetEnum <OffMapModes>(); break; case "window": ev.window = item.GetString(); break; case "background": ev.background = GFX_Link.FromTag(item.GetString()); break; case "quest_target": ev.quest_target = item.GetString(); break; // Pre triggers case "only_playable": ev.only_playable = item.GetBool(); break; case "is_part_of_plot": ev.is_part_of_plot = item.GetBool(); break; case "only_rulers": ev.only_rulers = item.GetBool(); break; case "religion": ev.religion = Religion.FromName(item.GetString()); break; case "religion_group": ev.religion_group = ReligionGroup.FromName(item.GetString()); break; case "min_age": ev.min_age = (int)item.GetNumber(); break; case "max_age": ev.max_age = (int)item.GetNumber(); break; case "only_independent": ev.only_independent = item.GetBool(); break; case "only_men": ev.only_men = item.GetBool(); break; case "only_women": ev.only_women = item.GetBool(); break; case "only_capable": ev.only_capable = item.GetBool(); break; case "capable_only": ev.only_capable = item.GetBool(); break; case "lacks_dlc": ev.lacks_dlc.Add(item.GetString()); break; case "has_dlc": ev.has_dlc.Add(item.GetString()); break; case "friends": ev.friends = item.GetBool(); break; case "rivals": ev.rivals = item.GetBool(); break; case "prisoner": ev.prisoner = item.GetBool(); break; case "ai": ev.ai = item.GetBool(); break; case "is_patrician": ev.is_patrician = item.GetBool(); break; case "is_married": ev.is_married = item.GetBool(); break; case "is_sick": ev.is_sick = item.GetBool(); break; case "has_character_flag": ev.has_character_flag = item.GetString(); break; case "has_global_flag": ev.has_global_flag = item.GetString(); break; case "has_flag": ev.has_flag = item.GetString(); break; case "war": ev.war = item.GetBool(); break; case "culture": ev.culture = Culture.FromName(item.GetString()); break; case "culture_group": ev.culture_group = CultureGroup.FromName(item.GetString()); break; case "is_in_society": ev.is_in_society = item.GetBool(); break; // End of pre triggers case "trigger": ev.trigger = new Trigger(item); break; case "major_trigger": ev.major_trigger = new Trigger(item); break; case "mean_time_to_happen": ev.mtth = new MeanTimeToHappen(item); break; case "weight_multiplier": ev.weight_multiplier = new WieghtMultiplier(item); break; case "immediate": ev.immediate = new Command(item); break; case "fail_trigger_effect": ev.fail_trigger_effect = new Command(item); break; case "option": ev.options.Add(new Option(item)); break; case "after": ev.after = new Command(item); break; default: throw new Parser.Item.BadModException(item, "Did not recognise tag " + item.name); } } return(ev); }