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)); }
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); }