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; } } }
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; } }