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); }