
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class NativeAd : MonoBehaviour
{
    protected static RectTransform s_NativeAd;
    private static NativeAd s_instance;
    public static NativeAd Instance
    {
        get
        {
            if (s_instance == null)
            {
                Debug.LogError("s_instance == null ");
            }
            return s_instance;
        }
    }

    [SerializeField]
    private Camera uiCamera;
   
    bool horizontal = true;

    private void Awake()
    {
        s_instance = this;
        
    }
    public void ShowNativeAd()
    {
        if (ToukaAdManager.Instance.IsReadyNative)
        {
            ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight());
        }
    }
    //由于loadnative 函数有个问题，比如多个位置多个不同尺寸的native。目前只能处理一个尺寸，所以设置了firstFlg，位置宽高得到一次即可。
    static bool firstFlg = true;
    static float m_width;
    static float m_height;
    static float m_x;
    static float m_y;
    public float GetWidth()
    {
        FirstGetWAndH();

        return m_width;
    }
    public float GetHeight()
    {
        FirstGetWAndH();
        return m_height;
    }
    public float GetX()
    {
        FirstGetWAndH();
        return m_x;
    }
    public float GetY()
    {
        FirstGetWAndH();
        return m_y;
    }

    void FirstGetWAndH()
    {
        if (firstFlg)
        {
            if(uiCamera==null)
            {
                uiCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
            }
            Debug.Log("YANGWY "+uiCamera);
            Vector3 lefttop = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x - GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y + GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
            Vector3 rightbottom = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x + GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y - GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
            Vector3 picture_zero = uiCamera.WorldToScreenPoint(transform.position);
            float x = lefttop.x;
            float y = rightbottom.y;
            float width = rightbottom.x - lefttop.x;
            float height = Mathf.Abs(rightbottom.y - lefttop.y);
            y = Screen.height - (picture_zero.y + height / 2);
            if (horizontal)
            {
                if (height > width)
                {
                    height = width;
                }
                if (width > height * 1.2f)
                {
                    x += (width - (height * 1.2f)) / 2;
                    width = height * 1.2f;

                }

            }
            else
            {

            }
            m_x = x;
            m_y = y;
            m_width = width;
            m_height = height;
            firstFlg = false;
        }
    }

}
