示例#1
0
        public void GenerateRace()
        {
            if (_raceGen == null)
            {
                _raceGen = new RaceGen();
            }

            if (_raceGen.IsEmpty())
            {
                return;
            }

            Landmass    mass         = _world.Map.GetRandomLandmass();
            AffinityMap massAffinity = _world.Map.GetAffinitiesForLandmass(mass);
            Race        genRace      = _raceGen.GenerateRace(massAffinity);

            Console.WriteLine("Rolled race: " + genRace);
            Console.WriteLine(genRace.Affinities);

            // arbitrarily low number to start with
            int highest = -50;
            // random coordinates as default
            Coords candidate      = mass.RandomCoords();
            int    tick           = 0;
            int    tenPercent     = mass.Count / 10;
            bool   tenPercentMore = false;

            foreach (Coords coords in mass.CoordsFromRandomPoint())
            {
                if (tick >= tenPercent)
                {
                    break;
                }
                AffinityMap hexAffinities = _world.Map.GetAffinitiesForCoords(coords);
                int         sim           = genRace.Affinities.GetSimilarityTo(hexAffinities);
                if (sim > highest)
                {
                    highest   = sim;
                    candidate = coords;
                }
                if (!tenPercentMore && highest > 0)
                {
                    tenPercentMore = true;
                }
                if (tenPercentMore)
                {
                    tick++;
                }
            }
            Console.WriteLine("Placing at : " + candidate);
            Console.WriteLine(_world.Map.GetAffinitiesForCoords(candidate));
            Console.WriteLine("--> Final Score: " + highest);
            Console.WriteLine("------------------");
            _world.PlaceRaceAt(genRace, candidate);
        }
示例#2
0
 private void PlaceFirstSegment()
 {
     while (_river == null)
     {
         Coords candidate = _landmass.RandomCoords();
         if (!_world.Map.IsRiverAt(candidate))
         {
             _river = new River(candidate);
             _allCoords.Add(candidate);
         }
     }
 }