示例#1
0
        public List <CultureGroup> LoadCultures(string folder, string[] except = null)
        {
            var fileNames = Directory.GetFiles(Path.Combine(folder, "common", "cultures"));

            if (except != null)
            {
                fileNames = fileNames.Where(x => !except.Any(y => x.EndsWith(y + ".json"))).ToArray();
            }
            var cultureGroups = new List <CultureGroup>();

            foreach (var fileName in fileNames)
            {
                var obj = LoadObject(fileName);

                var cultureGroupProps = obj.Properties().Where(x => x.Name != "_filename");
                foreach (var cultureGroupProp in cultureGroupProps)
                {
                    var cultureProps = ((JObject)cultureGroupProp.Value).Properties().Where(x => x.Name != "graphical_culture" && x.Name != "second_graphical_culture");
                    var cultureGroup = new CultureGroup
                    {
                        Name     = cultureGroupProp.Name,
                        Cultures = cultureProps.Select(x => new Culture
                        {
                            Name    = x.Name,
                            Primary = x.Value.Value <string>("primary"),
                        }).ToList()
                    };
                    cultureGroups.Add(cultureGroup);
                }
            }
            return(cultureGroups);
        }
示例#2
0
        private void MakeCultures(CultureGroup group, int culCount, CultureGroup baseGroup)
        {
            Log("Generating Cultures");
            SendMessage("Generating Cultures");

            Province        prov;
            List <Province> provsOwnedByCulture;
            List <Province> provs = new List <Province>((IEnumerable <Province>)group.CustomFlags["provs"]);
            Culture         baseCul, thisCul;
            Title           county;
            List <Culture>  baseCuls = baseGroup.Cultures.Values.ToList();

            int nameGenGroup = (int)group.CustomFlags["name_group"];
            int genOffset    = m_options.Random.Next(256);

            for (int i = 0; i < culCount; i++)
            {
                if (provs.Count == 0)
                {
                    break;
                }

                baseCul = baseCuls.RandomItem(m_options.Random);

                do
                {
                    prov = provs.RandomItem(m_options.Random);
                    provs.Remove(prov);
                } while(!m_options.Data.Localisations.ContainsKey(prov.Title + "_adj"));

                county = m_options.Data.Counties[prov.Title];
                provsOwnedByCulture = new List <Province>();
                provsOwnedByCulture.Add(prov);

                Log("Province: " + prov.Title);

                string locString = m_options.Data.Localisations[prov.Title + "_adj"];
                SendMessage("Generating Culture " + locString.Split(';')[1]);

                thisCul = CopyCulture(county, baseCul);
                thisCul.CustomFlags["baseCul"] = baseCul;
                thisCul.CustomFlags["provs"]   = provsOwnedByCulture;

                GenerateNewCultureData(thisCul, nameGenGroup, genOffset + i);

                if (!prov.CustomFlags.ContainsKey("old_cul"))
                {
                    prov.CustomFlags["old_cul"] = prov.Culture;
                }
                prov.CustomFlags["owningCulture"] = thisCul;
                prov.Culture = thisCul.Name;

                thisCul.Group = group;

                group.Cultures.Add(thisCul.Name, thisCul);
            }
        }
示例#3
0
        /// <summary>
        /// Converts a <see cref="CultureGroupEntity"/> data object into a <see cref="CultureGroup"/> domain model.
        /// </summary>
        /// <returns>The <see cref="CultureGroup"/> domain model.</returns>
        /// <param name="dataObject">The <see cref="CultureGroupEntity"/> data object.</param>
        internal static CultureGroup ToDomainModel(this CultureGroupEntity dataObject)
        {
            CultureGroup culture = new CultureGroup
            {
                Id = dataObject.Id,
                GraphicalCultures = dataObject.GraphicalCultures,
                Cultures          = dataObject.Cultures.ToDomainModels()
            };

            return(culture);
        }
示例#4
0
        private CultureGroup CopyCultureGroup(Title title, CultureGroup oldGroup)
        {
            CultureGroup gc = new CultureGroup();

            gc.CustomFlags["from_title"] = title;
            gc.Name = title.TitleID.Substring(2) + "_grp";

            gc.GraphicalCulture = oldGroup.GraphicalCulture;
            gc.MiscOptions      = oldGroup.MiscOptions;
            gc.Cultures         = new Dictionary <string, Culture>();

            return(gc);
        }
        private void GenerateCultures()
        {
            AddLogEntry("Began generating cultures...");
            int colorRange = 32;
            int n          = Random.Next(Settings.CultureGroupsMin, Settings.CultureGroupsMax);

            CultureGroups = new List <CultureGroup>(n);
            Cultures      = new List <Culture>(Settings.CultureGroupsMax);
            for (int i = 0; i < n; i++)
            {
                CultureGroup group = new CultureGroup();
                group.BaseColor = Color.FromArgb(
                    colorRange + Random.Next(256 - colorRange * 2),
                    colorRange + Random.Next(256 - colorRange * 2),
                    colorRange + Random.Next(256 - colorRange * 2));
                do
                {
                    group.Origin = LandProvinces[Random.Next(LandProvinces.Count)];
                }while (group.Origin.CultureGroup != null);
                group.Origin.CultureGroup = group;
                AddCulture(group); // Guarantee at least one culture per group.
                CultureGroups.Add(group);
            }

            n  = Random.Next(Settings.CulturesMin, Settings.CulturesMax);
            n -= Cultures.Count;
            for (int i = 0; i < n; i++)
            {
                CultureGroup group = CultureGroups[Random.Next(CultureGroups.Count)];
                AddCulture(group);
            }


            foreach (Province province in LandProvinces)
            {
                Culture closestCulture  = null;
                int     closestDistance = int.MaxValue;
                foreach (Culture culture in Cultures)
                {
                    int testDistance = culture.Origin.DistanceSquared(province.Position);
                    if (testDistance < closestDistance)
                    {
                        closestCulture  = culture;
                        closestDistance = testDistance;
                    }
                }
                province.Culture = closestCulture;
            }

            AddLogEntry("Finished generating cultures.");
        }
示例#6
0
        public bool TryGetCultureGroup(string key, out CultureGroup culGroup)
        {
            bool found = false;

            if (m_useCustomCulture)
            {
                found = m_customCultureGroups.TryGetValue(key, out culGroup);
            }

            if (!found)
            {
                found = CultureGroups.TryGetValue(key, out culGroup);
            }

            culGroup = null;
            return(found);
        }
示例#7
0
        private void WriteCultureGroup(CultureGroup group, StreamWriter cultures, StreamWriter locs)
        {
            Title tit = (Title)group.CustomFlags["from_title"];

            if (m_options.Data.Localisations.ContainsKey(tit.TitleID + "_adj"))
            {
                string loc = m_options.Data.Localisations[tit.TitleID + "_adj"].Substring(2).Replace("_adj", "_grp");
                locs.WriteLine(loc);
            }

            cultures.WriteLine("{0} = {{", group.Name);
            cultures.WriteLine("\tgraphical_culture = {0}", group.GraphicalCulture);

            foreach (var cul in group.Cultures)
            {
                WriteCulture(cul.Value, cultures, locs);
            }

            cultures.WriteLine("}");
        }
示例#8
0
        private void GenerateCultures(List <CultureGroup> cultureGroups)
        {
            foreach (CultureGroup group in cultureGroups)
            {
                int          culCount  = m_options.Random.Next(m_options.HistoryCulMin, m_options.HistoryCulMax);
                CultureGroup baseGroup = (CultureGroup)group.CustomFlags["baseCulGroup"];

                MakeCultures(group, culCount, baseGroup);

                bool finishedGrowing;
                do
                {
                    finishedGrowing = true;
                    foreach (var pair in group.Cultures)
                    {
                        GrowCultures(pair.Value, ref finishedGrowing);
                    }
                } while(!finishedGrowing);
            }
        }
        private void AddCulture(CultureGroup group)
        {
            int     colorRange = 32;
            Culture culture    = new Culture();

            culture.Group = group;
            culture.Color = Color.FromArgb(
                group.BaseColor.R + Random.Next(-colorRange, colorRange),
                group.BaseColor.G + Random.Next(-colorRange, colorRange),
                group.BaseColor.B + Random.Next(-colorRange, colorRange));

            /*
             * do
             *  culture.Origin = LandProvinces[Random.Next(LandProvinces.Count)];
             * while (culture.Origin.Culture != null);
             * culture.Origin.Culture = culture;
             * Province origin = LandProvinces[0];
             */
            int smallestScore = int.MaxValue;

            foreach (Province province in LandProvinces)
            {
                if (province.Culture == null)
                {
                    int score = province.DistanceSquared(culture.Group.Origin);
                    score += Random.Next(0, 100000);
                    if (score < smallestScore)
                    {
                        culture.Origin = province;
                        smallestScore  = score;
                    }
                }
            }
            culture.Origin.Culture = culture;

            group.Cultures.Add(culture);
            Cultures.Add(culture);
        }
示例#10
0
        private void GrowCultureGroup(CultureGroup cg, ref bool finishedGrowing)
        {
            List <Province> provsOwnedByGroup;

            provsOwnedByGroup = (List <Province>)cg.CustomFlags["provs"];

            int currCount = provsOwnedByGroup.Count;

            for (int i = 0; i < currCount; i++)
            {
                Province ownProv = provsOwnedByGroup[i];
                if (ownProv.CustomFlags.ContainsKey("culGroupSurrounded"))
                {
                    continue;
                }

                foreach (Province adj in ownProv.Adjacencies)
                {
                    if (m_options.RuleSet.IgnoredTitles.Contains(adj.Title))
                    {
                        continue;
                    }

                    if (adj.CustomFlags.ContainsKey("owningCultureGroup"))
                    {
                        continue;
                    }

                    adj.CustomFlags["owningCultureGroup"] = cg;
                    provsOwnedByGroup.Add(adj);
                    m_possibleProvinces.Remove(adj);
                    finishedGrowing = false;
                }
                ownProv.CustomFlags["culGroupSurrounded"] = true;
            }
        }
		private void WriteCultureGroup( CultureGroup group, StreamWriter cultures, StreamWriter locs )
		{
			Title tit = (Title)group.CustomFlags["from_title"];

			if( m_options.Data.Localisations.ContainsKey( tit.TitleID + "_adj" ) )
			{
				string loc = m_options.Data.Localisations[tit.TitleID + "_adj"].Substring( 2 ).Replace( "_adj", "_grp" );
				locs.WriteLine( loc );
			}

			cultures.WriteLine( "{0} = {{", group.Name );
			cultures.WriteLine( "\tgraphical_culture = {0}", group.GraphicalCulture );

			foreach( var cul in group.Cultures )
				WriteCulture( cul.Value, cultures, locs );

			cultures.WriteLine( "}" );
		}
		private CultureGroup CopyCultureGroup( Title title, CultureGroup oldGroup )
		{
			CultureGroup gc = new CultureGroup();

			gc.CustomFlags["from_title"] = title;
			gc.Name = title.TitleID.Substring( 2 ) + "_grp";

			gc.GraphicalCulture = oldGroup.GraphicalCulture;
			gc.MiscOptions = oldGroup.MiscOptions;
			gc.Cultures = new Dictionary<string, Culture>();

			return gc;
		}
		private void MakeCultures( CultureGroup group, int culCount, CultureGroup baseGroup )
		{
			Log( "Generating Cultures" );
			SendMessage( "Generating Cultures" );

			Province prov;
			List<Province> provsOwnedByCulture;
			List<Province> provs = new List<Province>( (IEnumerable<Province>)group.CustomFlags["provs"] );
			Culture baseCul, thisCul;
			Title county;
			List<Culture> baseCuls = baseGroup.Cultures.Values.ToList();

			int nameGenGroup = (int)group.CustomFlags["name_group"];
			int genOffset = m_options.Random.Next( 256 );

			for( int i = 0; i < culCount; i++ )
			{
				if( provs.Count == 0 )
					break;

				baseCul = baseCuls.RandomItem( m_options.Random );

				do
				{
					prov = provs.RandomItem( m_options.Random );
					provs.Remove( prov );
				} while( !m_options.Data.Localisations.ContainsKey( prov.Title + "_adj" ) );

				county = m_options.Data.Counties[prov.Title];
				provsOwnedByCulture = new List<Province>();
				provsOwnedByCulture.Add( prov );

				Log( "Province: " + prov.Title );

				string locString = m_options.Data.Localisations[prov.Title + "_adj"];
				SendMessage( "Generating Culture " + locString.Split( ';' )[1] );

				thisCul = CopyCulture( county, baseCul );
				thisCul.CustomFlags["baseCul"] = baseCul;
				thisCul.CustomFlags["provs"] = provsOwnedByCulture;

				GenerateNewCultureData( thisCul, nameGenGroup, genOffset + i );

				if ( !prov.CustomFlags.ContainsKey( "old_cul" ) )
					prov.CustomFlags["old_cul"] = prov.Culture;
				prov.CustomFlags["owningCulture"] = thisCul;
				prov.Culture = thisCul.Name;

				thisCul.Group = group;

				group.Cultures.Add( thisCul.Name, thisCul );
			}
		}
		private void GrowCultureGroup( CultureGroup cg, ref bool finishedGrowing )
		{
			List<Province> provsOwnedByGroup;
			provsOwnedByGroup = (List<Province>)cg.CustomFlags["provs"];

			int currCount = provsOwnedByGroup.Count;

			for( int i = 0; i < currCount; i++ )
			{
				Province ownProv = provsOwnedByGroup[i];
				if( ownProv.CustomFlags.ContainsKey( "culGroupSurrounded" ) )
					continue;

				foreach( Province adj in ownProv.Adjacencies )
				{
					if( m_options.RuleSet.IgnoredTitles.Contains( adj.Title ) )
						continue;

					if( adj.CustomFlags.ContainsKey( "owningCultureGroup" ) )
						continue;

					adj.CustomFlags["owningCultureGroup"] = cg;
					provsOwnedByGroup.Add( adj );
					m_possibleProvinces.Remove( adj );
					finishedGrowing = false;
				}
				ownProv.CustomFlags["culGroupSurrounded"] = true;
			}
		}
示例#15
0
        /// <summary>
        /// Applies culture information to the files specified by the Files property.
        /// This task intentionally does not validate that strings are valid Cultures so that we can support
        /// psuedo-loc.
        /// </summary>
        /// <returns>True upon completion of the task execution.</returns>
        public override bool Execute()
        {
            // First, process the culture group list the user specified in the cultures property
            List<CultureGroup> cultureGroups = new List<CultureGroup>();

            if (!String.IsNullOrEmpty(this.Cultures))
            {
                // Get rid of extra quotes
                this.Cultures = this.Cultures.Trim('\"');

                foreach (string cultureGroupString in this.Cultures.Split(';'))
                {
                    if (0 == cultureGroupString.Length)
                    {
                        // MSBuild v2.0.50727 cannnot handle "" items
                        // for the invariant culture we require the neutral keyword
                        continue;
                    }
                    CultureGroup cultureGroup = new CultureGroup(cultureGroupString);
                    cultureGroups.Add(cultureGroup);
                }
            }
            else
            {
                // Only process the EmbeddedResource items if cultures was unspecified
                foreach (ITaskItem file in this.Files)
                {
                    // Ignore non-wxls
                    if (!String.Equals(file.GetMetadata("Extension"), ".wxl", StringComparison.OrdinalIgnoreCase))
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec);
                        return false;
                    }
                    XmlDocument wxlFile = new XmlDocument();

                    try
                    {
                        wxlFile.Load(file.ItemSpec);
                    }
                    catch (FileNotFoundException)
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec);
                        return false;
                    }
                    catch (Exception e)
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message);
                        return false;
                    }

                    // Take the culture value and try using it to create a culture.
                    XmlAttribute cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName];
                    string wxlCulture = null == cultureAttr ? String.Empty : cultureAttr.Value;
                    if (0 == wxlCulture.Length)
                    {
                        // We use a keyword for the invariant culture because MSBuild v2.0.50727 cannnot handle "" items
                        wxlCulture = InvariantCultureIdentifier;
                    }

                    // We found the culture for the WXL, we now need to determine if it maps to a culture group specified
                    // in the Cultures property or if we need to create a new one.
                    Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec);

                    bool cultureGroupExists = false;
                    foreach (CultureGroup cultureGroup in cultureGroups)
                    {
                        foreach (string culture in cultureGroup.Cultures)
                        {
                            if (String.Equals(wxlCulture, culture, StringComparison.OrdinalIgnoreCase))
                            {
                                cultureGroupExists = true;
                                break;
                            }
                        }
                    }

                    // The WXL didn't match a culture group we already have so create a new one.
                    if (!cultureGroupExists)
                    {
                        cultureGroups.Add(new CultureGroup(wxlCulture));
                    }
                }
            }

            // If we didn't create any culture groups the culture was unspecificed and no WXLs were included
            // Build an unlocalized target in the output folder
            if (cultureGroups.Count == 0)
            {
                cultureGroups.Add(new CultureGroup());
            }

            List<TaskItem> cultureGroupItems = new List<TaskItem>();

            if (1 == cultureGroups.Count && 0 == this.Files.Length)
            {
                // Maitain old behavior, if only one culturegroup is specified and no WXL, output to the default folder
                TaskItem cultureGroupItem = new TaskItem(cultureGroups[0].ToString());
                cultureGroupItem.SetMetadata(OutputFolderMetadataName, CultureGroup.DefaultFolder);
                cultureGroupItems.Add(cultureGroupItem);
            }
            else
            {
                foreach (CultureGroup cultureGroup in cultureGroups)
                {
                    TaskItem cultureGroupItem = new TaskItem(cultureGroup.ToString());
                    cultureGroupItem.SetMetadata(OutputFolderMetadataName, cultureGroup.OutputFolder);
                    cultureGroupItems.Add(cultureGroupItem);
                    Log.LogMessage("Culture: {0}", cultureGroup.ToString());
                }
            }

            this.CultureGroups = cultureGroupItems.ToArray();
            
            return true;
        }
示例#16
0
		public bool TryGetCultureGroup( string key, out CultureGroup culGroup )
		{
			bool found = false;

			if( m_useCustomCulture )
				found = m_customCultureGroups.TryGetValue( key, out culGroup );

			if( !found )
				found = CultureGroups.TryGetValue( key, out culGroup );

			culGroup = null;
			return found;
		}
示例#17
0
        /// <summary>
        /// Applies culture information to the files specified by the Files property.
        /// This task intentionally does not validate that strings are valid Cultures so that we can support
        /// psuedo-loc.
        /// </summary>
        /// <returns>True upon completion of the task execution.</returns>
        public override bool Execute()
        {
            // First, process the culture group list the user specified in the cultures property
            List <CultureGroup> cultureGroups = new List <CultureGroup>();

            if (!String.IsNullOrEmpty(this.Cultures))
            {
                // Get rid of extra quotes
                this.Cultures = this.Cultures.Trim('\"');

                foreach (string cultureGroupString in this.Cultures.Split(';'))
                {
                    if (0 == cultureGroupString.Length)
                    {
                        // MSBuild v2.0.50727 cannnot handle "" items
                        // for the invariant culture we require the neutral keyword
                        continue;
                    }
                    CultureGroup cultureGroup = new CultureGroup(cultureGroupString);
                    cultureGroups.Add(cultureGroup);
                }
            }
            else
            {
                // Only process the EmbeddedResource items if cultures was unspecified
                foreach (ITaskItem file in this.Files)
                {
                    // Ignore non-wxls
                    if (!String.Equals(file.GetMetadata("Extension"), ".wxl", StringComparison.OrdinalIgnoreCase))
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file type is not supported.", file.ItemSpec);
                        return(false);
                    }
                    XmlDocument wxlFile = new XmlDocument();

                    try
                    {
                        wxlFile.Load(file.ItemSpec);
                    }
                    catch (FileNotFoundException)
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}. The file was not found.", file.ItemSpec);
                        return(false);
                    }
                    catch (Exception e)
                    {
                        Log.LogError("Unable to retrieve the culture for EmbeddedResource {0}: {1}", file.ItemSpec, e.Message);
                        return(false);
                    }

                    // Take the culture value and try using it to create a culture.
                    XmlAttribute cultureAttr = wxlFile.DocumentElement.Attributes[WixAssignCulture.CultureAttributeName];
                    string       wxlCulture  = null == cultureAttr ? String.Empty : cultureAttr.Value;
                    if (0 == wxlCulture.Length)
                    {
                        // We use a keyword for the invariant culture because MSBuild v2.0.50727 cannnot handle "" items
                        wxlCulture = InvariantCultureIdentifier;
                    }

                    // We found the culture for the WXL, we now need to determine if it maps to a culture group specified
                    // in the Cultures property or if we need to create a new one.
                    Log.LogMessage(MessageImportance.Low, "Culture \"{0}\" from EmbeddedResource {1}.", wxlCulture, file.ItemSpec);

                    bool cultureGroupExists = false;
                    foreach (CultureGroup cultureGroup in cultureGroups)
                    {
                        foreach (string culture in cultureGroup.Cultures)
                        {
                            if (String.Equals(wxlCulture, culture, StringComparison.OrdinalIgnoreCase))
                            {
                                cultureGroupExists = true;
                                break;
                            }
                        }
                    }

                    // The WXL didn't match a culture group we already have so create a new one.
                    if (!cultureGroupExists)
                    {
                        cultureGroups.Add(new CultureGroup(wxlCulture));
                    }
                }
            }

            // If we didn't create any culture groups the culture was unspecificed and no WXLs were included
            // Build an unlocalized target in the output folder
            if (cultureGroups.Count == 0)
            {
                cultureGroups.Add(new CultureGroup());
            }

            List <TaskItem> cultureGroupItems = new List <TaskItem>();

            if (1 == cultureGroups.Count && 0 == this.Files.Length)
            {
                // Maintain old behavior, if only one culturegroup is specified and no WXL, output to the default folder
                TaskItem cultureGroupItem = new TaskItem(cultureGroups[0].ToString());
                cultureGroupItem.SetMetadata(OutputFolderMetadataName, CultureGroup.DefaultFolder);
                cultureGroupItems.Add(cultureGroupItem);
            }
            else
            {
                foreach (CultureGroup cultureGroup in cultureGroups)
                {
                    TaskItem cultureGroupItem = new TaskItem(cultureGroup.ToString());
                    cultureGroupItem.SetMetadata(OutputFolderMetadataName, cultureGroup.OutputFolder);
                    cultureGroupItems.Add(cultureGroupItem);
                    Log.LogMessage("Culture: {0}", cultureGroup.ToString());
                }
            }

            this.CultureGroups = cultureGroupItems.ToArray();
            return(true);
        }
示例#18
0
        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);
        }