public RenderingEngine(RenderWindow window, ISpriteFactory spriteFactory) { _spriteFactory = spriteFactory; Window = window; _chaserSprite = _spriteFactory.CreateSprite(GameStateSingleton.Instance.State.Chaser); _playerSprite = _spriteFactory.CreateSprite(GameStateSingleton.Instance.State.Player); var iterator = GameStateSingleton.Instance.State.Map.TerrainObjects.CreateIterator(); for (var item = iterator.CurrentItem; iterator.Next() != null; iterator.Next()) { _terrainObjects.Add(_spriteFactory.CreateSprite(item)); } }
public Level(ITileTypeFactory tileTypeFactory, IMaze maze, IDisplay display, ISpriteFactory spriteFactory, IGameLogicValidator gameLogicValidator, IGameEngine gameEngine, IPlayerInput playerInput, ISpriteBehaviour pacmanBehaviour, ISpriteBehaviour ghostBehaviour) { GameLogicValidator = gameLogicValidator; GameEngine = gameEngine; _tileTypeFactory = tileTypeFactory; _gameMaze = maze; _display = display; _playerInput = playerInput; Pacman = spriteFactory.CreateSprite(1, 1, pacmanBehaviour); Ghosts.Add(spriteFactory.CreateSprite(9, 9, ghostBehaviour)); Ghosts.Add(spriteFactory.CreateSprite(9, 10, ghostBehaviour)); _allSprites.Add(Pacman); _allSprites.AddRange(Ghosts); HasWon = false; LivesLeft = 3; }
public virtual void RenderGameState() { //Next 2 lines might be shit performance _bulletStates.Clear(); GameStateSingleton.Instance.State.Bullets.ForEach(x => _bulletStates.Add(x.State)); Window.DispatchEvents(); Window.Clear(); if (GameStateSingleton.Instance.State.Player != null) { _playerSprite.Position = new Vector2f( GameStateSingleton.Instance.State.Player.State.X, GameStateSingleton.Instance.State.Player.State.Y); _playerSprite.Draw(Window, RenderStates.Default); } if (GameStateSingleton.Instance.State.Chaser != null) { _chaserSprite.Position = new Vector2f( GameStateSingleton.Instance.State.Chaser.State.X, GameStateSingleton.Instance.State.Chaser.State.Y); _chaserSprite.Draw(Window, RenderStates.Default); } if (GameStateSingleton.Instance.State.Map.TerrainObjects.Count != 0) { for (int i = 0; i < _terrainObjects.Count; i++) { GameObject obj = (GameObject)GameStateSingleton.Instance.State.Map.TerrainObjects[i]; _terrainObjects[i].Position = new Vector2f(obj.State.X, obj.State.Y); _terrainObjects[i].Draw(Window, RenderStates.Default); } } var bulletSprite = _spriteFactory.CreateSprite(new Bullet(Directions.Down, new HomingBuletStrategy(), null)); foreach (var state in _bulletStates) { bulletSprite.Draw(Window, state); } if (score == null) { var font = new Font("Assets/arial.ttf"); score = new Text { Font = font, FillColor = Color.Cyan, Style = Text.Styles.Bold, CharacterSize = 25 }; scoreTextText = new Text { Font = font, FillColor = Color.Cyan, CharacterSize = 20 }; } ScoreText = interpreter.InterpretNumber(GameStateSingleton.Instance.State.Score); score.DisplayedString = "SCORE: " + GameStateSingleton.Instance.State.Score; scoreTextText.DisplayedString = ScoreText; score.Draw(Window, RenderStates.Default); scoreTextText.Position = new Vector2f(0, 20); scoreTextText.Draw(Window, RenderStates.Default); Window.Display(); }