private Vector3 GetBlockerScale(GameObject targetBlocker)
    {
        BlockerModel targetBlockerM = targetBlocker.GetComponent <BlockerModel>();
        float        currScale      = targetBlocker.transform.localScale.x + 0.25f * targetBlockerM.blockerTier;

        return(new Vector3(currScale, currScale * 0.01f, currScale));
    }
    private void OnGreenMarker(BlockerModel blocker)
    {
        int scores = blocker.XpForDestroy;

        AddXPByDestroy(scores);
        _coreGameplayController.AddScores(scores);
        _uiController.SetXPLable(_level, _currentXP, _nextLevelXP);
        Destroy(blocker.gameObject);
    }
    private void InitBlock()
    {
        Vector3 newBlockerPos  = GetStartBlockPosition();
        int     newBlockerTier = GetRandomBlockerTier();

        GameObject   newBlocker      = Instantiate(GetBlocker(newBlockerTier), newBlockerPos, prefabs.blockersGO.transform.rotation, prefabs.blockersGO.transform);
        BlockerModel newBlockerModel = newBlocker.GetComponent <BlockerModel>();

        newBlockerModel.blockerTier  = newBlockerTier;
        newBlockerModel.XpForDestroy = (int)newBlockerTier + 1;

        newBlocker.transform.SetParent(prefabs.blockersGO.transform);
        newBlocker.transform.localScale    = GetBlockerScale(newBlocker);
        newBlocker.transform.localRotation = Quaternion.Euler(0F, UnityEngine.Random.Range(0, 360F), 0F);
        newBlocker.GetComponentInChildren <Rigidbody>().velocity += Vector3.back * config.boxMotionSpeed;
    }
    private void OnTriggerEnter(Collider other)
    {
        BlockerModel blocker = other.gameObject.GetComponent <BlockerModel>();

        if (blocker != null)
        {
            switch (other.tag)
            {
            //TODO: move from tag to enum in BlockerModel
            case "RedMarker": OnRedMarker(blocker); break;

            case "GreenMarker": OnGreenMarker(blocker); break;

            case "BlackMarker": OnBlackMarker(blocker); break;
            }
        }
    }
 private void OnBlackMarker(BlockerModel blocker)
 {
     Destroy(blocker.gameObject);
     _coreGameplayController.CreateTornado(transform.position, transform.localScale);
     Destroy(gameObject);
 }
 private void OnRedMarker(BlockerModel blocker)
 {
     Destroy(blocker.gameObject);
     _coreGameplayController.EndTheGame();
 }