Example #1
0
    public override object Process(TankManager manager, object state = null)
    {
        PlayerTankControllerState convertedState = (state as PlayerTankControllerState);

        if (convertedState == null)
        {
            convertedState = new PlayerTankControllerState();
        }

        if (manager.isDead)
        {
            return(convertedState);
        }

        InputDevice inputDevice = GameInput.GetPlayerDevice(convertedState.player);

        if (inputDevice == null)
        {
            return(convertedState);
        }

        Vector2 leftStickInput  = inputDevice.LeftStick.Vector;
        Vector2 rightStickInput = inputDevice.RightStick.Vector;

        if (!manager.isDead)
        {
            manager.tankMovement.targetVector = leftStickInput;
            manager.tankMovement.targetSpeed  = leftStickInput.magnitude;
            manager.AimTurrets(rightStickInput);

            if (inputDevice.LeftBumper.IsPressed)
            {
                manager.armourPickupManager.EjectArmourPickups();
                manager.armourPickupManager.refusePickups = true;
            }
            else
            {
                manager.armourPickupManager.refusePickups = false;
            }

            if (inputDevice.RightTrigger.WasPressed)
            {
                manager.FireTurrets(TankManager.FiringInputType.Down);
            }
            else if (inputDevice.RightTrigger.WasReleased)
            {
                manager.FireTurrets(TankManager.FiringInputType.Up);
            }
            if (inputDevice.RightTrigger.IsPressed)
            {
                manager.FireTurrets(TankManager.FiringInputType.Held);
            }
        }



        return(convertedState);
    }