public void addBears(int numBears) { Bear bear; for (int i = 0; i < numBears; i++) { Vector3 pos = trees[random.Next(trees.Count())].position; pos = pos + 10 * Vector3.Normalize(pos - rabbit.position); switch (random.Next(8)) { case 1: bear = new Bear(blueBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 2: bear = new Bear(cyanBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 3: bear = new Bear(greenBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 4: bear = new Bear(purpleBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 5: bear = new Bear(redBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 6: bear = new Bear(whiteBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; case 7: bear = new Bear(yellowBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; default: bear = new Bear(brownBearModel, new Vector3(pos.X, -2.5f, pos.Z), new Vector3(0, 0, 1)); break; } bool isValid = true; foreach (BasicModel target in getCollidables()) { if (bear.CollidesWith(target) || Vector3.Distance(bear.position, rabbit.position) < 80) { isValid = false; i--; break; } } if (isValid) { bears.Add(bear); } } }
private void loadNewLevel() { if (previousGameState == Game1.GameState.Fail) { level--; previousGameState = Game1.GameState.Start; } level++; // Clear current lists bears.Clear(); shots.Clear(); deadBears.Clear(); trees.Clear(); mushrooms.Clear(); houses.Clear(); outOfBoundTrees.Clear(); ground.Clear(); rabbit = new Bear(carrotModel, ((Game1)Game).camera.cameraPosition - new Vector3(0, 0, -5), Vector3.Zero); this.addMushrooms(50); this.addTrees(4 * level); this.addHouses(5); this.addBears(6 * level); this.addGround(); }