Beispiel #1
0
        public static TileMap <TileType> BuildMap(ILayoutGenerator layoutGenerator, IZoneGenerator zoneGenerator, int level, int levelSeed)
        {
            Debug.Log(string.Format("Generating level {0}. {1}, {2} ({3})", level, layoutGenerator, zoneGenerator, levelSeed));
            Random.InitState(levelSeed);
            TileMap <TileType> result = new TileMap <TileType>();

            try
            {
                result.Layout = layoutGenerator.NewLayout(level);

                while (!layoutGenerator.IsDone(result.Layout, level))
                {
                    result.Layout = layoutGenerator.Iterate(result.Layout, level);

                    result = zoneGenerator.PreConnectZones(result, level);
                    result = zoneGenerator.Generate(result, level);
                    result = zoneGenerator.PostConnectZones(result, level);
                }

                result.SpawnPoint = zoneGenerator.GetSpawnPoint(result, level);
                result.ExitPoint  = zoneGenerator.GetExitPoint(result, level);
            }
            catch (ScriptRuntimeException e)
            {
                Debug.Log(e.DecoratedMessage);
            }

            return(result);
        }
Beispiel #2
0
 public GameSettings(ILayoutGenerator layoutGenerator, IZoneGenerator zoneGenerator, int seed, int numLevels, bool generateStatsLog, ControlMode controlMode)
 {
     LayoutGenerator  = layoutGenerator;
     ZoneGenerator    = zoneGenerator;
     Seed             = seed;
     NumLevels        = numLevels;
     GenerateStatsLog = generateStatsLog;
     ControlMode      = controlMode;
 }
Beispiel #3
0
 public void Initialize(ILayoutGenerator layoutGenerator, IZoneGenerator zoneGenerator, int seed, int numberOfLevels, ControlMode mode)
 {
     currentSeed          = seed;
     this.numberOfLevels  = numberOfLevels;
     mapGenerationManager = Locator.Get <MapGenerationManager>();
     mapGenerationManager.SetLayoutGenerator(layoutGenerator);
     mapGenerationManager.SetZoneGenerator(zoneGenerator);
     Initialize(mode);
 }
Beispiel #4
0
        private void RequestStart()
        {
            ILayoutGenerator layoutGenerator = GetLayoutGenerator();
            IZoneGenerator   zoneGenerator   = GetZoneGenerator();
            int         seed             = GetSeed();
            int         numLevels        = GetNumLevels();
            bool        generateStatsLog = generateStatsToggle.isOn;
            ControlMode controlMode      = GetControlMode();

            GameSettings settings = new GameSettings(layoutGenerator, zoneGenerator, seed, numLevels, generateStatsLog, controlMode);

            Locator.Get <GameFeederManager>().Settings = settings;
            SceneManager.LoadScene("Game");
        }
Beispiel #5
0
 public void SetZoneGenerator(IZoneGenerator zoneGenerator)
 {
     Generator.ZoneGenerator = zoneGenerator;
 }
Beispiel #6
0
 public MapGenerator(IZoneGenerator zoneGenerator, ILayoutGenerator layoutGenerator)
 {
     ZoneGenerator   = zoneGenerator;
     LayoutGenerator = layoutGenerator;
 }