Example #1
0
 // TODO: prefer "places" for this and not male/female
 public string RegionName(IClimate climate, CoreEnums.Word nameType)
 {
     // I could put this on one line but I think it'd be less clear
     string name = Generator.GetName(nameType) + ClimateSwitch(climate);
     if (Random.Next(0, 4) == 0) name = AffixDemonstrative(name);
     return name;
 }
Example #2
0
 // TODO: prefer "places" for this and not male/female
 public string RegionNameWithAdjective(IClimate climate, CoreEnums.Word nameType)
 {
     GeneralWordGen general = new GeneralWordGen();
     string name = Generator.GetName(nameType);
     if (Random.Next(0, 5) == 0) name = name + " the " + GetAdjective().CapitalizeFirstLetter();
     name = name + ClimateSwitch(climate);
     return name;
 }
Example #3
0
 /// <summary>
 /// Using the list of AvailableFeatures a list of features is built for the final object
 /// </summary>
 /// <returns>Returns a list of features</returns>
 internal static List<IFeatures> PopulateFeatures(CoreEnums.RegionSize size, List<IFeatures> AvailableFeatures)
 {
     List<IFeatures> Features = new List<IFeatures>(); // do I need to initialize this?..
     int numberOfFeatures = DetermineNumberOfFeatures(size);
     while (true)
     {
         // ERROR: 'System.ArgumentOutOfRangeException'
         AvailableFeatures.RemoveAt(_Random.Next(0, AvailableFeatures.Count - 1));
         if (numberOfFeatures == AvailableFeatures.Count) break;
     }
     return AvailableFeatures;
 }
Example #4
0
        /// <summary>
        /// Generate a single deity.
        /// </summary>
        /// <param name="ChiefDiety">The chief deity of the pantheon. Will accept a null value if no chief deity exists.</param>
        /// <param name="prominence">The promince of the deity. Is it a primary, major, or minor deity? Primary will set the ChiefDeity value to null.</param>
        /// <returns>Returns an IDeity object</returns>
        public IDeity Generate(IDeity ChiefDiety, CoreEnums.Deity prominence)
        {
            IDeity deity = new Deity
            {
                Id = Random.Next(0, 78000000), // I need to ensure this is unique (at least until the database is up and running...
                Name = RandomNameGen(),
                Description = "DESCRIPTION",
                ChiefDiety = (prominence == CoreEnums.Deity.Primary) ? null : ChiefDiety,
                Prominence = prominence,
                Alignment = (CoreEnums.Alignment)Random.Next(0, 8)
            };
            AnnounceCreation(deity);

            return deity;
        }
Example #5
0
 /// <summary>
 /// This determines the number of features to be available by the size of the region
 /// </summary>
 /// <param name="size">Accepts the size of the region</param>
 /// <returns>Returns an integer representing the total number of allowable features</returns>
 private static int DetermineNumberOfFeatures(CoreEnums.RegionSize size)
 {
     switch ((int)size)
     {
         case 1400000: // VerySmall
             return _Random.Next(3, 6);
         case 3200000: // Small
             return _Random.Next(4, 7);
         case 4000000: // Moderate
             return _Random.Next(5, 8);
         case 5300000: // Large
             return _Random.Next(6, 9);
         default:      // VeryLarge
             return _Random.Next(7, 10);
     }
 }
Example #6
0
 private int CalculateContinentSizeKM(CoreEnums.ContinentSize size)
 {
     int plusOrMinus = Convert.ToInt32(((double)CoreEnums.ContinentSize.VerySmall * (double).27));
     switch ((int)size)
     {
         case 7000000:  // VerySmall
             return Random.Next((int)CoreEnums.ContinentSize.VerySmall - plusOrMinus, (int)CoreEnums.ContinentSize.VerySmall + plusOrMinus);
         case 12000000: // Small
             return Random.Next((int)CoreEnums.ContinentSize.Small - plusOrMinus, (int)CoreEnums.ContinentSize.Small + plusOrMinus);
         case 21000000: // Moderate
             return Random.Next((int)CoreEnums.ContinentSize.Moderate - plusOrMinus, (int)CoreEnums.ContinentSize.Moderate + plusOrMinus);
         case 37000000: // Large
             return Random.Next((int)CoreEnums.ContinentSize.Large - plusOrMinus, (int)CoreEnums.ContinentSize.Large + plusOrMinus);
         default:       // VeryLarge
             return Random.Next((int)CoreEnums.ContinentSize.VeryLarge - plusOrMinus, (int)CoreEnums.ContinentSize.VeryLarge + plusOrMinus);
     }
 }
 public static ITopography Get(int id, CoreEnums.RegionSize size, IClimate climate)
 {
     switch (id)
     {
         case 0:
             return new Highlands(size, climate);
         case 1:
             return new Hills(size, climate);
         case 2:
             return new Mountains(size, climate);
         case 3:
             return new Lowlands(size, climate);
         case 4:
             return new Plains(size, climate);
         case 5:
         default:
             return new Valleys(size, climate);
     }
 }
 // What about an order of 8 for place names?
 public MarkovNameGenerator(CoreEnums.Word word)
 {
     Random = new Random();
     int minLength = 4;
     int baseOrder = ((Random.Next(0, 2) == 1)) ? 4 + 1 : 4 - 1; // 4 seems to be a sweet spot so we mix it up by doing plus or minus 1
     switch (Convert.ToInt32(word))
     {
         case 0: // male elf names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\MaleElvishNames.txt", baseOrder, minLength);
             break;
         case 1: // female elf names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\FemaleElvishNames.txt", baseOrder, minLength);
             break;
         case 2: // elf places
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\ElvishPlaceNames.txt", baseOrder, minLength);
             break;
         case 3: // male human names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\MaleHumanNames.txt", baseOrder, minLength);
             break;
         case 4: // female human names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\FemaleHumanNames.txt", baseOrder, minLength);
             break;
         case 5: // human places
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\HumanPlaceNames.txt", baseOrder, minLength);
             break;
         case 6: // male dwarf names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\MaleDwarfNames.txt", baseOrder, minLength);
             break;
         case 7: // female dwarf names
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\FemaleDwarfNames.txt", baseOrder, minLength);
             break;
         case 8: // dwarven places
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\DwarvenPlaceNames.txt", baseOrder, minLength);
             break;
         case 9: // deity names
         default:
             NameGenerator(@"C:\Users\Michael\Documents\StoryGenerator\Names\DeityNames.txt", 4, 4);
             break;
     }
 }
Example #9
0
 public string SingleNameWithAdjective(CoreEnums.Word nameType)
 {
     GeneralWordGen general = new GeneralWordGen();
     return Generator.GetName(nameType) + " the " + GetAdjective().CapitalizeFirstLetter();
 }
Example #10
0
 public string SingleName(CoreEnums.Word nameType)
 {
     return Generator.GetName(nameType);
 }
Example #11
0
 public string FirstAndLastNameWithAdjective(CoreEnums.Word firstNameType, CoreEnums.Word lastNameType)
 {
     GeneralWordGen general = new GeneralWordGen();
     return Generator.GetName(firstNameType) + " " + Generator.GetName(lastNameType) + " the " + GetAdjective().CapitalizeFirstLetter();
 }
Example #12
0
 public string FirstAndLastName(CoreEnums.Word firstNameType, CoreEnums.Word lastNameType)
 {
     return Generator.GetName(firstNameType) + " " + Generator.GetName(lastNameType);
 }
Example #13
0
 /// <summary>
 /// Primary constructor for generating a topography with appropriate settings
 /// </summary>
 /// <param name="size">Accepts the size of the region the topography belongs to</param>
 public Plains(CoreEnums.RegionSize size, IClimate climate)
 {
     AvailableFeatures = PopulateAvailableFeatures();
     Features = PopulateFinalFeatures(climate);
     CorrespondingTopography = PopulateCorrespondingTopography();
 }
Example #14
0
 private string GetName(IRace race, CoreEnums.Gender gender)
 {
     switch (race.GetType().Name.ToLower())
     {
         case "elves":
             return DiceRollForNames((gender == CoreEnums.Gender.Female) ? CoreEnums.Word.ElfFemale : CoreEnums.Word.ElfMale);
         case "dwarves":
             return DiceRollForNames((gender == CoreEnums.Gender.Female) ? CoreEnums.Word.DwarfFemale : CoreEnums.Word.DwarfMale);
         case "human":
         default:
             return DiceRollForNames((gender == CoreEnums.Gender.Female) ? CoreEnums.Word.HumanFemale : CoreEnums.Word.HumanMale);
     }
 }
Example #15
0
 // keep surnames???
 private string DiceRollForNames(CoreEnums.Word race)
 {
     int value = Random.Next(0, 10);
     if (value >= 0 && value <= 3) // 4
     {
         return Names.SingleName(race);
     }
     else if (value > 3 && value <= 6) // 3 chances
     {
         return Names.SingleNameWithAdjective(race); // maybe adjectives should only be given with achievements
     }
     else if (value > 6 && value <= 8) // 2 chances
     {
         return Names.FirstAndLastName(race, race);
     }
     else // 1 chance
     {
         return Names.FirstAndLastNameWithAdjective(race, race); // maybe adjectives should only be given with achievements
     }
 }