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

namespace LittleSim.Scenes;

/// <summary>Экран «Авторы»: демонстрационный, пока один автор. Назад — кнопкой или Esc.</summary>
public sealed class CreditsScene : Scene
{
    protected override void OnLoad()
    {
        var lang = Context.Services.Get<GameContent>().Languages;
        var input = this.UseInput();
        var desktop = this.UseUI(); // ставит MyraEnvironment.Game до создания виджетов

        var column = Ui.Column(12);
        column.Widgets.Add(Ui.Title(lang.Get("credits.title")));
        column.Widgets.Add(new Myra.Graphics2D.UI.Label { Height = 16 });
        column.Widgets.Add(Ui.Subtitle(lang.Get("credits.author")));
        column.Widgets.Add(Ui.Subtitle(lang.Get("credits.role")));
        column.Widgets.Add(new Myra.Graphics2D.UI.Label { Height = 16 });
        column.Widgets.Add(Ui.Button(lang.Get("credits.back"), Back));

        desktop.Root = Ui.Screen(column);
        UpdateSystems.Add(
            new CallbackSystem(() =>
            {
                if (input.IsKeyPressed(Keys.Escape))
                {
                    Back();
                }
            })
        );
    }

    private void Back()
    {
        if (!Context.Scenes.IsTransitioning)
        {
            Context.Scenes.Switch(new MainMenuScene(), Transitions.Fade(0.4f));
        }
    }
}
