/// <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]; } }
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); }