Добавить доступный интерфейс этапа 3

This commit is contained in:
2026-08-18 16:29:08 +03:00
parent dcb16ef4d0
commit 21775542d5
11 changed files with 854 additions and 23 deletions
@@ -104,6 +104,16 @@ public final class GameStrings {
if (russian()) return enabled ? "Вкл." : "Выкл.";
return enabled ? "On" : "Off";
}
public String accessibilityTitle() { return russian() ? "ДОСТУПНОСТЬ" : "ACCESSIBILITY"; }
public String textSizeSetting() { return russian() ? "Размер текста" : "Text size"; }
public String textSizeValue(float scale) {
return scale > 1f ? (russian() ? "Крупный" : "Large")
: (russian() ? "Обычный" : "Standard");
}
public String highContrastSetting() { return russian() ? "Контраст" : "High contrast"; }
public String highContrastValue(boolean enabled) {
return hapticsValue(enabled);
}
public String back() { return russian() ? "Назад" : "Back"; }
public String hudStats(int deaths, long elapsedMilliseconds) {
@@ -224,6 +234,79 @@ public final class GameStrings {
return step + " / " + total;
}
public String accessibilityStatus(int activeSignals, int totalSignals,
int openDoors, int totalDoors, boolean playerAlive) {
if (russian()) {
return "Сигналы " + activeSignals + "/" + totalSignals
+ " · Двери " + openDoors + "/" + totalDoors
+ " · Доброволец " + (playerAlive ? "активен" : "возрождается");
}
return "Signals " + activeSignals + "/" + totalSignals
+ " · Doors " + openDoors + "/" + totalDoors
+ " · Volunteer " + (playerAlive ? "active" : "respawning");
}
public String levelSelectDescription(int unlocked, int total) {
if (russian()) {
return "Выбор уровня. Открыто " + unlocked + " из " + total
+ ". Выберите открытый уровень или Настройки.";
}
return "Level select. " + unlocked + " of " + total
+ " unlocked. Choose an unlocked level or open Settings.";
}
public String settingsDescription(ControlSettings controls,
AccessibilitySettings accessibility) {
if (russian()) {
return "Настройки. Размер управления "
+ controlSizeValue(controls.controlSizeIndex())
+ ". Прозрачность управления "
+ controlOpacityValue(controls.controlOpacityIndex())
+ ". Вибрация " + hapticsValue(controls.hapticsEnabled())
+ ". Размер текста " + textSizeValue(accessibility.textScale())
+ ". Контраст " + highContrastValue(accessibility.highContrastEnabled())
+ ". Назад.";
}
return "Settings. Control size " + controls.controlSizeLabel()
+ ". Control opacity " + controls.controlOpacityLabel()
+ ". Vibration " + controls.hapticsLabel()
+ ". Text size " + accessibility.textSizeLabel()
+ ". High contrast " + accessibility.highContrastLabel()
+ ". Back.";
}
public String playingDescription(int levelNumber, int deaths, String elapsed,
String criticalState, boolean paused) {
if (paused) {
return russian()
? "Пауза на уровне " + levelNumber + ", " + levelTitle(levelNumber)
+ ". Продолжить или вернуться к выбору уровня."
: "Paused on level " + levelNumber + ", " + levelTitle(levelNumber)
+ ". Resume or return to level select.";
}
if (russian()) {
return "Идёт уровень " + levelNumber + ", " + levelTitle(levelNumber)
+ ". Добровольцы " + deaths + ". Время " + elapsed + ". "
+ criticalState + ". Движение влево и вправо, прыжок, заново, пауза.";
}
return "Playing level " + levelNumber + ", " + levelTitle(levelNumber)
+ ". " + deaths + " volunteers. Time " + elapsed + ". " + criticalState
+ ". Move left, move right, jump, restart, pause.";
}
public String completeDescription(int levelNumber, int deaths, String elapsed,
boolean hasNextLevel) {
if (russian()) {
return "Уровень завершён. " + levelTitle(levelNumber) + ". Добровольцы "
+ deaths + ". Время " + elapsed
+ ". Выбор уровня. Повторить."
+ (hasNextLevel ? " Следующий уровень." : "");
}
return "Level complete. " + levelTitle(levelNumber) + ". " + deaths
+ " volunteers. Time " + elapsed + ". Level select. Replay."
+ (hasNextLevel ? " Next level." : "");
}
public String levelTitle(int oneBasedLevelNumber) {
return (russian() ? RU_TITLES : EN_TITLES)[levelIndex(oneBasedLevelNumber)];
}