protected override ValueTask Init(GameContext game)
        {
            _inputService     = game.GetService <InputService>();
            _collisionService = game.GetService <CollisionService>();

            _transform = this.Owner.Components.Get <TransformComponent>();
            _renderer  = this.Owner.Components.Get <SpriteRenderComponent>();

            var map = game.SceneManager.Current.FindGameObjectByName(ObjectNames.Map);

            _mapRenderer = map.Components.Get <MapRenderComponent>();

            return(base.Init(game));
        }
Esempio n. 2
0
        private async ValueTask InitMap()
        {
            var availableMapObjects = _assetsResolver.Get <MapObjects>("assets/map-objects.json");

            var roomGenerator = new DungeonGenerator.RoomGenerator(5, 2, 3, 2, 3);
            var generator     = new DungeonGenerator.DungeonGenerator(9, 7, 70, 25, 100, roomGenerator);
            var dungeon       = generator.Generate();

            _map = new Map(dungeon, availableMapObjects);

            var canvas = await this.Game.Display.CanvasManager.CreateCanvas("map", new CanvasOptions()
            {
                Hidden = true
            });

            var canvasContext = await canvas.CreateCanvas2DAsync();

            var tileset           = _assetsResolver.Get <SpriteSheet>("assets/tilesets/dungeon4.json");
            var offscreenRenderer = new OffscreenMapRenderer(canvasContext, tileset);

            offscreenRenderer.Map = _map;

            var map = new GameObject(this, ObjectNames.Map);

            map.Components.Add <TransformComponent>();
            _mapRenderer = map.Components.Add <MapRenderComponent>();
            _mapRenderer.OffscreenRenderer = offscreenRenderer;
            _mapRenderer.LayerIndex        = (int)RenderLayers.Background;

            this.Game.Display.OnSizeChanged += () =>
            {
                offscreenRenderer.ForceRendering();
            };

            this.Root.AddChild(map);

            InitMapObjects(tileset, map);
        }