Exemple #1
0
        public void Handle(ICollidable mover, ICollidable target, CollisionDirection.DirectionTag direction)
        {
            if (typeof(PushableBlock).IsInstanceOfType(mover) && typeof(PushableBlock).IsInstanceOfType(target))
            {
                item1 = (PushableBlock)mover;
                item2 = (PushableBlock)target;
                switch (direction)
                {
                case CollisionDirection.DirectionTag.Top:
                    item1.Physics.yPosition = item2.GetTopSide() - item1.GetHeight();
                    item1.Ground();
                    break;

                case CollisionDirection.DirectionTag.Bottom:
                    item1.Physics.yPosition = item2.GetBottomSide() + 1;
                    break;

                case CollisionDirection.DirectionTag.Left:
                    SwapXVelocity(item1, item2);
                    item1.Physics.xPosition = item2.GetLeftSide() - item1.GetWidth();
                    break;

                case CollisionDirection.DirectionTag.Right:
                    SwapXVelocity(item1, item2);
                    item1.Physics.xPosition = item2.GetRightSide() + 1;
                    break;

                default:
                    Console.WriteLine(Config.GetCollisionResolutionException() + GetType().ToString());
                    break;
                }
            }
        }