using UnityEngine; public class InputManager { private PlayerController playerController; private BuildController buildController; private ActionManager actionManager; //! This class handles all input from the player. public InputManager(PlayerController playerController) { this.playerController = playerController; actionManager = new ActionManager(playerController); buildController = playerController.GetComponent(); } //! Returns true if the player's current build type is a standard block. private bool PlacingStandardBlock() { return playerController.buildType.Equals("Glass Block") || playerController.buildType.Equals("Brick") || playerController.buildType.Equals("Iron Block") || playerController.buildType.Equals("Steel Block") || playerController.buildType.Equals("Steel Ramp") || playerController.buildType.Equals("Iron Ramp"); } //! Recieves all actions from cInput. public void HandleInput() { // CROSSHAIR if (cInput.GetKeyDown("Crosshair") && playerController.exiting == false) { actionManager.ToggleCrosshair(); } // SPRINTING if (cInput.GetKey("Sprint") && playerController.exiting == false) { playerController.playerMoveSpeed = 25; playerController.footStepSoundFrquency = 0.25f; } else { if (!Physics.Raycast(playerController.gameObject.transform.position, -playerController.gameObject.transform.up, out RaycastHit hit, 10)) { playerController.playerMoveSpeed = 25; playerController.footStepSoundFrquency = 0.25f; } else { playerController.playerMoveSpeed = 15; playerController.footStepSoundFrquency = 0.5f; } } if (cInput.GetKeyDown("Sprint") || cInput.GetKeyUp("Sprint")) { actionManager.ResetHeldItemSway(); } // MOVEMENT INPUT if (playerController.exiting == false) { if (cInput.GetKey("Walk Forward")) { actionManager.WalkForward(); } if (cInput.GetKey("Walk Backward")) { actionManager.WalkBackward(); } if (cInput.GetKey("Strafe Left")) { actionManager.StrafeLeft(); } if (cInput.GetKey("Strafe Right")) { actionManager.StrafeRight(); } } if (!cInput.GetKey("Jetpack") && (cInput.GetKey("Walk Forward") || cInput.GetKey("Walk Backward") || cInput.GetKey("Strafe Left") || cInput.GetKey("Strafe Right"))) { if (playerController.exiting == false && Physics.Raycast(playerController.gameObject.transform.position, -playerController.gameObject.transform.up, out RaycastHit hit, 10)) { actionManager.DoGroundEffects(hit); } else if (playerController.exiting == false && playerController.gameObject.GetComponent().isPlaying == false) { playerController.gameObject.GetComponent().Play(); actionManager.StopGroundEffects(); } } else if (!cInput.GetKey("Jetpack") && !cInput.GetKey("Walk Forward") && !cInput.GetKey("Walk Backward") && !cInput.GetKey("Strafe Left") && !cInput.GetKey("Strafe Right")) { playerController.gameObject.GetComponent().Stop(); actionManager.StopGroundEffects(); } else { actionManager.StopGroundEffects(); } // WEAPON SELECTION if (!playerController.GuiOpen()) { if (cInput.GetKeyDown("Paint Gun")) { actionManager.TogglePaintGun(); } if (playerController.paintGunActive == true) { if (Input.GetKeyDown(KeyCode.Mouse1)) { actionManager.TogglePaintGun(); } } if (cInput.GetKeyDown("Paint Color")) { if (playerController.paintGunActive == true && playerController.paintColorSelected == true) { playerController.paintColorSelected = false; } } if (cInput.GetKeyDown("Scanner")) { actionManager.ToggleScanner(); } if (cInput.GetKeyDown("Laser Cannon")) { actionManager.ToggleLaserCannon(); } } else { playerController.laserCannon.SetActive(false); playerController.laserCannonActive = false; playerController.scanner.SetActive(false); playerController.scannerActive = false; } // FIRING THE LASER CANNON OR THE SCANNER if (cInput.GetKeyDown("Fire") && playerController.exiting == false) { if (!playerController.GuiOpen()) { if (playerController.laserCannonActive) { actionManager.FireLaserCannon(); } if (playerController.scannerActive) { actionManager.ScannerPing(); } } } if (playerController.firing == true) { if (!playerController.laserCannon.GetComponent().isPlaying) { playerController.muzzleFlash.SetActive(false); playerController.firing = false; } } if (playerController.scanning == true) { if (!playerController.scanner.GetComponent().isPlaying) { playerController.scannerFlash.SetActive(false); playerController.scanning = false; } } if (cInput.GetKeyDown("Headlamp") && playerController.exiting == false) { actionManager.ToggleHeadLamp(); } // JETPACK if (cInput.GetKey("Jetpack") && playerController.exiting == false) { actionManager.JetPackThrust(); } else if (!cInput.GetKey("Walk Forward") && !cInput.GetKey("Walk Backward") && !cInput.GetKey("Strafe Left") && !cInput.GetKey("Strafe Right")) { if (playerController.gameObject.GetComponent().isPlaying == true) { playerController.gameObject.GetComponent().Stop(); } } // BUILD MULTIPLIER if (playerController.building == true && PlacingStandardBlock()) { if (cInput.GetKey("Build Amount +") && playerController.buildMultiplier < 100) { actionManager.IncreaseBuildAmount(); } if (cInput.GetKey("Build Amount -") && playerController.buildMultiplier > 1) { actionManager.DecreaseBuildAmount(); } } // SELECTING CURRENT BLOCK TO BUILD WITH if (!playerController.GuiOpen()) { if (cInput.GetKeyDown("Next Item")) { playerController.blockSelector.NextBlock(); } if (cInput.GetKeyDown("Previous Item")) { playerController.blockSelector.PreviousBlock(); } } if (playerController.displayingBuildItem == true) { playerController.buildItemDisplayTimer += 1 * Time.deltaTime; if (playerController.buildItemDisplayTimer > 3) { playerController.displayingBuildItem = false; playerController.buildItemDisplayTimer = 0; } } // BLOCK ROTATION if (cInput.GetKeyDown("Rotate Block")) { if (playerController.building == true) { playerController.buildObject.transform.Rotate(playerController.buildObject.transform.up * 90); playerController.destroyTimer = 0; playerController.buildTimer = 0; playerController.PlayButtonSound(); } } // BUILD AXIS if (cInput.GetKeyDown("Build Axis")) { playerController.PlayButtonSound(); if (buildController.autoAxis == false) buildController.ChangeBuildAxis(); } if (cInput.GetKeyDown("Auto Axis")) { playerController.PlayButtonSound(); buildController.autoAxis = !buildController.autoAxis; playerController.autoAxisMessage = true; } // IF THE PLAYER HAS SELECTED AN ITEM AND HAS THAT ITEM IN THE INVENTORY, BEGIN BUILDING ON KEY PRESS if (cInput.GetKeyDown("Build")) { actionManager.StartBuildMode(); } // CANCEL BUILDING ON KEY PRESS if (cInput.GetKeyDown("Stop Building")) { actionManager.StopBuilding(); } // ACTIVATE INVENTORY GUI ON KEY PRESS if (cInput.GetKeyDown("Inventory")) { actionManager.ToggleInventory(); } // ACTIVATE CRAFTING GUI ON KEY PRESS if (cInput.GetKeyDown("Crafting")) { actionManager.ToggleCraftingGUI(); } // ACTIVATE MARKET GUI ON KEY PRESS if (cInput.GetKeyDown("Market")) { actionManager.ToggleMarketGUI(); } // ACTIVATE TABLET GUI ON KEY PRESS if (cInput.GetKeyDown("Tablet")) { actionManager.ToggleTablet(); } // OPEN OPTIONS/EXIT MENU WHEN ESCAPE KEY IS PRESSED if (Input.GetKeyDown(KeyCode.Escape) && playerController.exiting == false) { if (playerController.inventoryOpen == true) { actionManager.ToggleInventory(); } else if (playerController.machineGUIopen == true) { actionManager.CloseMachineGUI(); } else if (playerController.marketGUIopen == true) { actionManager.ToggleMarketGUI(); } else if (playerController.tabletOpen == true) { actionManager.CloseTablet(); } else if (playerController.paintGunActive == true) { playerController.paintGun.SetActive(false); playerController.paintGunActive = false; playerController.paintColorSelected = false; } else if (playerController.escapeMenuOpen == false) { playerController.requestedEscapeMenu = true; } else { actionManager.CloseMenus(); } } } }