Ejemplo n.º 1
0
        public UiSystem(IRenderer renderer)
        {
            _levelSetup = new GameSetup.LevelSetup();
            SpriteSet   = new SpriteSet();
            Display     = new Display(_levelSetup.MapHeight + 5, _levelSetup.MapWidth, SpriteSet);
            Inputs      = new Inputs();
            ScoreBoard  = new ScoreBoard(Display);

            _renderer = renderer;

            _uiMode = new TestMode(this);
        }
Ejemplo n.º 2
0
        public void Tick()
        {
            Inputs.Coin.On(() => Credits++);

            Inputs.Reset.On(() =>
            {
                _uiMode = new TestMode(this);
                Credits = 0;
            });

            Inputs.Pause.On(() => _paused = !_paused);

            if (!_paused || Inputs.Tick.WasPressed)
            {
                Display.ClearSprites();

                Inputs.FastForward.On(() =>
                {
                    for (int i = 0; i < 7; i++)
                    {
                        _uiMode.Tick();
                    }
                });

                var alive = _uiMode.Tick();

                switch (_uiMode)
                {
                case TestMode _:
                {
                    if (!alive)
                    {
                        _uiMode = new AttractMode(this);
                    }

                    break;
                }

                case AttractMode _:
                {
                    if (!alive)
                    {
                        _uiMode = new DemoMode(this, _levelSetup);
                    }

                    if (Credits > 0)
                    {
                        _uiMode = new CoinsInMode(this);
                    }

                    break;
                }

                case CoinsInMode _:
                {
                    Inputs.Player1Start.On(() =>
                        {
                            Credits--;
                            _uiMode = new PlayMode(this, _levelSetup);
                        });

                    break;
                }

                case DemoMode _:
                {
                    if (!alive)
                    {
                        _uiMode = new AttractMode(this);
                    }

                    if (Credits > 0)
                    {
                        _uiMode = new CoinsInMode(this);
                    }

                    break;
                }

                case PlayMode _:
                {
                    if (!alive)
                    {
                        _uiMode = new AttractMode(this);
                    }

                    break;
                }
                }
            }

            if (_inRender)
            {
                return;
            }
            _inRender = true;
            _renderer.Render(Display);
            _inRender = false;
        }