Beispiel #1
0
        public static void IceballCollideWithBlock(IceballObject iceball, IGameObject block)
        {
            Level      level            = Game1.Instance.currentState.Level;
            Rectangle  iceballRectangle = iceball.GetHitBox();
            Rectangle  blockRectangle   = block.GetHitBox();
            IBlock     castBlock        = (IBlock)block;
            ICollision collisionSide    = CollisionSideDetector.DetectCollisionSide(iceballRectangle, blockRectangle);

            if (castBlock.State is HiddenItemBlockState)
            {
                return;
            }

            if (collisionSide is TopCollision)
            {
                iceball.Position = new Vector2(iceball.Position.X, iceball.Position.Y - collisionSide.CollisionIntersection.Height);
                iceball.BounceOffGround();
            }
            else if (collisionSide is RightCollision)
            {
                level.AddObject(new IceballExplosion((int)iceball.Position.X, (int)iceball.Position.Y));
                iceball.Explode();
            }
            else if (collisionSide is LeftCollision)
            {
                level.AddObject(new IceballExplosion((int)iceball.Position.X, (int)iceball.Position.Y));
                iceball.Explode();
            }
            else if (collisionSide is BottomCollision)
            {
                level.AddObject(new IceballExplosion((int)iceball.Position.X, (int)iceball.Position.Y));
                iceball.PhysicsObject.dy = 10.0F;
            }
        }
Beispiel #2
0
        public static void DetectCollision(IceballObject iceball)
        {
            List <IGameObject> gameObjects = new List <IGameObject>(Game1.Instance.currentState.Level.GetObjects());

            gameObjects.AddRange(Game1.Instance.currentState.Level.BigFloorRectangles);
            List <IEnemy> enemies          = new List <IEnemy>(Game1.Instance.currentState.Level.GetEnemies());
            Rectangle     iceballRectangle = iceball.GetHitBox();

            foreach (IGameObject collidedObject in gameObjects)
            {
                Rectangle collidedObjectRectangle = collidedObject.GetHitBox();
                if (iceballRectangle.Intersects(collidedObjectRectangle))
                {
                    if (collidedObject is IBlock)
                    {
                        IceballBlockCollisionResponder.IceballCollideWithBlock(iceball, collidedObject);
                    }
                    else if (collidedObject is IPipe)
                    {
                        IceballPipeCollisionResponder.IceballCollideWithPipe(iceball, (IPipe)collidedObject, Game1.Instance.currentState.Level);
                    }
                }
            }
            foreach (IEnemy enemy in enemies)
            {
                Rectangle enemyRectangle = enemy.GetHitBox();
                if (iceballRectangle.Intersects(enemyRectangle))
                {
                    Game1.Instance.currentState.Level.AddObject(new IceballExplosion((int)iceball.Position.X, (int)iceball.Position.Y));
                    IceballEnemyCollisionResponder.IceballCollideWithEnemy(iceball, enemy);
                }
            }
        }
Beispiel #3
0
        public static void IceballCollideWithPipe(IceballObject iceball, IPipe pipe, Level level)
        {
            Rectangle  iceballRectangle = iceball.GetHitBox();
            Rectangle  pipeRectangle    = pipe.GetHitBox();
            ICollision collisionSide    = CollisionSideDetector.DetectCollisionSide(iceballRectangle, pipeRectangle);

            if (collisionSide is TopCollision)
            {
                iceball.BounceOffGround();
            }
            else
            {
                level.AddObject(new IceballExplosion((int)iceball.Position.X, (int)iceball.Position.Y));
                iceball.Explode();
            }
        }
Beispiel #4
0
 public IceballSprite(IceballObject iceballObject)
 {
     this.iceballObject = iceballObject;
     destination        = new Rectangle((int)iceballObject.Position.X, (int)iceballObject.Position.Y, 16, 16);
 }
 public static void IceballCollideWithEnemy(IceballObject iceball, IEnemy enemy)
 {
     iceball.Explode();
     enemy.Freeze();
 }
 public static void IceballCollision(IceballObject iceball)
 {
     IceballCollisionDetection.DetectCollision(iceball);
 }