package com.mygdx.game;

/**
 * Локализация игры - все тексты на русском и английском.
 */
public class Localization {
    private static String currentLanguage = "ru";
    
    // ==================== МЕНЮ ====================
    public static String newGame() {
        return isRu() ? "🚀 НОВАЯ ИГРА" : "🚀 NEW GAME";
    }
    
    public static String continueGame() {
        return isRu() ? "▶️ ПРОДОЛЖИТЬ" : "▶️ CONTINUE";
    }
    
    public static String selectPlanet() {
        return isRu() ? "🪐 ВЫБОР ПЛАНЕТЫ" : "🪐 SELECT PLANET";
    }
    
    public static String help() {
        return isRu() ? "❓ ПОМОЩЬ" : "❓ HELP";
    }
    
    public static String about() {
        return isRu() ? "ℹ️ ОБ ИГРЕ" : "ℹ️ ABOUT";
    }
    
    public static String achievements() {
        return isRu() ? "🏆 ДОСТИЖЕНИЯ" : "🏆 ACHIEVEMENTS";
    }
    
    public static String exit() {
        return isRu() ? "🚪 ВЫХОД" : "🚪 EXIT";
    }
    
    public static String back() {
        return isRu() ? "⬅️ НАЗАД" : "⬅️ BACK";
    }
    
    public static String gameTitle() {
        return "✨ ABSURD CITY BUILDER ✨";
    }
    
    public static String gameSubtitle() {
        return isRu() 
            ? "Строй абсурдные города на разных планетах!"
            : "Build absurd cities on different planets!";
    }
    
    public static String getLanguageLabel() {
        return isRu() ? "EN" : "RU";
    }
    
    public static String welcomeTo(Planet planet) {
        String name = planetName(planet);
        return isRu() 
            ? "Добро пожаловать на " + name + "! Выберите здание и кликните на поле."
            : "Welcome to " + name + "! Select a building and click on the field.";
    }
    
    public static String flying(Planet planet) {
        return isRu() 
            ? "Запускаем космический корабль на " + planetName(planet) + "! 🚀"
            : "Launching spaceship to " + planetName(planet) + "! 🚀";
    }
    
    public static String blockBuilt() {
        return isRu() ? "Отлично! Блок построен!" : "Great! Block built!";
    }
    
    public static String changePlanet() {
        return isRu() ? "↑/↓ - сменить планету" : "↑/↓ - change planet";
    }
    
    public static String planetKeys() {
        return isRu() ? "1-Земля, 2-Марс, 3-Венера" : "1-Earth, 2-Mars, 3-Venus";
    }
    
    public static String selectBuildingType() {
        return isRu() ? "←/→ - выбрать тип здания" : "←/→ - select building type";
    }
    
    public static String task(String question) {
        return isRu() ? "🧮 Задача: " + question : "🧮 Problem: " + question;
    }
    
    public static String enterSubmit() {
        return isRu() ? "⏎ Enter - отправить ответ" : "⏎ Enter - submit answer";
    }
    
    public static String escCancel() {
        return isRu() ? "⎋ ESC - отмена ввода" : "⎋ ESC - cancel input";
    }
    
    public static String backspaceDelete() {
        return isRu() ? "⌫ Backspace - удалить символ" : "⌫ Backspace - delete character";
    }
    
    public static String clickToBuild() {
        return isRu() 
            ? "🖱️ Кликните на поле для строительства"
            : "🖱️ Click on the field to build";
    }
    
    public static String controls() {
        return isRu()
            ? "🗑️ Delete/Ctrl+Z - удалить здание | ⌫ Backspace - удалить блок | ⎋ ESC - меню"
            : "🗑️ Delete/Ctrl+Z - delete building | ⌫ Backspace - delete block | ⎋ ESC - menu";
    }
    
    // ==================== ПЛАНЕТЫ ====================
    public static String earth() {
        return isRu() ? "🌍 ЗЕМЛЯ" : "🌍 EARTH";
    }
    
    public static String mars() {
        return isRu() ? "♂️ МАРС" : "♂️ MARS";
    }
    
    public static String venus() {
        return isRu() ? "♀️ ВЕНЕРА" : "♀️ VENUS";
    }
    
    public static String planetName(Planet planet) {
        switch (planet) {
            case EARTH: return isRu() ? "Земля" : "Earth";
            case MARS: return isRu() ? "Марс" : "Mars";
            case VENUS: return isRu() ? "Венера" : "Venus";
            default: return "";
        }
    }
    
    // ==================== ИГРОВОЙ ПРОЦЕСС ====================
    public static String welcome(Planet planet) {
        String name = planetName(planet);
        return isRu() 
            ? "Добро пожаловать на " + name + "! Выберите здание и кликните на поле."
            : "Welcome to " + name + "! Select a building and click on the field.";
    }
    
    public static String buildingProgress(int current, int max) {
        return isRu() 
            ? "📊 Прогресс: " + current + "/" + max + " блоков"
            : "📊 Progress: " + current + "/" + max + " blocks";
    }
    
    public static String selectBuilding() {
        return isRu() ? "🏗️ Тип здания: " : "🏗️ Building type: ";
    }
    
    public static String currentPlanet() {
        return isRu() ? "🌍 Планета: " : "🌍 Planet: ";
    }
    
    public static String changePlanetHint() {
        return isRu() ? "↑/↓ - сменить планету" : "↑/↓ - change planet";
    }
    
    public static String planetKeysHint() {
        return isRu() ? "1-Земля, 2-Марс, 3-Венера" : "1-Earth, 2-Mars, 3-Venus";
    }
    
    public static String selectBuildingHint() {
        return isRu() ? "←/→ - выбрать тип здания" : "←/→ - select building type";
    }
    
    public static String clickToPlace() {
        return isRu() 
            ? "🖱️ Кликните на поле для строительства"
            : "🖱️ Click on the field to build";
    }
    
    public static String controlsHint() {
        return isRu()
            ? "🗑️ Delete/Ctrl+Z - удалить здание | ⌫ Backspace - удалить блок | ⎋ ESC - меню"
            : "🗑️ Delete/Ctrl+Z - remove building | ⌫ Backspace - remove block | ⎋ ESC - menu";
    }
    
    public static String enterAnswer() {
        return isRu() ? "✏️ Введите ответ:" : "✏️ Enter answer:";
    }
    
    public static String mathProblem() {
        return isRu() ? "🧮 Задача: " : "🧮 Problem: ";
    }
    
    public static String enterHint() {
        return isRu() ? "⏎ Enter - отправить ответ" : "⏎ Enter - submit answer";
    }
    
    public static String escHint() {
        return isRu() ? "⎋ ESC - отмена ввода" : "⎋ ESC - cancel input";
    }
    
    public static String backspaceHint() {
        return isRu() ? "⌫ Backspace - удалить символ" : "⌫ Backspace - delete character";
    }
    
    public static String escForMenu() {
        return isRu() ? "Нажмите ESC для возврата в меню" : "Press ESC to return to menu";
    }
    
    public static String inFlight() {
        return isRu() ? "(Перелет...)" : "(In flight...)";
    }
    
    // ==================== СООБЩЕНИЯ ====================
    public static String correctAnswer() {
        return isRu() ? "Отлично! Блок построен!" : "Great! Block built!";
    }
    
    public static String wrongAnswer() {
        return isRu() ? "Неверно! Блок разрушен!" : "Wrong! Block destroyed!";
    }
    
    public static String buildingComplete() {
        return isRu() ? "Успех! " : "Success! ";
    }
    
    public static String buildingDestroyed() {
        return isRu() ? "Здание разрушено до основания! " : "Building destroyed completely! ";
    }
    
    public static String enterNumber() {
        return isRu() ? "Введите целое число!" : "Enter a whole number!";
    }
    
    public static String enterAnswer2() {
        return isRu() ? "Введите ответ!" : "Enter an answer!";
    }
    
    public static String inputCanceled() {
        return isRu() ? "Ввод отменен." : "Input canceled.";
    }
    
    public static String gamePaused() {
        return isRu() ? "Игра приостановлена. Нажмите ESC для продолжения." : "Game paused. Press ESC to continue.";
    }
    
    public static String buildingSelected(String name) {
        return isRu() ? "Выбран: " + name : "Selected: " + name;
    }
    
    public static String buildingCanceled() {
        return isRu() ? "Строительство отменено. Выберите новое место." : "Construction canceled. Choose a new location.";
    }
    
    public static String lastBuildingRemoved() {
        return isRu() ? "Последнее здание удалено." : "Last building removed.";
    }
    
    public static String noBuildingsToRemove() {
        return isRu() ? "Нет зданий для удаления." : "No buildings to remove.";
    }
    
    public static String blockRemoved(int progress) {
        return isRu() 
            ? "Блок удален! Текущий прогресс: " + progress + "/3"
            : "Block removed! Current progress: " + progress + "/3";
    }
    
    public static String flyingTo(Planet planet) {
        return isRu() 
            ? "Запускаем космический корабль на " + planetName(planet) + "! 🚀"
            : "Launching spaceship to " + planetName(planet) + "! 🚀";
    }
    
    public static String leaving(Planet planet) {
        return isRu() ? "Покидаем " + planetName(planet) + "..." : "Leaving " + planetName(planet) + "...";
    }
    
    public static String arriving(Planet planet) {
        return isRu() ? "Прибываем на " + planetName(planet) + "!" : "Arriving at " + planetName(planet) + "!";
    }
    
    // ==================== НАЗВАНИЯ ЗДАНИЙ ====================
    public static String[][] getBuildingNames() {
        if (isRu()) {
            return GameConfig.BUILDING_TYPES_BY_PLANET;
        }
        return BUILDING_NAMES_EN;
    }
    
    private static final String[][] BUILDING_NAMES_EN = {
        // Earth
        {
            "✨ Cozy House ✨",
            "🏥 Children's Hospital 🏥",
            "🎒 Fun School 🎒",
            "🎪 Playground 🎪",
            "💰 Reliable Bank 💰",
            "💊 Healthy Pharmacy 💊",
            "🎭 Magic Theater 🎭",
            "🎬 CinemaWorld 🎬"
        },
        // Mars
        {
            "🚀 Martian Base 🚀",
            "🔴 Red Laboratory 🔴",
            "🛰️ Spaceport 🛰️",
            "⚡ Energy Dome ⚡",
            "💧 Hydrogen Plant 💧",
            "🌌 Observatory 🌌",
            "🤖 Robo-Factory 🤖",
            "🧪 Bio-Dome 🧪"
        },
        // Venus
        {
            "🌋 Volcanic House 🌋",
            "🔥 Thermal Station 🔥",
            "🌅 Golden Palace 🌅",
            "☁️ Cloud City ☁️",
            "💎 Crystal Mine 💎",
            "🌡️ Greenhouse 🌡️",
            "🌀 Vortex Generator 🌀",
            "✨ Shining Tower ✨"
        }
    };
    
    // ==================== ШУТКИ ПРИ ПРАВИЛЬНОМ ОТВЕТЕ ====================
    public static String[] getSuccessComments(Planet planet) {
        if (isRu()) {
            return SUCCESS_COMMENTS_RU[planet.ordinal()];
        }
        return SUCCESS_COMMENTS_EN[planet.ordinal()];
    }
    
    private static final String[][] SUCCESS_COMMENTS_RU = {
        // Земля
        {
            "Вау! Такое здание видел только в мультиках!",
            "Архитектор сошел с ума от радости!",
            "Город стал похож на мультфильм!",
            "Это самое безумное здание в городе!",
            "Жители в восторге от этой абсурдности!",
            "Эй, это похоже на город из моих снов!",
            "Такое здание украсит любой мультфильм!"
        },
        // Марс
        {
            "Отлично! Марсианская колония растёт! 🚀",
            "На Марсе теперь есть своё безумие!",
            "Эти здания переживут любую пылевую бурю!",
            "Марсиане будут в восторге! 👽",
            "Похоже, мы колонизируем Марс!",
            "Красная планета стала разноцветнее!",
            "Это здание выглядит инопланетно круто!"
        },
        // Венера
        {
            "Горячо! Венерианский шедевр готов! 🔥",
            "Здание плавится от собственной красоты!",
            "Венера стала ещё ярче! 🌟",
            "Это здание сияет как сама Венера!",
            "Похоже, мы выживаем на Венере!",
            "Такая красота плавит сердце!",
            "Золотой век венерианской архитектуры!"
        }
    };
    
    private static final String[][] SUCCESS_COMMENTS_EN = {
        // Earth
        {
            "Wow! I've only seen such buildings in cartoons!",
            "The architect went crazy with joy!",
            "The city looks like a cartoon now!",
            "This is the craziest building in town!",
            "Residents love this absurdity!",
            "Hey, this looks like a city from my dreams!",
            "Such a building would grace any cartoon!"
        },
        // Mars
        {
            "Great! The Martian colony is growing! 🚀",
            "Mars now has its own madness!",
            "These buildings will survive any dust storm!",
            "Martians will love it! 👽",
            "Looks like we're colonizing Mars!",
            "The red planet got more colorful!",
            "This building looks alien-cool!"
        },
        // Venus
        {
            "Hot! Venusian masterpiece complete! 🔥",
            "The building is melting from its own beauty!",
            "Venus got even brighter! 🌟",
            "This building shines like Venus itself!",
            "Looks like we're surviving on Venus!",
            "Such beauty melts the heart!",
            "The golden age of Venusian architecture!"
        }
    };
    
    // ==================== ШУТКИ ПРИ НЕПРАВИЛЬНОМ ОТВЕТЕ ====================
    public static String[] getWrongAnswerJokes(Planet planet) {
        if (isRu()) {
            return WRONG_ANSWER_JOKES_RU[planet.ordinal()];
        }
        return WRONG_ANSWER_JOKES_EN[planet.ordinal()];
    }
    
    private static final String[][] WRONG_ANSWER_JOKES_RU = {
        // Земля
        {
            "Твоя математика кривее моих зданий!",
            "Даже мультяшный архитектор считает лучше!",
            "Ты что, в мультиках учился математике?",
            "Ошибка! Попробуй посчитать на пальцах ног!",
            "Неправильно! Давай еще разочек, как в мультике!",
            "Бывает! Даже мультяшные гении ошибаются!",
            "Ой, кажется, ты перепутал с мультипликацией!",
            "Неверно! Но зато здание выглядит смешнее!"
        },
        // Марс
        {
            "Неверно! Марсиане считают лучше! 👽",
            "Ошибка в расчётах! Пылевая буря съела цифры!",
            "Твоя математика не переживёт марсианскую зиму!",
            "Неудача! Даже марсоход считает точнее!",
            "Неправильно! Попробуй считать в скафандре!",
            "Ошибка! Кислородное голодание сказывается?",
            "Марсианские калькуляторы не одобряют!",
            "Неверно! Может, радиация помешала?"
        },
        // Венера
        {
            "Горячая ошибка! 🔥 Попробуй ещё!",
            "Неверно! Даже венерианская жара не оправдывает!",
            "Ошибка! Кислотные облака затуманили разум?",
            "Неправильно! Слишком жарко для точных расчётов?",
            "Провал! Венерианские калькуляторы плавятся!",
            "Неудача! Давление в 90 атмосфер давит на мозги?",
            "Ошибка! Попробуй считать в теплозащитном костюме!",
            "Неверно! Золотое сечение не спасло!"
        }
    };
    
    private static final String[][] WRONG_ANSWER_JOKES_EN = {
        // Earth
        {
            "Your math is more crooked than my buildings!",
            "Even a cartoon architect counts better!",
            "Did you learn math from cartoons?",
            "Wrong! Try counting on your toes!",
            "Incorrect! Let's try again, cartoon style!",
            "It happens! Even cartoon geniuses make mistakes!",
            "Oops, looks like you confused it with animation!",
            "Wrong! But the building looks funnier now!"
        },
        // Mars
        {
            "Wrong! Martians count better! 👽",
            "Calculation error! Dust storm ate the numbers!",
            "Your math won't survive Martian winter!",
            "Failed! Even the rover counts better!",
            "Wrong! Try counting in a spacesuit!",
            "Error! Oxygen deprivation kicking in?",
            "Martian calculators disapprove!",
            "Wrong! Maybe radiation interfered?"
        },
        // Venus
        {
            "Hot mistake! 🔥 Try again!",
            "Wrong! Even Venusian heat doesn't excuse this!",
            "Error! Acid clouds clouding your mind?",
            "Wrong! Too hot for accurate calculations?",
            "Fail! Venusian calculators are melting!",
            "Failed! Is 90 atmospheres of pressure getting to you?",
            "Error! Try counting in a heat suit!",
            "Wrong! Golden ratio didn't save you!"
        }
    };
    
    // ==================== ДОСТИЖЕНИЯ ====================
    public static String achievementUnlocked() {
        return isRu() ? "🏆 Достижение разблокировано!" : "🏆 Achievement unlocked!";
    }
    
    // ==================== ЭКРАН ПОМОЩИ ====================
    public static String helpTitle() {
        return isRu() ? "❓ ПОМОЩЬ И УПРАВЛЕНИЕ" : "❓ HELP & CONTROLS";
    }
    
    public static String[] getHelpInstructions() {
        if (isRu()) {
            return HELP_INSTRUCTIONS_RU;
        }
        return HELP_INSTRUCTIONS_EN;
    }
    
    private static final String[] HELP_INSTRUCTIONS_RU = {
        "🎮 ОСНОВНОЕ УПРАВЛЕНИЕ:",
        "• ЛКМ - кликнуть на поле для строительства",
        "• ←/→ - выбрать тип здания",
        "• Enter - отправить ответ на задачу",
        "• Backspace - удалить блок/символ",
        "• Delete/Ctrl+Z - удалить здание",
        "• ESC - отмена ввода",
        "",
        "🪐 УПРАВЛЕНИЕ ПЛАНЕТАМИ:",
        "• ↑/↓ - переключить планету",
        "• 1 - Земля, 2 - Марс, 3 - Венера",
        "",
        "🎯 КАК ИГРАТЬ:",
        "1. Выберите тип здания",
        "2. Кликните на игровом поле",
        "3. Решите математическую задачу",
        "4. Постройте 3 блока для завершения",
        "5. Стройте разные здания на разных планетах!"
    };
    
    private static final String[] HELP_INSTRUCTIONS_EN = {
        "🎮 BASIC CONTROLS:",
        "• LMB - click on field to build",
        "• ←/→ - select building type",
        "• Enter - submit answer",
        "• Backspace - delete block/character",
        "• Delete/Ctrl+Z - remove building",
        "• ESC - cancel input",
        "",
        "🪐 PLANET CONTROLS:",
        "• ↑/↓ - switch planet",
        "• 1 - Earth, 2 - Mars, 3 - Venus",
        "",
        "🎯 HOW TO PLAY:",
        "1. Select building type",
        "2. Click on the game field",
        "3. Solve the math problem",
        "4. Build 3 blocks to complete",
        "5. Build different buildings on different planets!"
    };
    
    // ==================== ЭКРАН "ОБ ИГРЕ" ====================
    public static String aboutTitle() {
        return isRu() ? "✨ ОБ ИГРЕ" : "✨ ABOUT";
    }
    
    public static String[] getAboutText() {
        if (isRu()) {
            return ABOUT_TEXT_RU;
        }
        return ABOUT_TEXT_EN;
    }
    
    private static final String[] ABOUT_TEXT_RU = {
        "Absurd City Builder - это уникальная игра,",
        "где вы строите безумные города на разных планетах!",
        "",
        "Особенности игры:",
        "• 3 уникальные планеты с разными зданиями",
        "• Забавные математические задачи",
        "• Мультяшная графика и анимации",
        "• Динамичные жители и шутки",
        "• Бесконечные возможности для творчества!",
        "",
        "Разработано с ❤️ для любителей абсурда и математики.",
        "",
        "Версия 1.0"
    };
    
    private static final String[] ABOUT_TEXT_EN = {
        "Absurd City Builder is a unique game",
        "where you build crazy cities on different planets!",
        "",
        "Game features:",
        "• 3 unique planets with different buildings",
        "• Fun math problems",
        "• Cartoon graphics and animations",
        "• Dynamic citizens and jokes",
        "• Endless creative possibilities!",
        "",
        "Made with ❤️ for absurdity and math lovers.",
        "",
        "Version 1.0"
    };
    
    // ==================== УПРАВЛЕНИЕ ЯЗЫКОМ ====================
    public static void setLanguage(String lang) {
        currentLanguage = lang;
    }
    
    public static String getCurrentLanguage() {
        return currentLanguage;
    }
    
    public static void toggleLanguage() {
        currentLanguage = isRu() ? "en" : "ru";
    }
    
    public static boolean isRu() {
        return "ru".equals(currentLanguage);
    }
    
    public static String languageButtonText() {
        return isRu() ? "🌐 EN" : "🌐 RU";
    }
}
