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

public class WortiseAdSize
{
    public enum Type
    {
        Anchored,
        Inline,
        Normal
    }


    #if UNITY_ANDROID && !UNITY_EDITOR
    private static AndroidJavaObject activity
    {
        get
        {
            return WortiseSdk.activity;
        }
    }

    private static AndroidJavaClass clazz
    {
        get
        {
            return new AndroidJavaClass("com.wortise.ads.AdSize");
        }
    }
    #endif


    public static readonly WortiseAdSize Height50  = new WortiseAdSize(height: 50);
    public static readonly WortiseAdSize Height90  = new WortiseAdSize(height: 90);
    public static readonly WortiseAdSize Height250 = new WortiseAdSize(height: 250);
    public static readonly WortiseAdSize Height280 = new WortiseAdSize(height: 280);
    public static readonly WortiseAdSize MatchView = new WortiseAdSize();


    public object NativeObject 
    {
        get
        {
            #if UNITY_ANDROID && !UNITY_EDITOR
            switch (AdType)
            {
                case Type.Anchored:
                    return clazz.CallStatic<AndroidJavaObject>("getAnchoredAdaptiveBannerAdSize", activity, Width);
                case Type.Inline:
                    return clazz.CallStatic<AndroidJavaObject>("getInlineAdaptiveBannerAdSize", activity, Width, Height);
                default:
                    return new AndroidJavaObject("com.wortise.ads.AdSize", Width, Height);
            }            
            #else
            return null;
            #endif
        }
    }


    public readonly Type AdType;
    public readonly int  Height;
    public readonly int  Width;


    public WortiseAdSize(int width = -1, int height = -1, Type type = Type.Normal)
    {
        AdType = type;
        Height = height;
        Width  = width;
    }


    public static WortiseAdSize GetAnchoredAdaptiveBannerAdSize(int width)
    {
        return new WortiseAdSize(width: width, type: Type.Anchored);
    }

    public static WortiseAdSize GetInlineAdaptiveBannerAdSize(int width, int maxHeight)
    {
        return new WortiseAdSize(width: width, height: maxHeight, type: Type.Inline);
    }
}
