コード例 #1
0
ファイル: Bullet.cs プロジェクト: rdblue02/SideProjects
 public override void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime)
 {
     if (CollidingObject is Brick)
     {
         this.IsActive = false;
     }
 }
コード例 #2
0
ファイル: Brick.cs プロジェクト: rdblue02/SideProjects
 public override void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime)
 {
     if (CollidingObject is Bullet)
     {
         BrickLevel--;
         CollisionLogic();
         return;
     }
     if (CollidingObject is Ball ball)
     {
         //multi break should destroy the brick regardless of level
         if (ball.MultiBrickBreak)
         {
             for (int i = BrickLevel; i > 0; i--)
             {
                 CurrentGame.Score += 10;
             }
             BrickLevel = 0;
         }
         else
         {
             CurrentGame.Score += 10;
             BrickLevel--;
         }
         CollisionLogic();
     }
 }
コード例 #3
0
ファイル: Slider.cs プロジェクト: rdblue02/SideProjects
 public override void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime)
 {
     //this got annoying really fast
     //if(CollidingObject is Ball)
     //{
     //      Console.Beep();
     //}
 }
コード例 #4
0
        public override void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime)
        {
            if (CollidingObject is Slider slider)
            {
                var sliderPartLength = slider.Sprite.Width / 3;
                var ballLeft         = this.Sprite.Left.Point.X;
                var ballRight        = this.Sprite.Right.Point.X;
                var sliderLeft       = slider.Sprite.Left.Point.X;
                var sliderRight      = slider.Sprite.Right.Point.X;

                if (ballRight >= sliderLeft && ballLeft < sliderLeft + sliderPartLength)
                {
                    this.CurrentDirection = Direction.UpLeft;
                }
                else if (ballLeft <= sliderRight && ballRight > sliderRight - sliderPartLength)
                {
                    this.CurrentDirection = Direction.UpRight;
                }
                else
                {
                    this.CurrentDirection = Direction.Up;
                }
            }
            if (CollidingObject is Brick && !MultiBrickBreak)
            {
                switch (this.CurrentDirection)
                {
                case Direction.Up:
                    this.CurrentDirection = Direction.Down;
                    break;

                case Direction.UpLeft:
                    this.CurrentDirection = Direction.DownLeft;
                    break;

                case Direction.UpRight:
                    this.CurrentDirection = Direction.DownRight;
                    break;

                case Direction.Down:
                    this.CurrentDirection = Direction.Up;
                    break;

                case Direction.DownRight:
                    this.CurrentDirection = Direction.UpRight;
                    break;

                case Direction.DownLeft:
                    this.CurrentDirection = Direction.UpLeft;
                    break;
                }
            }
        }
コード例 #5
0
ファイル: PowerUp.cs プロジェクト: rdblue02/SideProjects
        public override void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime)
        {
            if (CollidingObject is Slider)
            {
                //Handover whatever power up effect we have to the objects impacted by it.
                var effectedObjects = GameObjectCollection.GetActive <T>();
                foreach (var obj in effectedObjects)
                {
                    foreach (var effect in this.PowerUpEffects)
                    {
                        if (obj.PowerUpEffects.All(x => x.PowerUpEffectAction != effect.PowerUpEffectAction))
                        {
                            obj.PowerUpEffects.Add(effect);
                            CurrentGame.Score += 25;
                        }
                    }
                }

                this.IsActive = false;
            }
        }
コード例 #6
0
 public abstract void ProcessCollisions(InteractiveGameObject CollidingObject, GameTime gameTime);