コード例 #1
0
        private void GrowLandSeeds(List <Point> seeds, WaterCoverage worldWaterCoverage)
        {
            int seedRadius;

            SeedType seedType;

            if (seeds.Count > 1)
            {
                seedType = SeedType.Continent;
            }
            else
            {
                seedType = SeedType.Panganea;
            }

            foreach (Point seed in seeds)
            {
                seedRadius = GetSeedSize(grid.Size, seedType);
                GrowSingleSeed(seed, seedRadius);
                switch (seedType)
                {
                case SeedType.Continent:
                    seedType = SeedType.LandMass;
                    break;

                case SeedType.Island:
                    seedType = SeedType.TinyIsland;
                    break;

                case SeedType.LandMass:
                    seedType = SeedType.Island;
                    break;

                case SeedType.TinyIsland:
                    seedType = SeedType.Continent;
                    break;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Starts a new server session.
        /// </summary>
        /// <param name="worldSize"></param>
        /// <param name="age"></param>
        /// <param name="climate"></param>
        /// <param name="landmass"></param>
        /// <param name="temperature"></param>
        /// <param name="waterCoverage"></param>
        /// <param name="barbarianAggressiveness"></param>
        /// <param name="difficulty"></param>
        /// <param name="rules"></param>
        public void StartServer(WorldSize worldSize, Age age, Temperature temperature, Climate climate, Landmass landmass, WaterCoverage waterCoverage, BarbarianAggressiveness barbarianAggressiveness, Difficulty difficulty, Rules rules)
        {
            OnServerStarting();
            this.rules = rules;
            OnStatusChanged(new StatusChangedEventArgs(ServerResources.CreatingMap, 5));
            GridBuilder builder = new GridBuilder();

            this.grid = builder.Build(worldSize, age, temperature, climate, landmass, waterCoverage, this.ruleset);
            OnStatusChanged(new StatusChangedEventArgs(ServerResources.AddingVillages, 10));
            AddVillages(worldSize);
            this.year = -4000;
            OnServerStarted();
        }
コード例 #3
0
        /// <summary>
        /// Generates a map with the specified parameters.
        /// </summary>
        /// <param name="worldSize"></param>
        /// <param name="worldAge"></param>
        /// <param name="worldTemperature"></param>
        /// <param name="worldClimate"></param>
        /// <param name="worldLandmass"></param>
        /// <param name="worldWaterCoverage"></param>
        /// <param name="ruleset"></param>
        /// <returns></returns>
        public Grid Build(WorldSize worldSize, Age worldAge, Temperature worldTemperature, Climate worldClimate, Landmass worldLandmass, WaterCoverage worldWaterCoverage, Ruleset ruleset)
        {
            Size size = GetDimensions(worldSize);

            this.grid    = BuildGrid(size);
            this.ruleset = ruleset;
            List <Point> seeds = GetLandSeeds(grid, worldLandmass);

            GrowLandSeeds(seeds, worldWaterCoverage);
            GenerateHeightMap(worldAge);
            GenerateTemperatureMap(worldTemperature);
            GenerateClimateMap(worldClimate);
            AddTerrain();
            AddRivers();
            AddLakes();
            AddResources();
            return(grid);
        }