コード例 #1
0
ファイル: Tetris.cs プロジェクト: Joycraft/TetrisGame-Unity
    private void UpdateData(int count)
    {
        var special = isTSpin || count == 4;

        if (lastClearIsSpecial && special)
        {
            vfx.TextVFX_B2B();
        }

        lastClearIsSpecial = special;

        int points = 0;

        if (isTSpin)
        {
            if (isMini)
            {
                switch (count)
                {
                case 1:
                    points = 200 * level;
                    vfx.TextVFX_TSpinMiniSingle();
                    break;

                case 2:
                    points = 1200 * level;
                    vfx.TextVFX_TSpinMiniDouble();
                    break;

                default:
                    break;
                }
            }
            else
            {
                switch (count)
                {
                case 1:
                    points = 800 * level;
                    vfx.TextVFX_TSpinSingle();
                    break;

                case 2:
                    points = 1200 * level;
                    vfx.TextVFX_TSpinDouble();
                    break;

                case 3:
                    points = 1600 * level;
                    vfx.TextVFX_TSpinTriple();
                    break;

                default:
                    break;
                }
            }


            vfx.PlayClip(SV.ClipSpecial);
        }
        else
        {
            switch (count)
            {
            case 1:
                points = 100 * level;
                vfx.PlayClip(SV.ClipSingle);
                break;

            case 2:
                points = 300 * level;
                vfx.PlayClip(SV.ClipDouble);
                break;

            case 3:
                points = 500 * level;
                vfx.PlayClip(SV.ClipTriple);
                break;

            case 4:
                points = 800 * level;
                vfx.PlayClip(SV.ClipTetris);
                vfx.TextVFX_Tetris();
                break;

            default:
                break;
            }
        }


        if (special)
        {
            points = (int)(points * 1.5f);
        }
        score += points;

        OnScoreChanged?.Invoke(score);

        if (score / ((level + 1) * (level + 1) * (level + 1)) > 1000)
        {
            level++;
            OnLevelChanged?.Invoke(level);
        }

        line += count;
        OnGoalChanged?.Invoke(line);
    }