Esempio n. 1
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         if (this is OneUpMushroom)
         {
             SoundFactory.Instance.UpEat();
         }
         else if (this is SuperMushroom)
         {
             SoundFactory.Instance.PowerEat();
         }
         else if (this is Coin)
         {
             SoundFactory.Instance.Coin();
         }
         Collect = true;
     }
     else
     {
         if (direction == CollisionDetection.Direction.right || direction == CollisionDetection.Direction.left)
         {
             ChangeDirection();
         }
         else
         {
             Vector2 vel = Velocity;
             vel.Y    = 0;
             Velocity = vel;
         }
     }
 }
Esempio n. 2
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (direction == CollisionDetection.Direction.up)
     {
         OnRaiseWarpEvent(new EventArgs());
     }
 }
Esempio n. 3
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario mario)
     {
         if (facingDirection == direction)
         {
             if (facingDirection == CollisionDetection.Direction.up)
             {
                 if (mario.ActionStateEnum == Mario.ActionStateType.Crouching)
                 {
                     SoundItems.SoundFactory.Instance.Pipe();
                     OnRaiseWarpEvent(new WarpEventArgs(Warp, 1));
                 }
             }
             else
             {
                 int dir;
                 if (facingDirection == CollisionDetection.Direction.right)
                 {
                     dir = 4;
                 }
                 else if (facingDirection == CollisionDetection.Direction.left)
                 {
                     dir = 2;
                 }
                 else
                 {
                     dir = 3;
                 }
                 OnRaiseWarpEvent(new WarpEventArgs(Warp, dir));
             }
         }
     }
 }
Esempio n. 4
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is IBlock)
     {
         Collect = true;
     }
     else if (entity is Mario)
     {
         if (((Mario)entity).PowerStateEnum == Mario.PowerStateType.Star)
         {
             TakeDamage();
             SoundFactory.Instance.Stomp();
             NeedsUpdating = true;
             Collidable    = false;
             Stage.player.AddPoints(1000);
         }
     }
     else if (entity is BulletBill)
     {
         TakeDamage();
         SoundFactory.Instance.Stomp();
         NeedsUpdating = true;
         Collidable    = false;
     }
 }
Esempio n. 5
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (!used)
     {
         base.CollisionResponse(entity, direction);
     }
 }
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity.Type == EntityType.Fireball || (entity is Mario && ((Mario)entity).PowerStateEnum == Mario.PowerStateType.Star))
     {
         Collect = true;
         cameFrom.NeedsUpdating = false;
     }
 }
Esempio n. 7
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         Collect       = true;
         NeedsUpdating = true;
     }
 }
Esempio n. 8
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         SoundFactory.Instance.Coin();
         Collect = true;
     }
 }
Esempio n. 9
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         if (direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov)
         {
             CollisionTransition((Mario)entity);
         }
     }
 }
Esempio n. 10
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         if (direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov)
         {
             CollisionTransition((Mario)entity);
             SoundFactory.Instance.BrickDes();
         }
     }
 }
Esempio n. 11
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     base.CollisionResponse(entity, direction);
     if (entity is MarioEntity.Mario)
     {
         while (LocksLeft > 0 && Stage.player.Keys > 0)
         {
             LocksLeft--;
             Stage.player.Keys--;
             KeyHoles[LocksLeft].Used = true;
         }
     }
 }
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         if (direction == CollisionDetection.Direction.up || ((Mario)entity).PowerStateEnum == Mario.PowerStateType.Star)
         {
             SoundFactory.Instance.Stomp();
             NeedsUpdating = true;
             Collidable    = false;
             TakeDamage();
         }
     }
     else if (entity is IBlock)
     {
         if (direction == CollisionDetection.Direction.left || direction == CollisionDetection.Direction.right)
         {
             ChangeDirection();
         }
         else
         {
             Vector2 vel = Velocity;
             vel.Y    = 0;
             Velocity = vel;
         }
     }
     else if (entity is AbstractEnemy)
     {
         if (direction == CollisionDetection.Direction.left && Velocity.X < 0)
         {
             ChangeDirection();
         }
         else if (direction == CollisionDetection.Direction.right && Velocity.X > 0)
         {
             ChangeDirection();
         }
     }
     else if (entity is Fireball)
     {
         TakeDamage();
         SoundFactory.Instance.Stomp();
         NeedsUpdating = true;
         Collidable    = false;
         OnRaiseFireballEvent(null);
     }
 }
Esempio n. 13
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is IBlock)
     {
         if (direction != CollisionDetection.Direction.down)
         {
             Collect = true;
         }
         else
         {
             GiveUpVelocity();
         }
     }
     else
     {
         Collect = true;
     }
 }
Esempio n. 14
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         Collect = true;
     }
     else if (entity is IBlock)
     {
         if (direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov)
         {
             GiveUpVelocity();
         }
         else if (direction == CollisionDetection.Direction.right || direction == CollisionDetection.Direction.left)
         {
             ChangeDirection();
         }
     }
 }
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (box.Right >= entity.CollisionBox.Right && box.Left <= entity.CollisionBox.Left && box.Top <= entity.CollisionBox.Top && box.Bottom >= entity.CollisionBox.Bottom)
     {
         if (!entered && entity.Type == LookingFor)
         {
             entered = true;
             OnRaiseEnterEvent(new CollisionZoneEventArgs(entity));
         }
     }
     else
     {
         if (entered && entity.Type == LookingFor)
         {
             entered = false;
             OnRaiseLeaveEvent(new CollisionZoneEventArgs(entity));
         }
     }
 }
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     if (entity is Mario)
     {
         if (((Mario)entity).PowerStateEnum == Mario.PowerStateType.Star)
         {
             TakeDamage();
             SoundFactory.Instance.Stomp();
             NeedsUpdating = true;
             Collidable    = false;
         }
         if (direction == CollisionDetection.Direction.up)
         {
             EnterShell();
             SoundFactory.Instance.Stomp();
         }
         if (EnemyState is KoopaShellState)
         {
             if (!Held && !((KoopaShellState)EnemyState).GetDeadly())
             {
                 if (direction == CollisionDetection.Direction.left)
                 {
                     ((KoopaShellState)EnemyState).Right();
                     SoundFactory.Instance.Stomp();
                 }
                 else if (direction == CollisionDetection.Direction.right)
                 {
                     ((KoopaShellState)EnemyState).Left();
                     SoundFactory.Instance.Stomp();
                 }
             }
         }
     }
     else if (entity is IBlock)
     {
         if (direction == CollisionDetection.Direction.left || direction == CollisionDetection.Direction.right)
         {
             ChangeDirection();
             if (EnemyState is KoopaShellState)
             {
                 ((IBlock)entity).CollisionTransition();
             }
         }
         else
         {
             Vector2 vel = Velocity;
             vel.Y    = 0;
             Velocity = vel;
             ((IBlock)entity).CollisionTransition();
         }
     }
     else if (entity is AbstractEnemy)
     {
         if (EnemyState is KoopaShellState)
         {
             ((AbstractEnemy)entity).TakeDamage();
             SoundFactory.Instance.Stomp();
         }
         else
         {
             if (direction == CollisionDetection.Direction.left && Velocity.X < 0)
             {
                 ChangeDirection();
             }
             else if (direction == CollisionDetection.Direction.right && Velocity.X > 0)
             {
                 ChangeDirection();
             }
         }
     }
     else if (entity is Fireball)
     {
         TakeDamage();
         SoundFactory.Instance.Stomp();
         NeedsUpdating = true;
         Collidable    = false;
         OnRaiseFireballEvent(null);
     }
 }
Esempio n. 17
0
 public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     Collect = true;
 }
Esempio n. 18
0
 public WarpEntranceBlock(Texture2D texture, CollisionDetection.Direction dir) : base(texture, EntityType.WarpPipe)
 {
     facingDirection = dir;
     Order           = .7f;
 }
Esempio n. 19
0
        public override void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
        {
            if (entity is AbstractEnemy && !(entity is Canon))
            {
                if (PowerStateEnum != PowerStateType.Star)
                {
                    if (!((AbstractEnemy)entity is AbstractKoopa) && (entity is PiranhaPlant || (direction != CollisionDetection.Direction.down && direction != CollisionDetection.Direction.downnov)))
                    {
                        TakeDamage();
                    }
                    else
                    {
                        //player gets points
                        if (entity is BulletBill)
                        {
                            if (ActionStateEnum == ActionStateType.Jumping)
                            {
                                OnGround = true;
                                ActionState.ActionDown();
                            }
                        }
                        else if (entity is AbstractKoopa)
                        {
                            IEnemyState koopaState = ((AbstractEnemy)entity).EnemyState;
                            if (!(koopaState is KoopaShellState) && !(direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov))
                            {
                                TakeDamage();
                            }
                            else if (koopaState is KoopaShellState && ((KoopaShellState)koopaState).GetDeadly() && !(direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov))
                            {
                                TakeDamage();
                            }
                            else if (ActionStateEnum != ActionStateType.HoldingShell && holding && koopaState is KoopaShellState && !((KoopaShellState)koopaState).GetDeadly())
                            {
                                ActionState.Leave(new MarioHoldingShellState(this, (AbstractKoopa)entity, ActionState));
                            }
                            else
                            {
                                if (direction == CollisionDetection.Direction.down || direction == CollisionDetection.Direction.downnov)
                                {
                                    Velocity = new Vector2(Velocity.X, -4f);
                                    OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));
                                }
                            }
                        }
                        else
                        {
                            Velocity = new Vector2(Velocity.X, -4f);
                            OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));
                        }
                    }
                }
                else
                {
                    OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));//player gets points
                }
            }
            else if (entity is IBlock)
            {
                switch (direction)
                {
                case CollisionDetection.Direction.down:
                    if (ActionStateEnum == ActionStateType.Jumping)
                    {
                        ActionState.ActionDown();
                    }
                    break;

                case CollisionDetection.Direction.up:
                    ActionState.ActionDown();
                    OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));
                    break;

                case CollisionDetection.Direction.downnov:
                    if (ActionState is MarioActionStateJump)
                    {
                        ActionState.ActionDown();
                    }
                    break;

                case CollisionDetection.Direction.upnov:
                    ActionState.ActionDown();
                    OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));
                    break;
                }
            }
            else if (entity is IItem)
            {
                if (entity is Star)
                {
                    StarAction();
                }
                if (entity is FireFlower)
                {
                    ActionFireFlower();
                }
                if (entity is SuperMushroom)
                {
                    SuperMushroomAction(false);
                }
                //mario gets points
                if (entity is Key key)
                {
                    System.Diagnostics.Debug.WriteLine(key.KeyNum);
                }
                OnRaiseCollisionEvent(new MarioCollisionEventArgs(entity));
            }
        }
 public virtual void CollisionResponse(IEntity entity, CollisionDetection.Direction direction)
 {
     //defualt is to do nothing.
 }