feat: scale speed based on level

This commit is contained in:
Martin Prokoph
2025-08-01 17:59:48 +02:00
parent a228e9ab1a
commit 6cc7b95852
8 changed files with 46 additions and 3 deletions

View File

@@ -59,10 +59,23 @@ public class Tetris {
public static void updateScore(int score) {
if (ui.getMenuPanel() instanceof ScoreMenu) ((ScoreMenu) ui.getMenuPanel()).updateScore(score);
updateLevel(score);
}
public static void updateTime() {
if (ui.getMenuPanel() instanceof ScoreMenu) ((ScoreMenu) ui.getMenuPanel()).updateTime(startTime);
}
public static void updateLevel(int score) {
int newLevel = Math.max(0, (int) (score / 1000f));
if (newLevel != space.level) {
if (gravityTask != null && Settings.shouldScaleSpeed) {
gravityTask.cancel();
gravityTask = new GravityTimerTask();
timer.scheduleAtFixedRate(gravityTask, 0, Math.max(10, Settings.difficulty.getTimerPeriod() - (Settings.difficulty.getTimerPeriod() / 8) * newLevel));
}
space.level = newLevel;
if (ui.getMenuPanel() instanceof ScoreMenu) ((ScoreMenu) ui.getMenuPanel()).updateLevel(newLevel);
}
}
public static class GravityTimerTask extends TimerTask {
@Override