Exemple #1
0
        public PointF Render(BufferedGraphics graphics, GraphicsTracker graphicsTracker, PointF locationCenter)
        {
            PointF point = GetWindowLocation(graphicsTracker, locationCenter);

            graphics.Graphics.DrawImage(Sprite.Bitmap, point);
            return(point);
        }
        public Enemy(
            EnemySettings settings,
            GraphicsTracker graphicsTracker,
            GameBus bus,
            FontsAndColors fontsAndColors,
            SpriteSheets spriteSheets)
        {
            _graphicsTracker = graphicsTracker;
            _bus             = bus;
            _fontsAndColors  = fontsAndColors;
            _spriteSheets    = spriteSheets;
            _health          = new EntitysHealth {
                Health = settings.Health
            };
            _waypoints = settings.Waypoints;

            SpriteWithDirectionsRenderer = CreateSprite(settings.EnemyType);
        }
Exemple #3
0
        public TowerBase(TowerSettings settings, GameLevelTime gameLevelTime,
                         GameLevel gameLevel, GraphicsTracker graphicsTracker, SpriteSheets spriteSheets, InputManager inputManager)
        {
            _shootLimiter    = new GameLevelActionLimiter(gameLevelTime, settings.ShootFrequency);
            Settings         = settings;
            _gameLevel       = gameLevel;
            _graphicsTracker = graphicsTracker;
            _inputManager    = inputManager;

            // TODO: Create sprite without direction.
            var spr = new SpriteWithDirections
            {
                Sprites = new Dictionary <SpriteDirectionEnum, SpriteDetails>
                {
                    { SpriteDirectionEnum.BottomLeft, spriteSheets.GetSprite(SpriteEnum.Tower) },
                    { SpriteDirectionEnum.BottomRight, spriteSheets.GetSprite(SpriteEnum.Tower) },
                    { SpriteDirectionEnum.TopLeft, spriteSheets.GetSprite(SpriteEnum.Tower) },
                    { SpriteDirectionEnum.TopRight, spriteSheets.GetSprite(SpriteEnum.Tower) }
                }
            };

            _sprite = new SpriteWithDirectionsRenderer(spr);
        }
 public TowerBase GetTower(GameLevelTime time, GameLevel gameLevel, TowerSettings towerSettings, GraphicsTracker graphicsTracker)
 {
     return(_container
            .With("gameLevelTime").EqualTo(time)
            .With("gameLevel").EqualTo(gameLevel)
            .With("settings").EqualTo(towerSettings)
            .With("graphicsTracker").EqualTo(graphicsTracker)
            .GetInstance <TowerBase>());
 }
Exemple #5
0
        public PointF GetWindowLocation(GraphicsTracker graphicsTracker, PointF locationCenter)
        {
            Size offset = IsRelativeToMap ? graphicsTracker.MapOffset.ToSize() : Size.Empty;

            return(PointF.Add(locationCenter, offset));
        }
Exemple #6
0
        public GameLevel(
            GameLevelSettings settings,
            InputManager inputManager,
            TowerFactory towerFactory,
            GraphicsTracker graphicsTracker,
            MouseDragControl mouseDragControl,
            FontsAndColors fontsAndColors,
            GameBus bus,
            GameMapOverlay gameMapOverlay,
            ApplicationLogger logger,
            EnemyFactory enemyFactory)
        {
            _settings           = settings;
            _towerFactory       = towerFactory;
            _graphicsTracker    = graphicsTracker;
            _fontsAndColors     = fontsAndColors;
            _gameMapOverlay     = gameMapOverlay;
            _logger             = logger;
            _enemyFactory       = enemyFactory;
            _stringFormatCenter = new StringFormat
            {
                LineAlignment = StringAlignment.Center,
                Alignment     = StringAlignment.Center
            };
            _gameMapOverlay.SetMap(settings.Map);

            inputManager.OnMouseDragged  += mouseDragControl.InputManagerOnMouseDrag;
            inputManager.OnMouseReleased += mouseDragControl.InputManagerOnMouseRelease;
            _enemySpawner = new EnemySpawner(_time, settings.SpawnFrequency);

            bus.Subscribe <EnemyReachedGoal>(message =>
            {
                if (IsVisible)
                {
                    _gameState = GameState.Lost;
                }
            });

            bus.Subscribe <GameStateChange>(message =>
            {
                if (IsVisible && message.GameLevel == this)
                {
                    _gameState = message.GameState;
                }
            });

            bus.Subscribe <EnemyDespawned>(message =>
            {
                if (IsVisible)
                {
                    CurrentEnemiesNew.Remove(message.Enemy);
                    if (CurrentEnemiesNew.Count == 0 && _monstersLeftToSpawn.Count == 0)
                    {
                        _gameState = GameState.Won;
                    }
                }
            });

            bus.Subscribe <MouseClicked>(message =>
            {
                if (IsVisible && message.EventArgs.Button == MouseButtons.Left)
                {
                    if (_towerBeingPlaced != null)
                    {
                        // There is a tower being placed and mouse was clicked => place it.
                        PlaceTower(_towerBeingPlaced);
                    }
                }
            });

            bus.Subscribe <KeyReleased>(message =>
            {
                if (IsVisible)
                {
                    if (_gameState == GameState.Won)
                    {
                        bus.Publish(new GameStateChange(GameState.Won, this));
                        CurrentEnemiesNew.Clear();
                        return;
                    }
                    if (_gameState == GameState.Lost)
                    {
                        bus.Publish(new GameStateChange(GameState.Lost, this));
                        CurrentEnemiesNew.Clear();
                        return;
                    }

                    switch (message.Key)
                    {
                    case Keys.Space:
                        TogglePause();
                        break;

                    case Keys.D1:
                        StartPlacingTower();
                        break;
                    }
                }
            });
        }
Exemple #7
0
 public GameMapOverlay(SpriteSheets spriteSheets, GraphicsTracker graphicsTracker, FontsAndColors fontsAndColors)
 {
     _spriteSheets    = spriteSheets;
     _graphicsTracker = graphicsTracker;
     _fontsAndColors  = fontsAndColors;
 }