Esempio n. 1
0
    /// <summary>
    /// Inicializa los arrays de datos en caso de estar vacíos
    /// </summary>
    void InitValues()
    {
        playerT = (PlayerTilt)target;

        if (playerT.xValues == null)
        {
            playerT.xValues = new float[8];
        }

        if (playerT.zValues == null)
        {
            playerT.zValues = new float[8];
        }
    }
Esempio n. 2
0
    public void Init()
    {
        m_playerBoost      = (PlayerBoost)GetComponent(typeof(PlayerBoost));
        m_playerTilt       = (PlayerTilt)GetComponent(typeof(PlayerTilt));
        m_playerRoll       = (PlayerRoll)GetComponent(typeof(PlayerRoll));
        m_playerRetroBoost = (PlayerRetroBoost)GetComponent(typeof(PlayerRetroBoost));
        m_playerCollision  = (PlayerCollision)GetComponent(typeof(PlayerCollision));

        m_playerBoost.Init();
        m_playerTilt.Init();
        m_playerRoll.Init();
        m_playerRetroBoost.Init();

        m_currentOffset = new Vector3(0.5f, 0.5f, 0f);
        m_targetOffset  = m_currentOffset;
        m_offsetDelta   = Vector3.zero;
        m_prevOffset    = Vector3.zero;

        m_targetSpeed  = m_normalSpeed;
        m_currentSpeed = 0f;

        m_targetRot = Vector3.forward;

        SegmentManager.Init();

        m_pathPosition     = SegmentManager.instance.GetNextPosition(0f);
        transform.position = m_pathPosition;

        transform.rotation = Quaternion.identity;

        if (!m_camera)
        {
            m_camera = (ChaseCamera)GameObject.FindObjectOfType(typeof(ChaseCamera));
        }

        m_camera.Init(this);

        m_camera.UpdateCamera();
    }
        protected override void Update(GameTime gameTime)
        {
            //Loops game music
            if (MediaPlayer.State == MediaState.Paused || MediaPlayer.State == MediaState.Stopped)
                MediaPlayer.Play(mainThemeSong);

            //Exit Game
            if (Keyboard.GetState().IsKeyDown(Keys.Escape) && gameState == GameState.MainMenu)
                this.Exit();
            // Pause game
            if (Keyboard.GetState().IsKeyDown(Keys.Escape) && gameState == GameState.Play)
                gameState = GameState.PauseGame;

            if (Keyboard.GetState().IsKeyDown(Keys.P) && gameState == GameState.Play)
                player1Health--;

            if (Keyboard.GetState().IsKeyDown(Keys.T) && gameState == GameState.Play)
                gameState = GameState.End;

            Point mousePoint = new Point(Mouse.GetState().X, Mouse.GetState().Y);
            switch (gameState)
            {
                case GameState.MainMenu:
                    IsMouseVisible = true; //Mouse!

                    if (startButtonPos.Contains(mousePoint))
                    {
                        if (currentHoverCount > hoverTime)
                        {
                            buttonHover = ButtonHover.StartButton;
                            if (letterSplatLength < startString.Count())
                            {
                                letterSplatLength++;
                            }
                            currentHoverCount = 0;
                        }
                        else
                        {
                            currentHoverCount++;
                        }
                    }
                    else
                    {
                        letterSplatLength = 0;
                    }
                    if (Mouse.GetState().LeftButton == ButtonState.Pressed)
                    {
                        if (startButtonPos.Contains(mousePoint))
                        {
                            gameState = GameState.Play;
                            currentHoverCount = 0;
                            letterSplatLength = 0;
                        }
                    }
                    break;

                case GameState.PauseGame:
                    IsMouseVisible = true; //Need a Mouse?

                    if (quitButtonPos.Contains(mousePoint) || resumeButtonPos.Contains(mousePoint))
                    {
                        if (quitButtonPos.Contains(mousePoint))
                        {
                            if (currentHoverCount > hoverTime)
                            {
                                buttonHover = ButtonHover.QuitButton;
                                if (letterSplatLength < quitString.Count())
                                {
                                    letterSplatLength++;
                                }
                                currentHoverCount = 0;
                            }
                            else
                            {
                                currentHoverCount++;
                            }
                        }
                        else
                        {
                            if (currentHoverCount > hoverTime)
                            {
                                buttonHover = ButtonHover.ResumeButton;
                                if (letterSplatLength < resumeString.Count())
                                {
                                    letterSplatLength++;
                                }
                                currentHoverCount = 0;
                            }
                            else
                            {
                                currentHoverCount++;
                            }
                        }
                    }
                    else
                    {
                        letterSplatLength = 0;
                    }

                    if (Mouse.GetState().LeftButton == ButtonState.Pressed)
                    {
                        if (quitButtonPos.Contains(mousePoint)) //Quit Current Game
                            gameState = GameState.MainMenu;
                        if (resumeButtonPos.Contains(mousePoint)) //Resume Game
                            gameState = GameState.Play;
                    }
                    if (Keyboard.GetState().IsKeyDown(Keys.Space))
                        gameState = GameState.Play;
                    break;

                case GameState.Play:
                    IsMouseVisible = false;
                     currentState = Keyboard.GetState();
                     playerTilt = PlayerTilt.None; //Rests tilt
                    //X axis movment
                     if (currentState.IsKeyDown(Keys.A)) { player1TravelH = player1TravelH  - playerSpeed; playerTilt = PlayerTilt.Left; }
                     if (currentState.IsKeyDown(Keys.D)) { player1TravelH = player1TravelH + playerSpeed; playerTilt = PlayerTilt.Right; }
                    //Wrap around X
                     if (player1Pos.X < -10) { player1Pos.X = (graphics.PreferredBackBufferWidth - 10); }
                     else if (player1Pos.X > (graphics.PreferredBackBufferWidth - 10)) { player1Pos.X = -10; }
                    //Drift
                     if (player1DriftCurrentX >= player1DriftRate)
                     {
                         if (currentState.IsKeyUp(Keys.A) && player1TravelH < 0) { player1TravelH = player1TravelH + 1; }
                         if (currentState.IsKeyUp(Keys.D)  && player1TravelH > 0) { player1TravelH = player1TravelH - 1; }
                         player1DriftCurrentX = 0; //Reseting counter
                     }
                     else
                     {
                         player1DriftCurrentX++; //Adding to counter
                     }
                    //Y axis movment
                     if (currentState.IsKeyDown(Keys.W)) { player1TravelV = player1TravelV - playerSpeed; }
                     if (currentState.IsKeyDown(Keys.S)) { player1TravelV = player1TravelV + playerSpeed; }
                    //Wrap around Y
                    //if (player1Pos.Y < -40) { player1Pos.Y = 590; }
                    // else if (player1Pos.Y > 600) { player1Pos.Y = -10; }
                    //Limiting Y movement
                    if (player1Pos.Y < 5) { player1Pos.Y = 5; }
                     else if (player1Pos.Y > 540) { player1Pos.Y = (graphics.PreferredBackBufferHeight - 60); }
                     if (player1DriftCurrentY >= player1DriftRate) //Drift
                     {
                         if (currentState.IsKeyUp(Keys.W)  && player1TravelV < 0) { player1TravelV = player1TravelV + 1; }
                         if (currentState.IsKeyUp(Keys.S)  && player1TravelV > 0) { player1TravelV = player1TravelV - 1; }
                         player1DriftCurrentY = 0; //Reseting counter
                     }
                     else
                     {
                         player1DriftCurrentY++; //Adding to counter
                     }
                    //Shooting
                     if (PlayerShotSpeedCurrent >= maxPlayerShotSpeed || oldState.IsKeyUp(Keys.Space))
                     {
                         if (currentState.IsKeyDown(Keys.Space))
                         {
                             misslePositions.Add(new Vector2(player1Pos.X + (Player1Texture.Width / 3), player1Pos.Y));
                             misslePositions.Add(new Vector2(player1Pos.X, player1Pos.Y));
                             missleRects.Add(new Rectangle((int)(player1Pos.X + (Player1Texture.Width / 3)), (int)player1Pos.Y, player1Shot.Width, player1Shot.Height));
                             missleRects.Add(new Rectangle((int)(player1Pos.X), (int)player1Pos.Y, player1Shot.Width, player1Shot.Height));
                         }
                         PlayerShotSpeedCurrent = 0;
                     }
                     else
                     {
                         PlayerShotSpeedCurrent++;
                     }
                    //Setting the speed
                    player1Pos.X = player1Pos.X + player1TravelH; //Updateing speed
                    if (player1TravelH > maxPlayerSpeed){ player1TravelH = maxPlayerSpeed;} //Speed cap
                    if (player1TravelH < -maxPlayerSpeed){ player1TravelH = -maxPlayerSpeed;}//Speed cap

                    player1Pos.Y = player1Pos.Y + player1TravelV; //Updating speed
                    if (player1TravelV > maxPlayerSpeed){ player1TravelV = maxPlayerSpeed;}//Speed cap
                    if (player1TravelV < -maxPlayerSpeed){ player1TravelV = -maxPlayerSpeed;}//Speed cap

                    //Move missiles
                     for (int i = 0; i < misslePositions.Count(); i++)
                     {
                         misslePositions[i] -= new Vector2(0, 8);
                         missleRects[i] = new Rectangle((int)misslePositions[i].X, (int)misslePositions[i].Y, player1Shot.Width, player1Shot.Height);

                         if (misslePositions[i].Y < 1)
                         {
                             misslePositions.RemoveAt(i);
                             missleRects.RemoveAt(i);
                             i--;
                         }
                    }

                    //Generate enemys
                     if (generateEnemy)
                     {
                         for (int i = 0; i < currentLevel; i++)
                         {
                             int newEnemyXPos = r.Next(20, graphics.PreferredBackBufferWidth - 20);
                             enemyPositions.Add(new Vector2(newEnemyXPos, 35));
                             enemyRects.Add(new Rectangle((newEnemyXPos), 35, enemy1Texture.Width, enemy1Texture.Height));
                             enemyMovement.Add(EnemyMovement.Left);
                         }
                         generateEnemy = false;
                     }

                     //Move enemys
                     for (int i = 0; i < enemyPositions.Count(); i++)
                     {
                         if (enemyPositions[i].X > graphics.PreferredBackBufferWidth - 20  && enemyMovement[i] == EnemyMovement.Right)
                         {
                             enemyPositions[i] += new Vector2(0,5);
                             enemyMovement[i] = EnemyMovement.Down;
                         }
                         else if (enemyPositions[i].X < 20  && enemyMovement[i] == EnemyMovement.Left)
                         {
                             enemyPositions[i] += new Vector2(0,5);
                             enemyMovement[i] = EnemyMovement.Down;
                         }
                         else if (enemyMovement[i] == EnemyMovement.Down)
                         {
                             enemyPositions[i] += new Vector2(0, 5);
                             if (enemyPositions[i].X <= 20)
                             {
                                 enemyMovement[i] = EnemyMovement.Right;
                             }
                             else
                             {
                                 enemyMovement[i] = EnemyMovement.Left;
                             }
                         }
                         if (enemyMovement[i] == EnemyMovement.Left)
                         {
                             enemyPositions[i] -= new Vector2(5, 0);
                         }
                         else if (enemyMovement[i] == EnemyMovement.Right)
                         {
                             enemyPositions[i] += new Vector2(5, 0);
                         }
                         enemyRects[i] = new Rectangle((int)enemyPositions[i].X, (int)enemyPositions[i].Y, enemy1Texture.Width, enemy1Texture.Height);
                     }
                     //Checks for collision
                     for (int i = 0; i < misslePositions.Count(); i++)
                     {
                         try
                         {
                             Rectangle badRect = enemyRects[0];
                             if (badRect.Intersects(missleRects[i]))
                             {
                                 enemyPositions.RemoveAt(0);
                                 enemyRects.RemoveAt(0);
                                 gameState = GameState.End;
                             }
                         }
                         catch
                         {
                             gameState = GameState.End;
                         }

                     }
                    break;
                case GameState.End:
                    IsMouseVisible = false;
                    if (Keyboard.GetState().IsKeyDown(Keys.Space))
                        this.Exit();
                    break;
            }
            healthCheck();
            oldState = currentState;
            base.Update(gameTime);
        }