Ejemplo n.º 1
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (!consumed && other.gameObject.tag.Equals("Ball"))
        {
            consumed = true;

            switch (type)
            {
            case Type.DEPRIMUS:
                DeprimusManager.Consume(this, 0f, () => {
                    for (byte i = 0; i < 2; ++i)
                    {
                        DeprimusManager.Spawn();
                    }
                }, null);
                break;

            case Type.AGILLIUS:
                DeprimusManager.Consume(this, 5f, () => {
                    GameManager.ball.speed *= 2.0f;
                    GameManager.ball.rigidBody.velocity *= 2.0f;
                }, () => {
                    GameManager.ball.speed /= 2.0f;
                    GameManager.ball.rigidBody.velocity /= 2.0f;
                });
                break;

            case Type.CRIZATUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++crizatusCount;

                    if (crizatusCount == 1)
                    {
                        GameManager.crizatusCanvas.SetActive(true);
                    }
                }, () => {
                    --crizatusCount;

                    if (crizatusCount == 0)
                    {
                        GameManager.crizatusCanvas.SetActive(false);
                        MainCamera.transform.localPosition = MainCamera.basePos;
                    }
                });
                break;

            case Type.DILIUS:
                DeprimusManager.Consume(this, 5f, () => {
                    DeprimusManager.actualSpawnProb *= 3.0f;
                }, () => {
                    DeprimusManager.actualSpawnProb /= 3.0f;
                });
                break;

            case Type.CONFUSCIUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++confusciusCount;

                    if (confusciusCount == 1)
                    {
                        GameManager.player.isConfused = true;
                    }
                }, () => {
                    --confusciusCount;

                    if (confusciusCount == 0)
                    {
                        GameManager.player.isConfused = false;
                    }
                });
                break;

            case Type.INGINIUS:
                DeprimusManager.Consume(this, 0f, () => {
                    for (byte i = 0; i < 2; ++i)
                    {
                        DeprimusManager.SpawnOfType(Type.CHANSUS);
                    }
                }, null);
                break;

            case Type.FOOLUS:
                DeprimusManager.Consume(this, 0f, () => {
                    for (byte i = 0; i < 2; ++i)
                    {
                        DeprimusManager.SpawnOfType(Type.GHINIONUS);
                    }
                }, null);
                break;

            case Type.ORDINARIUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++ordinariusCount;
                }, () => {
                    --ordinariusCount;

                    if (ordinariusCount == 0)
                    {
                        GameManager.ball.transform.eulerAngles = Vector3.zero;
                        GameManager.ball.rigidBody.velocity    = GameManager.ball.baseVelocity * GameManager.ball.speed;
                    }
                });
                break;

            case Type.CURIOSUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++curiosusCount;
                }, () => {
                    --curiosusCount;

                    if (curiosusCount == 0)
                    {
                        GameManager.ball.transform.eulerAngles = Vector3.zero;
                        GameManager.ball.rigidBody.velocity    = GameManager.ball.baseVelocity * GameManager.ball.speed;
                    }
                });
                break;

            case Type.DISGUSTUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++disgustusCount;

                    if (disgustusCount == 1)
                    {
                        GameManager.player.isDisgusted             = true;
                        GameManager.player.renderer.material.color = new Color(128 / 255f, 42 / 255f, 77 / 255f);
                    }
                }, () => {
                    --disgustusCount;

                    if (disgustusCount == 0)
                    {
                        GameManager.player.isDisgusted             = false;
                        GameManager.player.renderer.material.color = new Color(1.0f, 1.0f, 1.0f);
                    }
                });
                break;

            case Type.CHANSUS:
                DeprimusManager.Consume(this, 0f, () => {
                    int count = Mathf.Min(BrickManager.bricks.Count, UnityEngine.Random.Range(1, 4));

                    while ((count--) > 0)
                    {
                        BrickManager.DestroyBrick(BrickManager.bricks[UnityEngine.Random.Range(0, BrickManager.bricks.Count)]);
                    }
                }, null);
                break;

            case Type.GHINIONUS:
                DeprimusManager.Consume(this, 0f, () => {
                    int count = Mathf.Min(BrickManager.freePositions.Count, UnityEngine.Random.Range(1, 4));

                    while ((count--) > 0)
                    {
                        BrickManager.RecreateBrick(UnityEngine.Random.Range(0, BrickManager.freePositions.Count));
                    }
                }, null);
                break;

            case Type.FERICITUS:
                DeprimusManager.Consume(this, 0f, () => DeprimusManager.Reset(), null);
                break;

            case Type.HLIZATUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++hlizatusCount;
                }, () => {
                    --hlizatusCount;

                    if (hlizatusCount == 0)
                    {
                        MainCamera.transform.localPosition = MainCamera.basePos;
                    }
                });
                break;

            case Type.OBSEDATUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++obsedatusCount;

                    if (obsedatusCount == 1)
                    {
                        GameManager.player.isObsessed = true;
                    }
                }, () => {
                    --obsedatusCount;

                    if (obsedatusCount == 0)
                    {
                        GameManager.player.isObsessed = false;
                    }
                });
                break;

            case Type.NERVOSUS:
                DeprimusManager.Consume(this, 5f, () => {
                    ++nervosusCount;

                    if (nervosusCount == 1)
                    {
                        GameManager.nervosusCanvas.SetActive(true);
                    }
                }, () => {
                    --nervosusCount;

                    if (nervosusCount == 0)
                    {
                        GameManager.nervosusCanvas.SetActive(false);
                        MainCamera.transform.localPosition = MainCamera.basePos;
                    }
                });
                break;
            }
        }
    }