public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(link != null);
            Contract.Requires(block != null);

            if (block.IsMovable)
            {
                block.Knockback         = true;
                block.CollisionLocation = block.Position;

                switch (collision)
                {
                case Enumerations.CollisionSide.Right:
                    RightCollision(block);
                    break;

                case Enumerations.CollisionSide.Left:
                    LeftCollision(block);
                    break;

                case Enumerations.CollisionSide.Top:
                    UpCollision(block);
                    break;

                case Enumerations.CollisionSide.Bottom:
                    DownCollision(block);
                    break;

                default:
                    break;
                }
            }
            link.Knockback = false;
            link.Velocity  = new Vector2(0, 0);
        }
        public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(block != null);
            Contract.Requires(item != null);

            block.IsDestructable = true;
            foreach (IDoorTrigger doorTrigger in Room.CurrentRoomDoorTriggers)
            {
                if (doorTrigger.GameObjectType == Enumerations.GameObjectType.DoorTriggerUp)
                {
                    doorTrigger.IsDestructable = true;
                }
            }

            IBlock newDoor = new BlockUpBombedOpening();

            newDoor.Position = block.Position;
            IDoorTrigger newTrigger = new BlockUpOverBombed();

            newTrigger.Position = new Vector2(Constant.UpOverBombedPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.UpOverBombedPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight);
            Room.CurrentRoomBlocks.Add(newDoor);
            Room.CurrentRoomDoorTriggers.Add(newTrigger);
            SoundManager.Instance.PlayFoundSecret();

            int oppositeRoom = GameObjects.Instance.LevelListPosition - Constant.DungeonGridWidth;

            Enumerations.Direction doorDirection = Enumerations.Direction.Down;
            Enumerations.DoorType  doorType      = Enumerations.DoorType.Bombed;
            ToolsXML toolsXml = new ToolsXML();

            toolsXml.ReplaceOppositeDoorNodeXML(oppositeRoom, doorType, doorDirection);
        }
Example #3
0
        public static void HandleCollision(ILink link, IProjectile projectile, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(projectile != null);
            //Contract.Requires(collision != null);

            link.DamagePlayer(projectile.DamageAmount);
            SoundManager.Instance.PlayLinkHit();
            link.Knockback         = true;
            link.CollisionLocation = link.Position;

            switch (collisionSide)
            {
            case Enumerations.CollisionSide.Left:
                LeftCollision(link);
                break;

            case Enumerations.CollisionSide.Right:
                RightCollision(link);
                break;

            case Enumerations.CollisionSide.Top:
                UpCollision(link);
                break;

            case Enumerations.CollisionSide.Bottom:
                DownCollision(link);
                break;

            default:
                break;
            }
        }
        public static void HandleCollision(IBlock blockOne, IBlock blockTwo, Enumerations.CollisionSide collision)
        {
            Contract.Requires(blockOne != null);
            Contract.Requires(blockTwo != null);

            if (blockOne.IsMovable)
            {
                blockOne.Knockback         = true;
                blockOne.CollisionLocation = blockOne.Position;

                switch (collision)
                {
                case Enumerations.CollisionSide.Right:
                    RightCollision(blockOne);
                    break;

                case Enumerations.CollisionSide.Left:
                    LeftCollision(blockOne);
                    break;

                case Enumerations.CollisionSide.Top:
                    UpCollision(blockOne);
                    break;

                case Enumerations.CollisionSide.Bottom:
                    DownCollision(blockOne);
                    break;

                default:
                    break;
                }
            }
            blockTwo.Knockback = false;
        }
Example #5
0
        public static void HandleCollision(IUsableItem projectile, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(block != null);
            Contract.Requires(projectile != null);

            if (block.IsMovable)
            {
                block.Knockback         = true;
                block.CollisionLocation = block.Position;

                switch (collision)
                {
                case Enumerations.CollisionSide.Right:
                    RightCollision(block);
                    break;

                case Enumerations.CollisionSide.Left:
                    LeftCollision(block);
                    break;

                case Enumerations.CollisionSide.Top:
                    UpCollision(block);
                    break;

                case Enumerations.CollisionSide.Bottom:
                    DownCollision(block);
                    break;

                default:
                    break;
                }
            }
            block.Knockback = false;
        }
Example #6
0
        public static void HandleCollision(INPC character, IUsableItem item, Enumerations.CollisionSide collisionSide)
        {
            character.TakeDamage(item.DamageAmount);
            item.IsDestructable          = true;
            UsableWoodenSword.projectile = null;
            UsableWoodenSword.IsMoving   = false;
            //  Room.CurrentRoomSpriteEffects.Add(new EffectSwordBeamCollision(item.Position));
            SoundManager.Instance.PlayEnemyHit();


            switch (collisionSide)
            {
            case Enumerations.CollisionSide.Right:
                RightCollision(character);
                break;

            case Enumerations.CollisionSide.Left:
                LeftCollision(character);
                break;

            case Enumerations.CollisionSide.Top:
                UpCollision(character);
                break;

            case Enumerations.CollisionSide.Bottom:
                DownCollision(character);
                break;

            default:
                break;
            }
        }
Example #7
0
        public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(link != null);
            Contract.Requires(block != null);

            link.Position += new Vector2(-1 * Constant.DisplayScaleX, 0);
        }
Example #8
0
        public static void HandleCollision(ILink link, IItem item, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(item != null);

            item.PickUp(link);
        }
Example #9
0
        public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(link != null);
            Contract.Requires(block != null);

            link.Position += new Vector2(0, -1);
        }
Example #10
0
        public static void HandleCollision(INPC character, IUsableItem item, Enumerations.CollisionSide collisionSide)
        {
            character.TakeDamage(item.DamageAmount);
            item.IsDestructable = true;

            SoundManager.Instance.PlayEnemyHit();


            switch (collisionSide)
            {
            case Enumerations.CollisionSide.Right:
                RightCollision(character);
                break;

            case Enumerations.CollisionSide.Left:
                LeftCollision(character);
                break;

            case Enumerations.CollisionSide.Top:
                UpCollision(character);
                break;

            case Enumerations.CollisionSide.Bottom:
                DownCollision(character);
                break;

            default:
                break;
            }
        }
Example #11
0
        public static void HandleCollision(ILink link, IItem item, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(item != null);

            item.PickUp(link);
            SoundManager.Instance.PlayFairyPickUp();
        }
Example #12
0
 public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision)
 {
     Contract.Requires(block != null);
     Contract.Requires(item != null);
     item.IsDestructable          = true;
     UsableWoodenSword.projectile = null;
     UsableWoodenSword.IsMoving   = false;
     Room.CurrentRoomSpriteEffects.Add(new EffectSwordBeamCollision(item.Position));
 }
        public static void HandleCollision(ILink link, IItem item, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(item != null);

            item.PickUp(link);
            SoundManager.Instance.PlayEquipmentItemPickUp();
            link.State = new LinkGetItemState(link);
        }
Example #14
0
        public static void HandleCollision(ILink link, IItem item, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(item != null);

            item.PickUp(link);
            SoundManager.Instance.PlayPickUpTriforcePieceMusic();
            link.State           = new LinkGetItemState(link);
            Game1.Instance.State = new StateWinning(Game1.Instance.State);
        }
Example #15
0
 private static void DownCollision(ILink link, IUsableItem projectile, Enumerations.CollisionSide collisionSide)
 {
     if (link.FacingDirection.Equals(collisionSide))
     {
         projectile.Velocity = Vector2.UnitY * ItemConstants.ItemKnockbackSpeed;
     }
     else
     {
         link.Velocity = -Vector2.UnitY * Constant.LinkKnockbackSpeed;
     }
 }
Example #16
0
        public static void HandleCollision(ILink link, IDoorTrigger doorTrigger, Enumerations.CollisionSide collision)
        {
            Contract.Requires(link != null);
            Contract.Requires(doorTrigger != null);

            GameObjects.Instance.currentRoom.UpdateSavedStateXML();
            ToolsXML toolsXml = new ToolsXML();
            toolsXml.SaveUpdatedRoomXml();
            roomTransition.Update(doorTrigger);
            toolsXml.SetStageXmlDocument();
        }
        public static void HandleCollision(ILink link, IItem item, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(item != null);

            item.PickUp(link);

            /*
             *
             * //Add One heart to Link's Max Life
             *
             * //play the following for the length of time it takes to fill one heart (2 half hearts)
             * int currentTick = 0;
             * while (currentTick < (2 * Constant.TicksPerFrameHalfHeart))
             * {
             *  SoundManager.Instance.PlayFillHeartMeterLooped();
             *  currentTick++;
             * }
             */
        }
Example #18
0
        public static void HandleCollision(ILink link, IUsableItem projectile, Enumerations.CollisionSide collisionSide)
        {
            Contract.Requires(link != null);
            Contract.Requires(projectile != null);
            //Contract.Requires(collision != null);

            projectile.IsDestructable = true;

            if (link.FacingDirection.Equals(collisionSide))
            {
                projectile.Knockback         = true;
                projectile.CollisionLocation = projectile.Position;
            }
            else
            {
                link.Knockback         = true;
                link.CollisionLocation = link.Position;
            }

            switch (collisionSide)
            {
            case Enumerations.CollisionSide.Right:
                RightCollision(link, projectile, collisionSide);
                break;

            case Enumerations.CollisionSide.Left:
                LeftCollision(link, projectile, collisionSide);
                break;

            case Enumerations.CollisionSide.Top:
                UpCollision(link, projectile, collisionSide);
                break;

            case Enumerations.CollisionSide.Bottom:
                DownCollision(link, projectile, collisionSide);
                break;

            default:
                break;
            }
        }
Example #19
0
        public List <Tuple <IGameObject, IGameObject, Rectangle, Enumerations.CollisionSide> > CollisionSideDetect()
        {
            if (collisionRectangleEventList != null)
            {
                foreach (Tuple <IGameObject, IGameObject, Rectangle> closeProximityEvent in collisionRectangleEventList)
                {
                    gameObject1           = closeProximityEvent.Item1;
                    gameObject2           = closeProximityEvent.Item2;
                    intersectionRectangle = closeProximityEvent.Item3;
                    collisionSideObject1  = Enumerations.CollisionSide.None;


                    if (intersectionRectangle.Width >= intersectionRectangle.Height)
                    {
                        if (gameObject1.Center.Y < gameObject2.Center.Y)
                        {
                            collisionSideObject1 = Enumerations.CollisionSide.Bottom;
                        }
                        else
                        {
                            collisionSideObject1 = Enumerations.CollisionSide.Top;
                        }
                    }
                    else
                    {
                        if (gameObject1.Center.X < gameObject2.Center.X)
                        {
                            collisionSideObject1 = Enumerations.CollisionSide.Right;
                        }
                        else
                        {
                            collisionSideObject1 = Enumerations.CollisionSide.Left;
                        }
                    }
                    Tuple <IGameObject, IGameObject, Rectangle, Enumerations.CollisionSide> collisionSideEvent
                        = new Tuple <IGameObject, IGameObject, Rectangle, Enumerations.CollisionSide>(gameObject1, gameObject2, intersectionRectangle, collisionSideObject1);
                    collisionSideEventList.Add(collisionSideEvent);
                }
            }
            return(collisionSideEventList);
        }
        public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision)
        {
            Contract.Requires(link != null);
            Contract.Requires(block != null);

            if (InventoryAgrees(link))
            {
                block.IsDestructable = true;
                foreach (IDoorTrigger doorTrigger in Room.CurrentRoomDoorTriggers)
                {
                    if (doorTrigger.GameObjectType == Enumerations.GameObjectType.DoorTriggerLeft)
                    {
                        doorTrigger.IsDestructable = true;
                    }
                }

                foreach (IBlock blockDoor in Room.CurrentRoomBlocks)
                {
                    if (block.GameObjectType == Enumerations.GameObjectType.DoorLeft)
                    {
                        blockDoor.IsDestructable = true;
                    }
                }

                IBlock newDoor = new BlockLeftOpenDoor();
                newDoor.Position = new Vector2(Constant.LeftDoorPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.LeftDoorPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight);
                IDoorTrigger newTrigger = new BlockLeftOverDoor();
                newTrigger.Position = new Vector2(Constant.LeftOverDoorPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.LeftOverDoorPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight);
                Room.CurrentRoomBlocks.Add(newDoor);
                Room.CurrentRoomDoorTriggers.Add(newTrigger);
                SoundManager.Instance.PlayDoorStateChange();

                int oppositeRoom = GameObjects.Instance.LevelListPosition - 1;
                Enumerations.Direction doorDirection = Enumerations.Direction.Right;
                Enumerations.DoorType  doorType      = Enumerations.DoorType.Locked;
                ToolsXML toolsXml = new ToolsXML();
                toolsXml.ReplaceOppositeDoorNodeXML(oppositeRoom, doorType, doorDirection);
            }
        }
Example #21
0
 public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision)
 {
     Contract.Requires(block != null);
     Contract.Requires(item != null);
     item.IsDestructable = true;
 }
Example #22
0
 public static void HandleCollision(INPC character, IBlock block, Enumerations.CollisionSide collisionSide)
 {
     character.Knockback  = false;
     character.HasHitWall = true;
 }
Example #23
0
 public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision)
 {
     Contract.Requires(link != null);
     Contract.Requires(block != null);
 }