void checkInputController() { // Find a PlayerIndex, for a single player game // Will find the first controller that is connected and use it if (!playerIndexSet || !prevState.IsConnected) { for (int i = 0; i < 4; ++i) { PlayerIndex testPlayerIndex = (PlayerIndex)i; GamePadState testState = GamePad.GetState(testPlayerIndex); if (testState.IsConnected) { //Debug.Log(string.Format("GamePad found {0}", testPlayerIndex)); playerIndex = testPlayerIndex; playerIndexSet = true; } } } prevState = state; state = GamePad.GetState(playerIndex); physics.xMove = state.ThumbSticks.Left.X * physics.xSpeed; //right if (state.ThumbSticks.Left.X > 0) { isFacingRight = true; isMovingLeft = false; isMovingRight = true; if (physics.isGrounded) { anim.playRun(); } } //left else if (state.ThumbSticks.Left.X < 0) { isFacingRight = false; isMovingLeft = true; isMovingRight = false; if (physics.isGrounded) { anim.playRun(); } } else { isMovingLeft = false; isMovingRight = false; if (physics.isGrounded) { anim.playIdle(); } } if ((prevState.Buttons.A == ButtonState.Released && state.Buttons.A == ButtonState.Pressed) && (onWallClinging)) { if (wallJumping.onWall) { isWallJump = true; jump = true; wallJumping.onWall = false; globalMusic.playJumpSound(); } else { isWallJump = false; } } if ((state.Buttons.A == ButtonState.Pressed) && (physics.isGrounded)) //(state.Buttons.A == ButtonState.Pressed && physics.isGrounded) { globalMusic.playJumpSound(); jump = true; } else if (prevState.Buttons.A == ButtonState.Pressed && state.Buttons.A == ButtonState.Released) //(state.Buttons.A == ButtonState.Released) { //isWallJump = false; jump = false; } if (globals.lastLevelPlayed >= MINLEVEL) { if (!wallJumping.onWall) { firstClingUpdate = 0; onWallClinging = false; } if (state.Buttons.LeftShoulder == ButtonState.Pressed && !physics.isGrounded) //(prevState.Buttons.LeftShoulder == ButtonState.Released && state.Buttons.LeftShoulder == ButtonState.Pressed){ { if (wallJumping.onWall) { //print("on wall"); onWallClinging = true; if (firstClingUpdate == 0) { globalMusic.playLandSound(); } firstClingUpdate++; } } else if (prevState.Buttons.LeftShoulder == ButtonState.Pressed && state.Buttons.LeftShoulder == ButtonState.Released) { onWallClinging = false; } } //Powers if (!differentShootingButton) { if (prevState.Buttons.X == ButtonState.Released && state.Buttons.X == ButtonState.Pressed) { globalMusic.playGunSound(); anim.playShoot(); isFiring = true; } else if (prevState.Buttons.X == ButtonState.Pressed && state.Buttons.X == ButtonState.Released) { isFiring = false; } if (prevState.Buttons.B == ButtonState.Released && state.Buttons.B == ButtonState.Pressed) { globalMusic.playGunSound(); anim.playShoot(); isFiring = true; } else if (prevState.Buttons.B == ButtonState.Pressed && state.Buttons.B == ButtonState.Released) { isFiring = false; } } else if (differentShootingButton) { if (prevState.Buttons.RightShoulder == ButtonState.Released && state.Buttons.RightShoulder == ButtonState.Pressed) { globalMusic.playGunSound(); anim.playShoot(); isFiring = true; } else if (prevState.Buttons.RightShoulder == ButtonState.Pressed && state.Buttons.RightShoulder == ButtonState.Released) { isFiring = false; } } if (state.Triggers.Left == 1) { if (powers.canUsePowers) { //physics.prePhase(); powers.isUsingPowers = true; if (powers.canPhase) { phase = true; } } } else if (state.Triggers.Left == 0) { phase = false; } if (state.Triggers.Right == 1 && !physics.isGrounded) { if (powers.canUsePowers) { glide = true; } } if (state.Triggers.Right == 0) { glide = false; } //Kanimi code if (prevState.Buttons.Back == ButtonState.Released && state.Buttons.Back == ButtonState.Pressed) { debugOptions = !debugOptions; startingKanimiCode = !startingKanimiCode; } if (startingKanimiCode) { if (prevState.Buttons.Start == ButtonState.Released && state.Buttons.Start == ButtonState.Pressed) { kanimiCodeInput.Add("Start"); if (kanimiCodeInput.Count == kanimiCode.Length) { for (int i = 0; i < kanimiCodeInput.Count; i++) { if (kanimiCodeInput[i] != kanimiCodeInput[i]) { break; } if (i == kanimiCodeInput.Count - 1) { kanimiCodeActivated = true; globals.kanimiCodeActivated = kanimiCodeActivated; print("Activated Kanimi code"); } } } kanimiCodeInput.Clear(); } else if (prevState.Buttons.A == ButtonState.Released && state.Buttons.A == ButtonState.Pressed && physics.isGrounded) { kanimiCodeInput.Add("A"); } else if (prevState.Buttons.B == ButtonState.Released && state.Buttons.B == ButtonState.Pressed && physics.isGrounded) { kanimiCodeInput.Add("A"); } else if (prevState.DPad.Up == ButtonState.Released && state.DPad.Up == ButtonState.Pressed) { kanimiCodeInput.Add("Up"); } else if (prevState.DPad.Down == ButtonState.Released && state.DPad.Down == ButtonState.Pressed) { kanimiCodeInput.Add("Down"); } else if (prevState.DPad.Right == ButtonState.Released && state.DPad.Right == ButtonState.Pressed) { kanimiCodeInput.Add("Right"); } else if (prevState.DPad.Left == ButtonState.Released && state.DPad.Left == ButtonState.Pressed) { kanimiCodeInput.Add("Left"); } } //Debug if (debugOptions) { if (prevState.DPad.Up == ButtonState.Released && state.DPad.Up == ButtonState.Pressed) { globals.resetGobalsForNextLevel(); Application.LoadLevel(Application.loadedLevel); } else if (prevState.DPad.Right == ButtonState.Released && state.DPad.Right == ButtonState.Pressed) { globals.lastLevelPlayed++; globals.resetGobalsForNextLevel(); Application.LoadLevel(globals.lastLevelPlayed); } else if (prevState.DPad.Left == ButtonState.Released && state.DPad.Left == ButtonState.Pressed) { globals.lastLevelPlayed--; globals.resetGobalsForNextLevel(); Application.LoadLevel(globals.lastLevelPlayed); } else if (prevState.DPad.Down == ButtonState.Released && state.DPad.Down == ButtonState.Pressed) { differentShootingButton = !differentShootingButton; } } }