예제 #1
0
 private void OnChromieHitColorZoneHandler(ChromieController chromieController, ColorZoneController colorZone)
 {
     if (chromieController.ChromieType == colorZone.Color)
     {
         ChromieCollected(chromieController, colorZone);
     }
 }
예제 #2
0
    protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
    {
        if (cheomieControllerActivator != null)
        {
            SpwanerController spwanerController;
            ColorZonesController colorZonesController;

            ChromieController[] chromiesControllers = GameObject.FindObjectsOfType<ChromieController>();
            for (int i = 0; i < chromiesControllers.Length; i++)
            {
                if (chromiesControllers[i].gameObject.activeSelf)
                {
                    chromiesControllers[i].SwitchChromie(cheomieControllerActivator.ChromieDefenition);
                }
            }

            spwanerController = GameObject.FindObjectOfType<SpwanerController>();
            spwanerController.SetSpwanColorOverride(cheomieControllerActivator.ChromieType);

            colorZonesController = GameObject.FindObjectOfType<ColorZonesController>();
            colorZonesController.OverrideColorZonesColor(cheomieControllerActivator.ChromieDefenition);

            yield return Timing.WaitForSeconds(GetDuration());

            spwanerController.SetSpwanColorOverride(eChromieType.None);
            colorZonesController.ResetColorZonesToOriginalColor();
        }
    }
예제 #3
0
    private void ActivatePowerup(PowerupBase powerup, ChromieController chromieController)
    {
        if (!powerup.AllowMultiple)
        {
            foreach (PowerupBase activePowerup in _activePowerups)
            {
                if (activePowerup.GetType() == powerup.GetType())
                {
                    // stop the powerup from activate, there is alrady one active!
                    Debug.Log("stopped powerup: " + powerup.name + " from activate!");
                    return;
                }
            }
        }
        PowerupBase powerupInstance = powerup.StartPowerup(chromieController);

        _activePowerups.Add(powerupInstance);

        if (_powerupActivationEffectprefab != null)
        {
            GameObject powerupEffect = Lean.LeanPool.Spawn(_powerupActivationEffectprefab, chromieController.transform.position, Quaternion.identity);
            powerupEffect.GetComponent<ParticleSystem>().startColor = chromieController.ChromieDefenition.ColorValue;
            Lean.LeanPool.Despawn(powerupEffect, 2.0f);
        }
    }
예제 #4
0
    private void OnChromieCollectedHandler(ChromieController chromieController, ColorZoneController colorZone)
    {
        _gameplayTrackingData.CollectedChromiez++;

        if (_gameplayTrackingData.ColletedColors.ContainsKey(chromieController.ChromieDefenition.ChromieColor))
        {
            _gameplayTrackingData.ColletedColors[chromieController.ChromieDefenition.ChromieColor] += 1;
        }
        else
        {
            _gameplayTrackingData.ColletedColors.Add(chromieController.ChromieDefenition.ChromieColor, 1);
        }

        if (chromieController.IsPowerup)
        {
            _gameplayTrackingData.CollectedPowerups++;

            if (_gameplayTrackingData.CollectedPoweupsColors.ContainsKey(chromieController.ChromieDefenition.ChromieColor))
            {
                _gameplayTrackingData.CollectedPoweupsColors[chromieController.ChromieDefenition.ChromieColor] += 1;
            }
            else
            {
                _gameplayTrackingData.CollectedPoweupsColors.Add(chromieController.ChromieDefenition.ChromieColor, 1);
            }
        }
    }
예제 #5
0
    public void OnChromieCollectedHandler(ChromieController chromieController, ColorZoneController colorZone)
    {
        if (colorZone == this)
        {
            //TODO: Display collection animation
            _colorZoneCharacter.Collected();

        }
    }
예제 #6
0
    protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
    {
        GameplayLivesManager livesManager = GameObject.FindObjectOfType<GameplayLivesManager>();
        if (livesManager != null)
        {
            livesManager.AddLifeSlot(NumberOfExtraLivesSlots);
        }

        yield return 0f;
    }
예제 #7
0
    protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
    {
        GameplayTimerManager timerManager = GameObject.FindObjectOfType<GameplayTimerManager>();
        if (timerManager != null)
        {
            timerManager.AddTime(TimeToAdd);
        }

        yield return 0f;
    }
예제 #8
0
    public PowerupBase StartPowerup(ChromieController chromieController)
    {
        Debug.Log("start powerup: " + this.name);
        PowerupBase powerupEffect = ScriptableObject.Instantiate(this);
        if (powerupEffect != null)
        {
            Timing.RunCoroutine(powerupEffect.PlayPowerupEffect(chromieController));
        }

        return powerupEffect;
    }
예제 #9
0
    private void OnChromieCollectedHandler(ChromieController chromieController, ColorZoneController colorZone)
    {
        if (chromieController.IsPowerup)
        {
            if (chromieController.ChromieDefenition.ActivePowerup != null)
            {
                ActivatePowerup(chromieController.ChromieDefenition.ActivePowerup, chromieController);

            }
        }
    }
예제 #10
0
    private void OnScoreUpdateHandler(int scoreAdded, int newScore, ChromieController chromieController)
    {
        UpdateScoreDisplay(newScore);

        if (_displayScoreIndicationOnCollection && chromieController != null)
        {
            Vector3 position = chromieController.transform.localPosition;
            ScoreIndicatorController scoreIndicator = Lean.LeanPool.Spawn(_scoreIndicatorPrefab, position, Quaternion.identity, this.transform);
            scoreIndicator.transform.position = position;
            scoreIndicator.DisplayScore(scoreAdded, chromieController.ChromieDefenition.ColorValue);
        }
    }
예제 #11
0
    protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
    {
        GameplayLivesManager livesManager = GameObject.FindObjectOfType<GameplayLivesManager>();
        if (livesManager != null)
        {
            livesManager.SetImmune(true);

            yield return Timing.WaitForSeconds(Duration);

            livesManager.SetImmune(false);
        }
    }
예제 #12
0
 private void OnChromieDespwanedHandler(ChromieController chromieController)
 {
     if (chromieController.gameObject == _draggedObject)
     {
         IDraggable draggable = _draggedObject.gameObject.GetComponent<IDraggable>();
         if (draggable != null)
         {
             draggable.EndDrag();
         }
         _isDragging = false;
         _draggedObject = null;
     }
 }
 protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
 {
     GameplayPowerupsManager gameplayPowerupsManager = GameObject.FindObjectOfType<GameplayPowerupsManager>();
     if (gameplayPowerupsManager != null)
     {
         GameplayBuffEffect buffEffect = GameplayBuffsManager.Instance.CreateBuff(BuffEffect);
         gameplayPowerupsManager.UpdatePowerupSpwanInterval();
         if (IsActive)
         {
             yield return Timing.WaitForSeconds(GetDuration());
             GameplayBuffsManager.Instance.RemoveBuff(buffEffect);
             gameplayPowerupsManager.UpdatePowerupSpwanInterval();
         }
     }
 }
예제 #14
0
 protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
 {
     GameplayScoreManager scoreManager = GameObject.FindObjectOfType<GameplayScoreManager>();
     if (scoreManager != null)
     {
         GameplayBuffEffect buffEffectInstance = GameplayBuffsManager.Instance.CreateBuff(BuffEffect);
         scoreManager.UpdateScoreMultiplier();
         if (IsActive)
         {
             yield return Timing.WaitForSeconds(GetDuration());
             GameplayBuffsManager.Instance.RemoveBuff(buffEffectInstance);
             scoreManager.UpdateScoreMultiplier();
         }
     }
 }
예제 #15
0
    protected override IEnumerator<float> PowerupEffectCorutine(ChromieController cheomieControllerActivator)
    {
        float scaleValue = BuffEffect.Value * GameplayBuffsManager.GetValue(eBuffType.PowerupEffectMultiplier);
        GameplayBuffEffect buffEffect = GameplayBuffsManager.Instance.CreateBuff(BuffEffect.Type, scaleValue, BuffEffect.Method);

        ColorZoneController[] colorZoneControlerList = GameObject.FindObjectsOfType<ColorZoneController>();
        foreach (ColorZoneController colorZone in colorZoneControlerList)
        {
            colorZone.UpdateScaleFactor();
        }

        if (IsActive)
        {
            GameplayBuffsManager.Instance.RemoveBuff(buffEffect);
            yield return Timing.WaitForSeconds(GetDuration());
            foreach (ColorZoneController colorZone in colorZoneControlerList)
            {
                colorZone.UpdateScaleFactor();
            }
        }
    }
예제 #16
0
    private void OnChromieCollectedHandler(ChromieController chromieController, ColorZoneController colorZone)
    {
        int scoreToAdd = 1;

        if (_lastCollectedChromie == chromieController.ChromieType)
        {
            _currentComboCount++;
        }
        else
        {
            _currentComboCount = 0;
        }

        scoreToAdd += (_currentComboCount * _currentComboMultiplier);

        scoreToAdd *= _currentScoreMultiplier;

        _currentScore += scoreToAdd;

        GameplayEventsDispatcher.Instance.ScoreUpdate(scoreToAdd, _currentScore, chromieController);

        _lastCollectedChromie = chromieController.ChromieType;
    }
예제 #17
0
    public IEnumerator<float> PlayPowerupEffect(ChromieController chromieController)
    {
        if (ActivationEffectPrefab != null)
        {
            Instantiate(ActivationEffectPrefab);
        }

        if (DurationEffectPrefab != null)
        {
            if (_durationEffectInstance != null)
            {
                Destroy(_durationEffectInstance);
            }

            _durationEffectInstance = Instantiate(DurationEffectPrefab) as GameObject;
        }

        GameplayEventsDispatcher.SendPowerupStarted(this);

        yield return Timing.WaitUntilDone(Timing.RunCoroutine(PowerupEffectCorutine(chromieController)));

        Timing.KillCoroutines(this.GetHashCode().ToString());

        if (_durationEffectInstance != null)
        {
            Destroy(_durationEffectInstance);
            _durationEffectInstance = null;
        }

        if (FinishedEffectPrefab != null)
        {
            Instantiate(FinishedEffectPrefab);
        }

        GameplayEventsDispatcher.SendPowerupStopped(this);
    }
예제 #18
0
 private void ChromieCollected(ChromieController chromieController, ColorZoneController colorZone)
 {
     GameplayEventsDispatcher.SendChromieCollected(chromieController, colorZone);
 }
예제 #19
0
 public void ChromieCollected(ChromieController chromieController, ColorZoneController colorZone)
 {
     if (OnChromieCollected != null)
     {
         OnChromieCollected(chromieController, colorZone);
     }
 }
예제 #20
0
 public void OnChromieCollectedHandler(ChromieController chromieController, ColorZoneController colorZone)
 {
     if (chromieController == this)
     {
         //TODO: do stuff when collected
     }
 }
예제 #21
0
 public void ChromieDropped(ChromieController chromieController)
 {
     if (OnChromieDropped != null)
     {
         OnChromieDropped(chromieController);
     }
 }
예제 #22
0
 private void OnChromieDroppedHandler(ChromieController chromieController)
 {
     _currentComboCount = 0;
     _lastCollectedChromie = eChromieType.None;
 }
예제 #23
0
 public static void SendScoreUpdate(int scoreAdded, int newScore, ChromieController chromieController)
 {
     GameplayEventsDispatcher.Instance.ScoreUpdate(scoreAdded, newScore, chromieController);
 }
예제 #24
0
    private void OnChromieDroppedHandler(ChromieController chromieController)
    {
        if (_isActive)
        {
            LooseLife();

            if (_hitIndicatorPrefab != null)
            {
                Timing.RunCoroutine(DisplayHit(chromieController.transform.position));
            }
        }
    }
예제 #25
0
 public static void SendChromieDeSpwaned(ChromieController chromieController)
 {
     GameplayEventsDispatcher.Instance.ChromieDeSpwaned(chromieController);
 }
예제 #26
0
 public static void SendChromieCollected(ChromieController chromieController, ColorZoneController colorZone)
 {
     GameplayEventsDispatcher.Instance.ChromieCollected(chromieController, colorZone);
 }
예제 #27
0
 public void ScoreUpdate(int scoreAdded, int newScore, ChromieController chromieController)
 {
     if (OnScoreUpdate != null)
     {
         OnScoreUpdate(scoreAdded, newScore, chromieController);
     }
 }
예제 #28
0
 public void ChromieHitColorZone(ChromieController chromieController, ColorZoneController colorZone)
 {
     if (OnChromieHitColorZone != null)
     {
         OnChromieHitColorZone(chromieController, colorZone);
     }
 }
예제 #29
0
 public void ChromieSpwaned(ChromieController cheomieController)
 {
     if (OnChromieSpawned != null)
     {
         OnChromieSpawned(cheomieController);
     }
 }
예제 #30
0
 private void OnScoreUpdateHandler(int scoreAdded, int newScore, ChromieController chromieController)
 {
     _gameplayTrackingData.Score += scoreAdded;
 }