Пример #1
0
        //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++;
            }
        }
Пример #2
0
        //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);
        }
Пример #3
0
        //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;
            }
        }