//pg. 268 public static void AddComputerTerminal() { int startX = rand.Next(2, TileMap.MapWidth - 2); int startY = rand.Next(0, TileMap.MapHeight - 2); Vector2 tileLocation = new Vector2(startX, startY); if ((TerminalInSquare(tileLocation) != null) || (TileMap.IsWallTile(tileLocation))) { return; } if (Vector2.Distance( TileMap.GetSquareCenter(startX, startY), Player.BaseSprite.WorldCenter) < minDistanceFromPlayer) { return; } List <Vector2> path = PathFinder.FindPath( new Vector2(startX, startY), TileMap.GetSquareAtPixel( Player.BaseSprite.WorldCenter)); if (path != null) { Rectangle squareRect = TileMap.SquareWorldRectangle(startX, startY); Sprite activeSprite = new Sprite( new Vector2(squareRect.X, squareRect.Y), texture, initialActiveFrame, Vector2.Zero); for (int x = 1; x < 3; x++) { activeSprite.AddFrame( new Rectangle( initialActiveFrame.X + (x * initialActiveFrame.Width), initialActiveFrame.Y, initialActiveFrame.Width, initialActiveFrame.Height)); } activeSprite.CollisionRadius = 15; Sprite disabledSprite = new Sprite( new Vector2(squareRect.X, squareRect.Y), texture, initialDisabledFrame, Vector2.Zero); ComputerTerminal terminal = new ComputerTerminal( activeSprite, disabledSprite, new Vector2(startX, startY)); float timerOffset = (float)rand.Next(1, 100); terminal.LastSpawnCounter = timerOffset / 100f; computerTerminals.Add(terminal); activeCount++; } }
//pg. 278 #region Enemy Managment public static void AddEnemy(Vector2 squareLocation) { int startX = (int)squareLocation.X; int startY = (int)squareLocation.Y; Rectangle squareRect = TileMap.SquareWorldRectangle(startX, startY); Enemy newEnemy = new Enemy( new Vector2(squareRect.X, squareRect.Y), enemyTexture, enemyInitialFrame); newEnemy.currentTargetSquare = squareLocation; Enemies.Add(newEnemy); }
//pg. 239 private static void tryToSpawnPowerup(int x, int y, WeaponType type) { if (PowerUps.Count >= maxActivePowerups) { return; } Rectangle thisDestination = TileMap.SquareWorldRectangle(new Vector2(x, y)); foreach (Sprite powerup in PowerUps) { if (powerup.WorldRectangle == thisDestination) { return; } } // if (!TileMap.IsWallTile(x, y)) //pg. 262 if (!(PathFinder.FindPath( new Vector2(x, y), Player.PathingNodePosition) == null)) { Sprite newPowerup = new Sprite( new Vector2(thisDestination.X, thisDestination.Y), Texture, new Rectangle(64, 128, 32, 32), Vector2.Zero); newPowerup.Animate = false; newPowerup.CollisionRadius = 14; newPowerup.AddFrame(new Rectangle(96, 128, 32, 32)); if (type == WeaponType.Rocket) { newPowerup.Frame = 1; } PowerUps.Add(newPowerup); timeSinceLastPowerup = 0.0f; } }