Example #1
0
        } // Draw

        public void HandleCollisions()
        {
            nyanCollide = nyancat.getCollidableObject();
            bool resetarrows = false;

            foreach (Arrow arrow in bow.getArrows())
            {
                if (!arrow.isinAir && arrow.isonTarget())
                {
                    arrow.changeArcheryTargetPosY(archeryTarget.getPosition().Y);
                }

                if (arrow.isinAir == true)
                {
                    if (arrow.getCollidableObject().IsColliding(nyanCollide))
                    {
                        nyancat.isdead();
                    }

                    switch (gameState)
                    {
                    case GameState.Target:

                        if (arrow.getCollidableObject().IsColliding(archeryTarget.getCollidable()))
                        {
                            arrow.isinAir  = false;
                            arrow.velocity = new Vector2(0, 0);
                            arrow.onTarget(Math.Abs(arrow.position.Y - archeryTarget.getPosition().Y), archeryTarget, Content);
                            targetModeScore += 50;
                        }

                        if (arrow.position.Y < 10 && arrow.position.X < 100)
                        {
                            resetarrows = true;
                            gameState   = GameState.Menu;
                        }
                        break;

                    case GameState.Bear:
                        foreach (Bear bear in bearMode.getBears())
                        {
                            if (!bear.isDead)
                            {
                                if (!arrow.isDocked() && arrow.getCollidableObject().IsColliding(bear.getCollidable()))
                                {
                                    bear.isDead           = true;
                                    bearMode.bearsKilled += 1;
                                    arrow.stopXVeloc();
                                }

                                if (player.getCollidable().IsColliding(bear.getCollidable()))
                                {
                                    resetarrows = true;
                                    gameState   = GameState.GameOver;
                                }
                            }
                        }
                        break;

                    case GameState.Menu:

                        if (arrow.getCollidableObject().IsColliding(menuObjects[0]))     // "Archer" logo
                        {
                            arrow.isinAir = false;
                        }
                        if (arrow.getCollidableObject().IsColliding(menuObjects[1]))     // "Target" logo
                        {
                            arrow.isinAir = false;
                            resetarrows   = true;
                            gameState     = GameState.Target;
                            break;
                        }
                        if (arrow.getCollidableObject().IsColliding(menuObjects[2]))     // "Bear" logo
                        {
                            arrow.isinAir = false;
                            resetarrows   = true;
                            gameState     = GameState.Bear;
                            bearMode.reset();
                            break;
                        }
                        if (arrow.getCollidableObject().IsColliding(menuObjects[3]))      // "Exit" logo
                        {
                            this.Exit();
                        }

                        if (arrow.position.Y < 10 && arrow.position.X < 100 && !LoggedIn)              // "Login" logo
                        {
                            resetarrows = true;
                            gameState   = GameState.Login;
                        }

                        break;
                    } // switch statement
                }     // if isInAir
            }         // foreach arrow

            if (resetarrows)
            {
                bow.resetArrows(Content);
            }
        } // HandleCollisions