Example #1
0
    // Start is called before the first frame update
    IEnumerator Start()
    {
        boxHealthState = BoxHealthState.Healthy;
        if (boxOrigin == BoxOrigin.Instantiate)
        {
            boxOccupiedState = BoxOccupiedState.Unoccupied;
        }
        float heightToFallTo = BOX_Y;

        if (boxOrigin == BoxOrigin.Instantiate)
        {
            //Debug.Log("instantiated boxes");
            obstaclesInColumn = GridWorld.GetColumnObjects(transform.position);
            if (obstaclesInColumn.Count > 0)
            {
                //Debug.Log("obstacles count greater than 0! " + obstaclesInColumn[0].transform.name);
                Box boxObstacle = obstaclesInColumn[0].GetComponent <Box>();
                if (boxObstacle != null && boxObstacle.countDownS.Elapsed() < (0.9f * boxObstacle.HEALTH))
                {
                    heightToFallTo = BOX_Y + obstaclesInColumn[0].GetComponent <SpriteRenderer>().bounds.size.y;
                    //Debug.Log("!setting height of fall " + BOX_Y);
                }
            }

            Tween boxFallTween = transform.DOLocalMoveY(heightToFallTo, FALL_SPEED).SetSpeedBased().SetEase(Ease.InExpo);
            //yield return boxFallTween.WaitForPosition(0.8f);

            yield return(boxFallTween.WaitForCompletion());

            SoundManager.instance.PlaySingle(SoundManager.instance.crash, 0.2f);
            //OnComplete(()=>
            //{
            if (obstaclesInColumn.Count > 0)
            {
                //Debug.Log("obstacles count greater than 0!");
                Box boxObstacle = obstaclesInColumn[0].GetComponent <Box>();
                if (boxObstacle != null)
                {
                    Debug.Log("setting boxOnTop variable");
                    boxObstacle.boxOnTop = gameObject;
                }
            }

            if (boxOccupiedState == BoxOccupiedState.Unoccupied)
            {
                //only broadcast event if first box on ground
                if (heightToFallTo > -11.5f && heightToFallTo < -11f)
                {
                    OnBoxEmpty?.Invoke(gameObject);
                }
            }
        }

        CountDown();
        //StartCoroutine(CountDown());
        //});
        GridWorld.RegisterObstacle(transform, false);
        //Debug.Log("box LOC: " + GridWorld.GetSquare(transform.position)[0] + " : " + GridWorld.GetSquare(transform.position)[1]);
    }
Example #2
0
    public void CountDown()
    {
        countDownS = DOTween.Sequence();
        countDownS.AppendInterval(0.6f * HEALTH);
        countDownS.AppendCallback(() => {
            deRegisterObstacle = false;
            //cracked box sprite
            if (crackedSprite != null)
            {
                mySpriteRenderer.sprite = crackedSprite;
                SoundManager.instance.PlaySingle(SoundManager.instance.smallCrack, 0.15f);
            }
            boxHealthState = BoxHealthState.Cracked;
        });
        countDownS.AppendInterval(0.4f * HEALTH);
        countDownS.AppendCallback(() => {
            //broken box sprite
            if (deRegisterObstacle == false)
            {
                deRegisterObstacle = true;
                GridWorld.RegisterObstacle(transform, true);

                if (boxOnTop != null)
                {
                    boxOnTop.GetComponent <Box>().DropDown();
                }
                if (crackedSprite != null)
                {
                    GameObject dust = Instantiate(Resources.Load("Prefabs/dust", typeof(GameObject)), new Vector3(transform.position.x, transform.position.y - 3.35f, 0f), Quaternion.identity, transform) as GameObject;
                    dust.GetComponent <ParticleSystem>().Play();
                    //SoundManager.instance.PlaySingle(SoundManager.instance.bigBreak);
                    SoundManager.instance.PlaySingle(SoundManager.instance.singleBoxBreak, 0.2f);
                }
                boxHealthState = BoxHealthState.Broken;
            }
        });
        countDownS.AppendInterval(0.75f);
        countDownS.AppendCallback(() => {
            if (crackedSprite != null && mySpriteRenderer.sprite != brokenSprite)
            {
                mySpriteRenderer.sprite = brokenSprite;
                transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y - 3.35f, transform.localPosition.z);
            }
        });
        countDownS.AppendInterval(2f);
        countDownS.AppendCallback(() => {
            mySpriteRenderer.DOFade(0f, 1f).OnComplete(() => {
                Destroy(gameObject);
            });
        });

        //yield return new WaitForSeconds(0.6f * HEALTH);
        //    deRegisterObstacle = false;
        //    //cracked box sprite
        //    if(crackedSprite != null)
        //    {
        //        mySpriteRenderer.sprite = crackedSprite;
        //        SoundManager.instance.PlaySingle(SoundManager.instance.smallCrack, 0.15f);
        //    }
        //    boxHealthState = BoxHealthState.Cracked;
        //yield return new WaitForSeconds(0.4f * HEALTH);
        ////broken box sprite
        //    if (deRegisterObstacle == false)
        //    {
        //        deRegisterObstacle = true;
        //        GridWorld.RegisterObstacle(transform, true);

        //        if (boxOnTop != null)
        //        {
        //            boxOnTop.GetComponent<Box>().DropDown();
        //        }
        //        if (crackedSprite != null)
        //        {
        //            GameObject dust = Instantiate(Resources.Load("Prefabs/dust", typeof(GameObject)), new Vector3(transform.position.x, transform.position.y - 3.35f, 0f), Quaternion.identity, transform) as GameObject;
        //            dust.GetComponent<ParticleSystem>().Play();
        //            //SoundManager.instance.PlaySingle(SoundManager.instance.bigBreak);
        //            SoundManager.instance.PlaySingle(SoundManager.instance.singleBoxBreak, 0.2f);
        //    }
        //        boxHealthState = BoxHealthState.Broken;
        //    }
        //yield return new WaitForSeconds(0.75f);
        //    if (crackedSprite != null && mySpriteRenderer.sprite != brokenSprite)
        //    {
        //        mySpriteRenderer.sprite = brokenSprite;
        //        transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y-3.35f, transform.localPosition.z);
        //    }
        //yield return new WaitForSeconds(2f);
        //    mySpriteRenderer.DOFade(0f, 1f).OnComplete(()=> {

        //        Destroy(gameObject);

        //    });
        //fade out
        //destroy
    }