Ejemplo n.º 1
0
    private void SetVegetableAvaliable(GameObject lastSelectedSlot, VegetableClass vegetable)
    {
        lastSelectedSlot.transform.GetChild(1).gameObject.SetActive(true);
        lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(1).gameObject.GetComponent <Image>().sprite =
            ((GameObject)Resources.Load(vegetable.Prefab)).GetComponent <SpriteRenderer>().sprite;
        lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(1).gameObject.GetComponent <Image>().preserveAspect = true;

        lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(0).gameObject.GetComponent <Text>().text = vegetable.Prefab;

        if (vegetable.Cost == 0)
        {
            lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(2).gameObject.GetComponent <Text>().text = "free";
        }
        else if (vegetable.Cost == 1)
        {
            lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(2).gameObject.GetComponent <Text>().text =
                vegetable.Cost.ToString() + " coin";
        }
        else
        {
            lastSelectedSlot.transform.GetChild(1).gameObject.transform.GetChild(2).gameObject.GetComponent <Text>().text =
                vegetable.Cost.ToString() + " coins";
        }

        lastSelectedSlot.transform.GetChild(0).gameObject.SetActive(false);

        EnablePlayButton();
    }
        public virtual void OnCollision2D(Collision2D collision)
        {
            int damage;

            switch (collision.gameObject.tag)
            {
            case "Vegetable":
                VegetableClass vegatable = collision.gameObject.GetComponent <VegetableController>().Vegetable;
                damage = Mathf.RoundToInt(Damage *
                                          (vegatable.CurrentGameObject.GetComponent <VegetableController>().Rigidbody2D.velocity.magnitude +
                                           CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude) * PhysicsConstants.MagnitudeCoefficient *
                                          CurrentGameObject.GetComponent <Rigidbody2D>().mass *PhysicsConstants.MassCoefficient);
                vegatable.Health -= damage;
                vegatable.CheckHealth();

                Debug.Log("Block to vegetable   :   " + damage);

                CurrentGameObject.GetComponent <SoundManagerComponent>().PlaySound(CollisionSound);
                break;

            case "Block":
                BlockClass block = collision.gameObject.GetComponent <BlockController>().Block;
                damage = Mathf.RoundToInt(Damage *
                                          (block.CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude +
                                           CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude) * PhysicsConstants.MagnitudeCoefficient *
                                          CurrentGameObject.GetComponent <Rigidbody2D>().mass *PhysicsConstants.MassCoefficient);
                block.Health -= damage;
                block.CheckHealth();

                Debug.Log("Block to block   :   " + damage);

                CurrentGameObject.GetComponent <SoundManagerComponent>().PlaySound(CollisionSound);
                break;

            case "Meat":
                MeatClass meat = collision.gameObject.GetComponent <MeatController>().Meat;
                damage = Mathf.RoundToInt(Damage *
                                          (meat.CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude +
                                           CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude) * PhysicsConstants.MagnitudeCoefficient *
                                          CurrentGameObject.GetComponent <Rigidbody2D>().mass *PhysicsConstants.MassCoefficient);
                meat.Health -= damage;

                Debug.Log("Block to meat   :   " + damage);

                meat.CheckHealth();
                break;

            default:
                if (isFirstCollision)
                {
                    damage = Mathf.RoundToInt(PhysicsConstants.DefaultDamage *
                                              CurrentGameObject.GetComponent <Rigidbody2D>().velocity.magnitude *PhysicsConstants.MagnitudeCoefficient *
                                              CurrentGameObject.GetComponent <Rigidbody2D>().mass *PhysicsConstants.MassCoefficient);
                    Health -= damage;

                    Debug.Log("Default to block   :   " + damage);

                    CheckHealth();
                }
                else
                {
                    isFirstCollision = true;
                }
                break;
            }
        }