コード例 #1
0
        public static void Configure()
        {
            LogManager.Initialize(new LogProvider());

            LogManager.GetLog(nameof(GameConfigurator)).Info($"Starting game. Version {Assembly.GetExecutingAssembly().GetName().Version}");

            var config = LoadConfiguration();

            ConfigurationManager.InitializeConfiguration(config);

            ImagesStorage.Current.Load();

            IoC.Configure();

            DialogsManager.Initialize(new DialogsProvider(IoC.Container.Resolve <IApplicationController>()));

            ItemsGeneratorManager.Initialize(new ItemsGenerator(
                                                 config.ItemGenerator,
                                                 ImagesStorage.Current,
                                                 new AncientSpellsProvider()));

            DungeonMapGenerator.Initialize(ImagesStorage.Current, Settings.Current.DebugWriteMapToFile);

#if DEBUG
            PerformanceMeter.Initialize(@".\Performance.log");
#endif
        }
コード例 #2
0
        public void Generate(DungeonMapGeneratorSettings settings)
        {
            _mapWidth  = settings.Width;
            _mapHeight = settings.Height;

            _generator = new DungeonMapGenerator(settings);
            _generator.Generate();

            var result = _generator.Result;

            TileLayers = new List <Tile[, ]>();

            var normalMap = Core.Content.Load <Texture2D>(Content.Textures.Tileset_subtiles_test_normal);
            var material  = new DeferredSpriteMaterial(normalMap);

            foreach (var tileGroup in result.Tiles)
            {
                var layer = new Tile[_mapWidth, _mapHeight];
                layer.Initialize();

                foreach (var tile in tileGroup)
                {
                    layer[tile.TilePosition.X, tile.TilePosition.Y] = tile;
                }
                TileLayers.Add(layer);

                var layerRenderer = new DungeonMapLayerRenderer();
                var renderLayer   = DetermineRenderLayerForGroup(tileGroup.Key);
                layerRenderer.SetRenderLayer(renderLayer);
                layerRenderer.SetMaterial(material);
                layerRenderer.SetTiles(layer);

                AddComponent(layerRenderer);
            }

            foreach (var Entity in result.Entities)
            {
                Core.Scene.AddEntity(Entity);
            }

            foreach (var colliderBounds in result.ColliderBounds)
            {
                AddComponent(new BoxCollider(colliderBounds));
            }

            Spawn = result.Entities.First(e => e is Spawn) as Spawn;
            Exit  = result.Entities.First(e => e is Exit) as Exit;
        }