Пример #1
0
        public Level(Game game)
        {
            LoadAssets();
            ConfigureEntities();

            UnitBalance  = 1200; // default
            Health       = 100;
            WaveNumber   = 0;
            CurrentState = WaveState.None;

            //_enemyPool = new EntityPool(1000);
            _scanlines = new ScanlineShader(new Vector2u((uint)Game.Size.X, (uint)Game.Size.Y));
            _renderTex = new RenderTexture((uint)Game.Size.X, (uint)Game.Size.Y, true);

            var tileSize = _texTileBasic.Size.X * SpriteScalar;

            _game         = game;
            _overlayInfo  = new InfoOverlay(_game, this);
            _overlayLevel = new LevelOverlay(this, SpriteScalar, tileSize);
            _overlayLevel.SetSelectionState(_texTileRoad, 128);
            Camera = new View(new Vector2f(Game.Size.X / 2, Game.Size.Y / 2), Game.Size);

            _tileMap     = new TileMap(this, _texTileBasic, tilesX, tilesY, tileSize);
            _towerMap    = new GridLayer <TowerEntity>(tilesX, tilesY, tileSize);
            _pathfinding = new AStar <Tile>(HeuristicMethod.Manhatten);
            //Path = _pathfinding.CalculatePath(_tileMap.StartTile, _tileMap.EndTile, _tileMap).ToList<Tile>();
            //game.MouseButtonPressed += (sender, e) => { Camera.Move(new Vector2f(-10f, -10f)); };

            _enemyPool = new EntityPool <EnemyEntity>(1000);

            UpdateInfo();
        }
Пример #2
0
    public MapRenderable2D(LogicalMap2D logicalMap, ITexture tileset, IGameFactory factory)
    {
        if (tileset == null)
        {
            throw new ArgumentNullException(nameof(tileset));
        }
        if (factory == null)
        {
            throw new ArgumentNullException(nameof(factory));
        }
        _logicalMap = logicalMap ?? throw new ArgumentNullException(nameof(logicalMap));
        var subImage = tileset.Regions[0];

        TileSize = subImage.Size;

        _underlay = AttachChild(factory.CreateMapLayer(
                                    logicalMap,
                                    tileset,
                                    logicalMap.GetUnderlay,
                                    DrawLayer.Underlay,
                                    IconChangeType.Underlay));

        _overlay = AttachChild(factory.CreateMapLayer(logicalMap,
                                                      tileset,
                                                      logicalMap.GetOverlay,
                                                      DrawLayer.Overlay,
                                                      IconChangeType.Overlay));

        _info = AttachChild(new InfoOverlay(logicalMap));

        var tileSize = tileset.Regions[0].Size;

        _annotations = AttachChild(new MapAnnotationLayer(logicalMap, tileSize));

        On <ToggleUnderlayEvent>(e => _underlay.IsActive = !_underlay.IsActive);
        On <ToggleOverlayEvent>(e => _overlay.IsActive   = !_overlay.IsActive);
    }