public string GetRandomVariation(GetRandomIntDelegate getRandomInt, bool filterRelationTagged) { IEnumerable <Variation> filteredVariations = Variations; if (filterRelationTagged) { filteredVariations = Variations.Where(v => !v.Tags.Contains(RelationTag)); } return(filteredVariations.RandomSelect(getRandomInt).Text); }
public string GetRandomAttributeVariation(GetRandomIntDelegate getRandomInt) { if (Attributes.Count <= 0) { return(string.Empty); } int index = getRandomInt(Attributes.Count); return(AttributeList[index].GetRandomVariation(getRandomInt)); }
public string GetRandomSingularVariation(GetRandomIntDelegate getRandomInt, bool filterRelationTagged = true) { IEnumerable <Variation> filteredVariations = Variations.Where(v => !Language.IsPluralForm(v.Text)); if (filterRelationTagged) { filteredVariations = Variations.Where(v => !v.Tags.Contains(RelationTag)); } return(filteredVariations.RandomSelect(getRandomInt).Text); }
public static T RandomSelect <T>(this ICollection <T> collection, GetRandomIntDelegate getRandomInt, int emptyInstances = 0) { int index = getRandomInt(collection.Count + emptyInstances); if (index >= collection.Count) { return(default(T)); } return(collection.ElementAt(index)); }
private void GenerateNameFromRegionAttribute(RegionAttribute.Instance attribute, GetRandomIntDelegate getRandomInt) { string untranslatedName; string adjective = attribute.Adjectives.RandomSelect(getRandomInt, 15); if (!string.IsNullOrEmpty(adjective)) { adjective = "[adj]" + adjective + " "; } Association association = attribute.Associations.RandomSelect(getRandomInt); string nounGender = (IsFemale) ? "[fn]" : "[mn]"; string subjectNoun = "[name]" + nounGender + association.Noun; if (association.IsAdjunction) { string variationNoun = attribute.GetRandomSingularVariation(getRandomInt, false); untranslatedName = "[Proper][NP](" + adjective + Language.CreateNounAdjunct(variationNoun) + " " + subjectNoun + ")"; } else { string article = ((association.Form == AssociationForms.DefiniteSingular) || (association.Form == AssociationForms.DefinitePlural) || (association.Form == AssociationForms.NameSingular)) ? "the " : ""; string uncountableProp = (association.Form == AssociationForms.Uncountable) ? "[un]" : ""; string variationNoun; if ((association.Form == AssociationForms.DefinitePlural) || (association.Form == AssociationForms.IndefinitePlural)) { variationNoun = attribute.GetRandomPluralVariation(getRandomInt, false); } else { variationNoun = attribute.GetRandomSingularVariation(getRandomInt, false); } variationNoun = article + adjective + uncountableProp + variationNoun; untranslatedName = "[PpPP]([Proper][NP](" + subjectNoun + ") [PP](" + association.Relation + " [Proper][NP](" + variationNoun + ")))"; } _name = new Name(untranslatedName, Language, World); }
public static T RandomSelect <T>(this IEnumerable <T> enumerable, GetRandomIntDelegate getRandomInt, int emptyInstances = 0) { int count = enumerable.Count(); int index = getRandomInt(count + emptyInstances); if (index >= count) { return(default(T)); } return(enumerable.ElementAt(index)); }
private void GenerateNameFromElement(Element.Instance element, GetRandomIntDelegate getRandomInt) { string untranslatedName; string adjective = element.Adjectives.RandomSelect(getRandomInt, 15); if (!string.IsNullOrEmpty(adjective)) { adjective = "[adj]" + adjective + " "; } Association association = element.Associations.RandomSelect(getRandomInt); string nounGender = (IsFemale) ? "[fn]" : "[mn]"; string subjectNoun = "[name]" + nounGender + association.Noun; if (association.IsAdjunction) { untranslatedName = "[Proper][NP](" + adjective + Language.CreateNounAdjunct(element.SingularName) + " " + subjectNoun + ")"; } else { string article = ((association.Form == AssociationForms.DefiniteSingular) || (association.Form == AssociationForms.DefinitePlural) || (association.Form == AssociationForms.NameSingular)) ? "the " : ""; string uncountableProp = (association.Form == AssociationForms.Uncountable) ? "[un]" : ""; string elementNoun = element.SingularName; if ((association.Form == AssociationForms.DefinitePlural) || (association.Form == AssociationForms.IndefinitePlural)) { elementNoun = element.PluralName; } elementNoun = article + adjective + uncountableProp + elementNoun; untranslatedName = "[PpPP]([Proper][NP](" + subjectNoun + ") [PP](" + association.Relation + " [Proper][NP](" + elementNoun + ")))"; } _name = new Name(untranslatedName, Language, World); }
public string GetRandomVariation(GetRandomIntDelegate getRandomInt, string filterStr, bool filterRelationTagged = true) { IEnumerable <Variation> filteredVariations = Variations; filterStr = filterStr.ToLower(); if (filterStr != null) { filteredVariations = Variations.Where(v => !v.Text.Contains(filterStr)); } if (filterRelationTagged) { filteredVariations = Variations.Where(v => !v.Tags.Contains(RelationTag)); } return(filteredVariations.RandomSelect(getRandomInt).Text); }
public string GetRandomPluralVariation(GetRandomIntDelegate getRandomInt, bool filterRelationTagged = true) { IEnumerable <Variation> filteredVariations = Variations.Where(v => Language.IsPluralForm(v.Text)); if (filterRelationTagged) { filteredVariations = Variations.Where(v => !v.Tags.Contains(RelationTag)); } if (filteredVariations.Count() == 0) { string variations = string.Join(", ", Variations.Select(v => v.Text)); throw new System.Exception( "No regional attribute variation with plural form within available set of variations: " + variations); } return(filteredVariations.RandomSelect(getRandomInt).Text); }
public static T RandomSelect <T>(this List <T> list, GetRandomIntDelegate getRandomInt, int emptyInstances = 0, bool remove = false) { if (list.Count <= 0) { return(default(T)); } int index = getRandomInt(list.Count + emptyInstances); if (index >= list.Count) { return(default(T)); } T item = list[index]; if (remove) { list.RemoveAt(index); } return(item); }
public string GetRandomUnstranslatedAreaName(GetRandomIntDelegate getRandomInt, bool isNounAdjunct) { string untranslatedName; Element.Instance elementInstance = Elements.RandomSelect(getRandomInt, isNounAdjunct ? 5 : 20); List <RegionAttribute.Instance> remainingAttributes = new List <RegionAttribute.Instance>(AttributeList); RegionAttribute.Instance attribute = remainingAttributes.RandomSelectAndRemove(getRandomInt); List <string> possibleAdjectives = attribute.Adjectives; bool addAttributeNoun = true; int wordCount = 0; if (elementInstance != null) { possibleAdjectives = elementInstance.Adjectives; wordCount++; if (isNounAdjunct && (getRandomInt(10) > 4)) { addAttributeNoun = false; } } string attributeNoun = string.Empty; if (addAttributeNoun) { attributeNoun = attribute.GetRandomVariation(getRandomInt); if ((elementInstance != null) && attributeNoun.Contains(elementInstance.SingularName)) { elementInstance = null; } wordCount++; } int nullAdjectives = 4 * wordCount * (isNounAdjunct ? 4 : 1); string adjective = possibleAdjectives.RandomSelect(getRandomInt, nullAdjectives); if (!string.IsNullOrEmpty(adjective)) { adjective = "[adj]" + adjective + " "; } string elementNoun = string.Empty; if (elementInstance != null) { elementNoun = Language.CreateNounAdjunct(elementInstance.SingularName) + ((addAttributeNoun) ? " " : string.Empty); } untranslatedName = adjective + elementNoun; if (isNounAdjunct) { untranslatedName += (addAttributeNoun) ? Language.CreateNounAdjunct(attributeNoun) : string.Empty; } else { untranslatedName += attributeNoun; } //#if DEBUG // if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0)) // { // //if (Manager.TracingData.RegionId == Id) // //{ // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "RegionInfo.GetRandomUnstranslatedAreaName - Region.Id:" + Id, // "CurrentDate: " + World.CurrentDate + // ", EstablishmentDate: " + EstablishmentDate + // ", attribute.Name: " + attribute.Name + // ", Attributes.Count: " + Attributes.Count + // ", AttributeNames: [" + string.Join(",", AttributeNames.ToArray()) + "]" + // ", nullAdjectives: " + nullAdjectives + // ", possibleAdjectives: [" + string.Join(",", possibleAdjectives) + "]" + // ", untranslatedName: " + untranslatedName + // ""); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // //} // } //#endif return(untranslatedName); }
protected override void GenerateName(Faction parentFaction) { int rngOffset = RngOffsets.CLAN_GENERATE_NAME + unchecked ((int)Polity.Id); if (parentFaction != null) { rngOffset += unchecked ((int)parentFaction.Id); } GetRandomIntDelegate getRandomInt = (int maxValue) => Polity.GetNextLocalRandomInt(rngOffset++, maxValue); GetRandomFloatDelegate getRandomFloat = () => Polity.GetNextLocalRandomFloat(rngOffset++); Language language = Polity.Culture.Language; Region region = CoreGroup.Cell.Region; string untranslatedName = ""; if (region.Elements.Count <= 0) { throw new System.Exception("No elements to choose name from"); } List <string> possibleAdjectives = null; List <Element.Instance> remainingElements = new List <Element.Instance>(region.Elements); bool addMoreWords = true; bool isPrimaryNoun = true; float extraWordChance = 0.2f; List <Element.Instance> usedElements = new List <Element.Instance>(); while (addMoreWords) { addMoreWords = false; bool hasRemainingElements = remainingElements.Count > 0; if ((!hasRemainingElements) && (usedElements.Count <= 0)) { throw new System.Exception("No elements to use for name"); } Element.Instance element = null; if (hasRemainingElements) { element = remainingElements.RandomSelectAndRemove(getRandomInt); usedElements.Add(element); } else { element = usedElements.RandomSelect(getRandomInt); } if (isPrimaryNoun) { untranslatedName = element.SingularName; isPrimaryNoun = false; possibleAdjectives = element.Adjectives; } else { bool first = true; foreach (Element.Instance usedElement in usedElements) { if (first) { untranslatedName = usedElement.SingularName; first = false; } else { untranslatedName = usedElement.SingularName + ":" + untranslatedName; } } } string adjective = possibleAdjectives.RandomSelect(getRandomInt, 2 * usedElements.Count); if (!string.IsNullOrEmpty(adjective)) { untranslatedName = "[adj]" + adjective + " " + untranslatedName; } addMoreWords = extraWordChance > getRandomFloat(); if (!addMoreWords) { foreach (Faction faction in Polity.GetFactions()) { if (Language.ClearConstructCharacters(untranslatedName) == faction.Name.Meaning) { addMoreWords = true; break; } } } extraWordChance /= 2f; } untranslatedName = "[Proper][NP](" + untranslatedName + ")"; Info.Name = new Name(untranslatedName, language, World); // #if DEBUG // Debug.Log ("Clan #" + Id + " name: " + Name); // #endif }
public string GetRandomPluralVariation(GetRandomIntDelegate getRandomInt, bool filterRelationTagged = true) { return(RegionAttribute.GetRandomPluralVariation(getRandomInt, filterRelationTagged)); }
public string GetRandomUnstranslatedAreaName(GetRandomIntDelegate getRandomInt, bool isNounAdjunct) { return(Info.GetRandomUnstranslatedAreaName(getRandomInt, isNounAdjunct)); }
public string GetRandomAttributeVariation(GetRandomIntDelegate getRandomInt) { return(Info.GetRandomAttributeVariation(getRandomInt)); }
public static T RandomSelectAndRemove <T>(this List <T> list, GetRandomIntDelegate getRandomInt) { return(list.RandomSelect(getRandomInt, 0, true)); }