} // 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