/*
文件名:233_HUD_Message.nut
路径:User/UI/Window/233_HUD_Message.nut
创建日期:2024-12-14	08:10
文件用途: 公告或信息弹窗
*/

class _Yosin_MessageBox extends Yosin_Window {
    //调试模式
    // DeBugMode = true;

    //不是窗口
    // NoWindow = true;

    //是否可见
    // Visible = false;

    BackGroundMusic = null;

    cacheW = 230;
    cacheH = 155;

    titleTextActor = null;
    messageTextActor = null;

    constructor(message, gX = 418, gY = 200, info = {
        // 标题
        title = "公告",
        // 水平边距
        horizontalMargin = 20,
        // 垂直边距
        verticalMargin = 20,
    }) {

        local title = info.rawin("title") ? info.title : "公告";
        local horizontalMargin = info.rawin("horizontalMargin") ? info.horizontalMargin : 20;
        local verticalMargin = info.rawin("verticalMargin") ? info.verticalMargin : 20;

        // 标题
        titleTextActor = FontAssetManager.GenerateNormal(title, true, {
            color = sq_RGBA(206, 189, 140, 255),
            alignment = TextAlign.Center,
        });

        // 标题动态宽度
        if (titleTextActor.GetSize().w > cacheW - 40) {
            cacheW = titleTextActor.GetSize().w + 40;
        }


        // 内容
        messageTextActor = FontAssetManager.GenerateNormal(message, false, {
            color = sq_RGBA(206, 189, 140, 255),
            alignment = TextAlign.Center,
            wrap_width = cacheW - horizontalMargin * 2,
        });

        //  内容动态高度
        local verticalMargin = 50 + verticalMargin * 2;
        cacheH = messageTextActor.GetSize().h + verticalMargin;

        // 默认构造数据
        base.constructor("公告或信息弹窗" + clock().tostring(), gX ? gX : 418, gY ? gY : 200, cacheW, cacheH, 20);


        //注册控件
        RegisterWidget();
        //注册绘制
        RegisterDraw();

        ResetFocus();
    }

    function RegisterWidget() {
        //背景
        local background = Yosin_NineBoxStretch(-1, 15, cacheW + 2, cacheH, "sprite/interface/lenheartwindowcommon.img", 97);
        AddUIChild(background);
        local twoBackground = Yosin_NineBoxStretch(4, 20, cacheW - 8, cacheH - 36, "sprite/interface/lenheartwindowcommon.img", 97);
        AddUIChild(twoBackground);

        // 绘制标题背景
        local titleBackground = Yosin_EmeStretch(0, 0, cacheW, 20, "sprite/interface/lenheartwindowcommon.img", 609);
        AddUIChild(titleBackground);

        //确认按钮
        local confirmButton = Yosin_BaseButton(cacheW / 2 - 28, cacheH - 15, 56, 24 "sprite/interface/lenheartwindowcommon.img", 12);
        confirmButton.OnClick = function(Button) {
            //关闭本窗口
            CloseWindow();
        }.bindenv(this);
        AddUIChild(confirmButton);

        // 绘制标题
        local confirmTextActor = FontAssetManager.GenerateNormal("确认", sq_RGBA(206, 189, 140, 255), true);
        confirmTextActor.SetPosition(17, 6);
        confirmButton.Addchild(confirmTextActor);

        //关闭按钮
        local closeButton = Yosin_BaseButton(cacheW - 15, 5, 10, 9 "sprite/interface/lenheartwindowcommon.img", 42);
        closeButton.OnClick = function(Button) {
            //关闭本窗口
            CloseWindow();
        }.bindenv(this);
        AddUIChild(closeButton);


    }

    function RegisterDraw() {

        local titleX = cacheW / 2 - titleTextActor.GetSize().w / 2;
        // 绘制标题
        titleTextActor.SetPosition(titleX, 2);
        Addchild(titleTextActor);


        local messageX = cacheW / 2 - messageTextActor.GetSize().w / 2;
        local messageY = cacheH / 2 - messageTextActor.GetSize().h / 2;

        // 绘制内容
        messageTextActor.SetPosition(messageX, messageY);
        Addchild(messageTextActor);

    }


    //逻辑入口
    function Proc(Dt) {

        SyncPos(X, Y);
        base.Proc(Dt);
    }

}