using LittleSim.Content;
using LittleSim.UI;
using Microsoft.Xna.Framework;
using MrGameEng.Core;
using MrGameEng.Host;
using MrGameEng.UI;

namespace LittleSim.Scenes;

/// <summary>
/// Главное меню: заголовок и кнопки Новый мир / Загрузка / Настройки / Авторы / Выход.
/// Все подписи — из локализации Core-мода. Чистый UI-экран (Myra), без мира и рендерера.
/// </summary>
public sealed class MainMenuScene : Scene
{
    protected override void OnLoad()
    {
        var content = Context.Services.Get<GameContent>();
        var lang = content.Languages;
        var desktop = this.UseUI(); // ставит MyraEnvironment.Game до создания виджетов

        var column = Ui.Column(12);
        column.Widgets.Add(Ui.Title(lang.Get("menu.title")));
        column.Widgets.Add(Ui.Subtitle(lang.Get("menu.subtitle")));
        column.Widgets.Add(new Myra.Graphics2D.UI.Label { Height = 16 });
        column.Widgets.Add(Ui.Button(lang.Get("menu.newworld"), () => Go(new NewWorldScene())));
        column.Widgets.Add(Ui.Button(lang.Get("menu.load"), () => Go(new LoadGameScene())));
        column.Widgets.Add(Ui.Button(lang.Get("menu.settings"), () => Go(new SettingsScene())));
        column.Widgets.Add(Ui.Button(lang.Get("menu.credits"), () => Go(new CreditsScene())));
        column.Widgets.Add(
            Ui.Button(lang.Get("menu.quit"), () => Context.Services.Get<Game>().Exit())
        );

        desktop.Root = Ui.Screen(column);
    }

    private void Go(Scene scene)
    {
        if (!Context.Scenes.IsTransitioning)
        {
            Context.Scenes.Switch(scene, Transitions.Fade(0.4f));
        }
    }
}
