public override void CollisionedBy(CollisionBase collision) { // brick hit by ball if (collision.GetType() == Type.GetType("gArkanoid.Entities.Ball")) { lives--; if (lives == 0) { Board.RemoveBrick(this); GameControl.AddScorePoints((int)this.brickType); // reward & explosion this.GenerateReward(); this.GenerateExplosion(); // play de 'hit' sound from a separate thread (performance problems) // Thread thread = new Thread(new ThreadStart(PlaySound)); // thread.Start(); } } // brick hit by shot if (collision.GetType() == Type.GetType("gArkanoid.Entities.Shot")) { // destroy the brick & shot Board.RemoveBrick(this); Board.RemoveShot((Shot)collision); GameControl.AddScorePoints((int)this.brickType); // reward & explosion this.GenerateReward(); this.GenerateExplosion(); // play de 'hit' sound from a separate thread (performance problems) // Thread oThread = new Thread(new ThreadStart(PlaySound)); // oThread.Start(); } }
public override void CollisionedBy(CollisionBase collision) { // playerpad hit a reward if (collision.GetType() == Type.GetType("gArkanoid.Entities.Reward")) { Board.RemoveReward((Reward)collision); GameControl.AddScorePoints((int)((Reward)collision).RewardType); switch (((Reward)collision).RewardType) { case Reward.eRewardType.None: break; case Reward.eRewardType.WidePad: RewardWidePad(); break; case Reward.eRewardType.FirePad: RewardShotingPad(); break; case Reward.eRewardType.SlowBall: SlowBallEventHandler oSlowBallEventHandler = SlowBallRewardEvent; if (oSlowBallEventHandler != null) // invoke the delegates { oSlowBallEventHandler(this, new EventArgs()); } break; case Reward.eRewardType.DemolitionBall: DemolitionBallEventHandler oDemolitionBallEventHandler = DemolitionBallRewardEvent; if (oDemolitionBallEventHandler != null) // invoke the delegates { oDemolitionBallEventHandler(this, new EventArgs()); } break; case Reward.eRewardType.DoubleBall: DoubleBallEventHandler oDoubleBallEventHandler = DoubleBallRewardEvent; if (oDoubleBallEventHandler != null) // invoke the delegates { oDoubleBallEventHandler(this, new EventArgs()); } break; case Reward.eRewardType.TripleBall: TripleBallEventHandler oTripleBallEventHandler = TripleBallRewardEvent; if (oTripleBallEventHandler != null) // invoke the delegates { oTripleBallEventHandler(this, new EventArgs()); } break; case Reward.eRewardType.WinLevel: WinLevelEventHandler oWinLevelEventHandler = WinLevelRewardEvent; if (oWinLevelEventHandler != null) // invoke the delegates { oWinLevelEventHandler(this, new EventArgs()); } break; default: break; } } }