Пример #1
0
        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));
            }
        }
Пример #2
0
 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;
 }
Пример #3
0
        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();
        }