using System;
using UnityEngine;

namespace ET.Client
{
    [UIEvent(UIType.UISetting)]
    public class UISettingEvent : AUIEvent
    {
        public override async ETTask<UI> OnCreate(UIComponent uiComponent, UILayer uiLayer, params object[] param)
        {
            await ETTask.CompletedTask;
            await uiComponent.DomainScene().GetComponent<ResourcesLoaderComponent>().LoadAsync(UIType.UISetting.StringToAB());
            GameObject bundleGameObject = (GameObject) ResourcesComponent.Instance.GetAsset(UIType.UISetting.StringToAB(), UIType.UISetting);
            GameObject gameObject = UnityEngine.Object.Instantiate(bundleGameObject, UIEventComponent.Instance.GetLayer((int)uiLayer));
            UI ui = uiComponent.AddChild<UI, string, GameObject>(UIType.UISetting, gameObject);
            ui.AddComponent<UISettingComponent>(false,param);
            return ui;
        }

        public override void OnRemove(UIComponent uiComponent)
        {
            ResourcesComponent.Instance.UnloadBundle(UIType.UISetting.StringToAB());
        }
    }
}