Beispiel #1
0
        private void ShootDuck()
        {
            // Shoot the duck
            if (GetCollision())
            {
                if (Hud.Hud.NumShotsLeft > 0)
                {
                    // Post message to the score board.
                    ScoreMessage message = new ScoreMessage()
                    {
                        ScoreIncrement = 10
                    };
                    Channels.PostMessage("score", message);

                    DuckHitMessage duckHitMessage = new DuckHitMessage()
                    {
                        State = DuckIndicatorStateEnum.Hit
                    };
                    Channels.PostMessage("duckhit", duckHitMessage);

                    Channels.PostMessage("soundeffects", new SoundEffectMessage()
                    {
                        SoundEffectToPlay = "death"
                    });
                    State = DuckStateEnum.Dead;
                }
            }
        }
Beispiel #2
0
        public void Update(GameTime gameTime)
        {
            switch (State)
            {
            case DuckStateEnum.Start:
                break;

            case DuckStateEnum.Fying:
                _duck.Update(gameTime);
                _duckClock.Start();

                if (!_playDuckSound)
                {
                    Channels.PostMessage("soundeffects", new SoundEffectMessage()
                    {
                        SoundEffectToPlay = "quaks"
                    });
                    Channels.PostMessage("soundeffects", new SoundEffectMessage()
                    {
                        SoundEffectToPlay = "flapping"
                    });

                    _playDuckSound = true;
                }

                if (_duckClock.ElapsedMilliseconds > 1000)
                {
                    BoundDuckOffWalls();
                }

                if (_duckClock.ElapsedMilliseconds > 6000)
                {
                    State = DuckStateEnum.FlyAway;
                }

                ShootDuck();
                break;

            case DuckStateEnum.Dead:
                _duckDeath.X = _duck.X;
                _duckDeath.Y = _duck.Y;

                _duckDive.X = _duck.X;
                _duckDive.Y = _duck.Y;

                break;

            case DuckStateEnum.FlyAway:
                _duck.Update(gameTime);

                if (DuckOutOfBounds(_duck))
                {
                    State = DuckStateEnum.Finished;
                    DuckHitMessage duckHitMessage = new DuckHitMessage()
                    {
                        State = DuckIndicatorStateEnum.Miss
                    };
                    Channels.PostMessage("duckhit", duckHitMessage);
                }

                ShootDuck();
                break;

            case DuckStateEnum.Dive:
                _duckDive.Update(gameTime);
                _duckDive.Velocity = new Vector2(0, 15);

                if (!_playFallingSound)
                {
                    Channels.PostMessage("soundeffects", new SoundEffectMessage()
                    {
                        SoundEffectToPlay = "falling"
                    });
                    _playFallingSound = true;
                }

                if (DuckOutOfBounds(_duckDive))
                {
                    State = DuckStateEnum.Finished;
                }
                break;

            case DuckStateEnum.Finished:

                break;
            }
        }