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); }
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>()); }
public PointF GetWindowLocation(GraphicsTracker graphicsTracker, PointF locationCenter) { Size offset = IsRelativeToMap ? graphicsTracker.MapOffset.ToSize() : Size.Empty; return(PointF.Add(locationCenter, offset)); }
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; } } }); }
public GameMapOverlay(SpriteSheets spriteSheets, GraphicsTracker graphicsTracker, FontsAndColors fontsAndColors) { _spriteSheets = spriteSheets; _graphicsTracker = graphicsTracker; _fontsAndColors = fontsAndColors; }