Inheritance: MonoBehaviour
    private IEnumerator LaunchTemporaryPowerUpSequence(PowerUpEffect effect)
    {
        float             duration = effect.mainDuration;
        float             timer    = 0;
        WaitForEndOfFrame wait     = new WaitForEndOfFrame();

        paddleLengthBonusMultiplier += (effect.paddleLengthMultiplier - 1);
        UpdatePaddleLengthToTargetLength();

        globalBallSpeedBonusMultiplier += (effect.ballSpeedMultiplier - 1);
        ApplyGlobalBallSpeedScale(globalBallSpeedBonusMultiplier);


        Debug.Log($"Started temporary effect {effect.name}.");

        while (timer < duration)
        {
            timer += Time.deltaTime;
            yield return(wait);
        }

        paddleLengthBonusMultiplier -= (effect.paddleLengthMultiplier - 1);
        UpdatePaddleLengthToTargetLength();

        globalBallSpeedBonusMultiplier -= (effect.ballSpeedMultiplier - 1);
        ApplyGlobalBallSpeedScale(globalBallSpeedBonusMultiplier);

        Debug.Log($"Ended temporary effect {effect.name}.");

        yield return(null);
    }
Esempio n. 2
0
        /// <summary>
        /// Handle changes to settings over time
        /// </summary>
        /// <param name="powerUp">An effect to apply</param>
        /// <returns></returns>
        private IEnumerator ApplyPowerUpEnum(PowerUpEffect powerUp)
        {
            movable.speed            += powerUp.playerMotionSpeedBoost;
            rotateable.rotationSpeed += powerUp.playerRotationSpeedBoost;

            var startScatterAmount = shooter.scatterAmount;

            shooter.scatterAmount = Mathf.Clamp(shooter.scatterAmount - powerUp.playerShootAccuracyBoost, 0f, 360f);
            var scatterAmountDelta = startScatterAmount - shooter.scatterAmount;

            shooter.scatterAmount       = Mathf.Max(shooter.scatterAmount - powerUp.playerShootAccuracyBoost, 0);
            shooter.projectileLifeTime += powerUp.projectilesLifeTimeBoost;
            shooter.delay -= powerUp.shootFrequencyBoost;

            var startTimeScale = Time.timeScale;

            Time.timeScale = Mathf.Clamp(Time.timeScale - powerUp.timeScaleBoost, 0.3f, 2f);
            var timeScaleDelta = startTimeScale - Time.timeScale;

            yield return(new WaitForSeconds(powerUp.effectTime));

            movable.speed               = Mathf.Max(movable.speed - powerUp.playerMotionSpeedBoost, GameManager.Instance.gamePreset.motionSpeed);
            rotateable.rotationSpeed    = Mathf.Max(rotateable.rotationSpeed - powerUp.playerRotationSpeedBoost, GameManager.Instance.gamePreset.rotationSpeed);
            shooter.scatterAmount      += scatterAmountDelta;
            shooter.projectileLifeTime -= powerUp.projectilesLifeTimeBoost;
            shooter.delay              += powerUp.shootFrequencyBoost;
            Time.timeScale             += timeScaleDelta;
        }
Esempio n. 3
0
        /// <summary>
        /// Event function for collected magnet
        /// </summary>
        /// <param name="eventName"></param>
        /// <param name="actionParams"></param>
        private void OnCollectedMagnet(string eventName, ActionParams actionParams)
        {
            m_Scene.GetEventManager().RemoveListenerFromEvent(ApplicationConstants.EVENT_PLAYER_COLLECTED_MAGNET, OnCollectedMagnet);


            mActivePowerUp = PowerUpEffect.Magnet;
            isMagnetActive = true;
        }
Esempio n. 4
0
        private new void Start()
        {
            base.Start();

            isMagnetActive = false;

            mActivePowerUp = PowerUpEffect.None;

            origValue = _value;
        }
        //private PowerUpType _powerUpSlot = PowerUpType.POWERUP_NULL;

        private PRActions TypeToAction(PowerUpEffect effect)
        {
            switch (effect)
            {
            case PowerUpEffect.None:
                return(PRActions.POWERUP_NONE);

            case PowerUpEffect.Magnet:
                return(PRActions.POWERUP_MAGNET);

            default:
                return(PRActions.NULL);
            }
        }
Esempio n. 6
0
        public void OnSpawned()
        {
            if (effects.Count == 0)
            {
                if (GameManager.Instance.Log(LogLevel.ErrorsAndWarnings))
                {
                    Debug.LogWarning("No effects to choose from", gameObject);
                }
                return;
            }
            _chosenEffect = effects.Count == 1 ? effects[0] : effects[Random.Range(0, effects.Count)];

            movable.MakeImmuneToBorderControl(onSpawnBorderImmunityTime);
            movable.AddForceTowardsCenter(GameManager.Instance.gamePreset.spawnedCenterTargetOffset);
        }
Esempio n. 7
0
        public override void Init()
        {
            base.Init();

            isMagnetActive = false;

            mActivePowerUp = m_Scene.GetLocalPowerUpManager().GetActivatedPowerUp();

            if (mActivePowerUp.Equals(PowerUpEffect.Magnet))
            {
                OnCollectedMagnet("", ActionParams.EmptyParams);
            }

            mPlayer = m_Scene.GetPlayer();
            m_Scene.GetEventManager().ListenToEvent(ApplicationConstants.EVENT_PLAYER_COLLECTED_MAGNET, OnCollectedMagnet);
        }
    public void ReceivePowerUp(PowerUpEffect effect)
    {
        if (GameManager.instance.allowEvents)
        {
            //Debug.Log(effect.name);

            //One-time effects
            SpawnNewBalls(effect.balls);
            SetMoney(money + effect.money);
            SetShields(shields + effect.shield);

            permaBonusBasePaddleLength += effect.paddleLength;
            UpdatePaddleLengthToTargetLength();

            if (effect.mainDuration != 0)
            {
                StartCoroutine(LaunchTemporaryPowerUpSequence(effect));
            }
        }
    }
Esempio n. 9
0
    private void Awake()
    {
        rb   = GetComponent <Rigidbody2D>();
        vaus = GameManager.instance.vaus;
        if (effectPool.Length == 0)
        {
            effectPool = Resources.LoadAll <PowerUpEffect>("PowerUpEffects");
        }

        effect = effectPool[Random.Range(0, effectPool.Length)];

        baseSpeed          = effect.baseSpeed;
        acceleration       = effect.acceleration;
        backgroundSR.color = effect.backgroundColor;
        iconSR.color       = effect.iconColor;
        if (effect.sprite != null)
        {
            iconSR.sprite = effect.sprite;
        }

        rb.velocity = new Vector2(0, -baseSpeed);
    }
Esempio n. 10
0
 /// <summary>
 /// Temporarily alter the player's settings with a power up. Display the power up name
 /// </summary>
 /// <param name="powerUp">An effect to apply</param>
 public void ApplyPowerUp(PowerUpEffect powerUp)
 {
     _powerUpCoroutine = StartCoroutine(ApplyPowerUpEnum(powerUp));
     HUDManager.Instance.DisplayMessage(powerUp.name);
 }
Esempio n. 11
0
 public void SetEffect(PowerUpEffect effect)
 {
     this.effect = effect;
 }
    void Start()
    {
        pickupEffect = GetComponent <ParticleSystem>();

        powerEffect = GetComponent <PowerUpEffect>();
    }