void UpdateShipAttack()
    {
        if (shipController.isOnScreen)
        {
            if (!shipController.DeviceIsActive())
            {
                ShipAttackType = GetRandomEnum <SpaceShipController.AttackType>();
                ResetShipAttackTimes();
                shipController.ActivateAttack(ShipAttackType);
            }
            else if (shipController.LaserIsActive)
            {
                if (shipController.LaserIsFiring)
                {
                    if (TimeUntilStopLaserFire <= 0)
                    {
                        shipController.StopLaser();
                        setTimeUntilNextLaserFire();
                    }
                    else
                    {
                        TimeUntilStopLaserFire -= Time.deltaTime;
                    }
                }
                else
                {
                    if (TimeUntilNextLaserFire <= 0)
                    {
                        shipController.ShootLaser();
                        setTimeUntilStopLaserFire();
                    }
                    else
                    {
                        TimeUntilNextLaserFire -= Time.deltaTime;
                    }
                }
            }
            else if (shipController.DropperIsActive)
            {
                switch (ShipAttackType)
                {
                case SpaceShipController.AttackType.ROCK:
                    if (TimeUntilNextBoulder <= 0)
                    {
                        shipController.SpawnBoulder();
                        setTimeUntilNextBoulder();
                    }
                    else
                    {
                        TimeUntilNextBoulder -= Time.deltaTime;
                    }
                    break;

                case SpaceShipController.AttackType.TRACTOR:
                    if (!shipController.TractorIsFiring && TractorTimeDelay <= 0)
                    {
                        if (TimeUntilNextTractorFire <= 0)
                        {
                            shipController.StartTractorBeam();
                            setTimeUntilStopTractorrFire();
                        }
                        else
                        {
                            TimeUntilNextTractorFire -= Time.deltaTime;
                        }
                    }
                    else if (shipController.TractorIsFiring)
                    {
                        if (TimeUntilStopTractorFire <= 0)
                        {
                            shipController.StopTractorBeam();
                            setTimeUntilNextTractorFire();
                        }
                        else
                        {
                            TimeUntilStopTractorFire -= Time.deltaTime;
                        }
                    }
                    else if (TractorTimeDelay > 0)
                    {
                        TractorTimeDelay -= Time.deltaTime;
                    }
                    break;
                }
            }
        }
        else if (!shipController.ShouldMoveShip)
        {
            shipController.BringOnscreen();
            ObstacleSpawnDuration = 20;
        }
    }