b486678290
Library -Artifacts
173 lines
6.4 KiB
C#
173 lines
6.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
|
|
namespace UnityEngine.Monetization
|
|
{
|
|
[AddComponentMenu("")]
|
|
sealed class Placeholder : MonoBehaviour
|
|
{
|
|
Texture2D m_LandscapeTexture;
|
|
Texture2D m_PortraitTexture;
|
|
Texture2D m_LandscapeAdTexture;
|
|
Texture2D m_PortraitAdTexture;
|
|
|
|
bool m_Showing;
|
|
bool purchaseButtonIsClicked = false;
|
|
|
|
string m_PlacementId;
|
|
bool m_AllowSkip;
|
|
|
|
internal event ShowAdStartCallback onStart;
|
|
internal event ShowAdFinishCallback onFinish;
|
|
|
|
static Texture2D TextureFromEmbeddedResource(string resourceName)
|
|
{
|
|
try
|
|
{
|
|
Assembly assembly = Assembly.GetExecutingAssembly();
|
|
Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
|
|
byte[] bytes = new byte[resourceStream.Length];
|
|
resourceStream.Read(bytes, 0, (int)resourceStream.Length);
|
|
|
|
var texture2D = new Texture2D(1, 1);
|
|
|
|
var loadImage = typeof(Texture2D).GetMethod("LoadImage", new[] { typeof(byte[]) });
|
|
if (loadImage != null)
|
|
{
|
|
loadImage.Invoke(texture2D, new object[] { bytes });
|
|
}
|
|
else
|
|
{
|
|
var imageConversion = Type.GetType("UnityEngine.ImageConversion, UnityEngine");
|
|
loadImage = imageConversion.GetMethod("LoadImage", new[] { typeof(Texture2D), typeof(byte[]), typeof(bool) });
|
|
loadImage.Invoke(texture2D, new object[] { texture2D, bytes, true });
|
|
}
|
|
return texture2D;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void Awake()
|
|
{
|
|
m_LandscapeTexture = Resources.Load("LandscapeMon") as Texture2D;
|
|
m_PortraitTexture = Resources.Load("PortraitMon") as Texture2D;
|
|
m_LandscapeAdTexture = Resources.Load("Landscape") as Texture2D;
|
|
m_PortraitAdTexture = Resources.Load("Portrait") as Texture2D;
|
|
}
|
|
|
|
public void Show(string placementId, bool allowSkip)
|
|
{
|
|
m_PlacementId = placementId;
|
|
m_AllowSkip = allowSkip;
|
|
m_Showing = true;
|
|
onStart?.Invoke();
|
|
}
|
|
|
|
public void OnGUI()
|
|
{
|
|
if (!m_Showing)
|
|
{
|
|
return;
|
|
}
|
|
GUI.ModalWindow(0, new Rect(0, 0, Screen.width, Screen.height), ModalWindowFunction, "");
|
|
}
|
|
|
|
void OnApplicationQuit()
|
|
{
|
|
m_Showing = false;
|
|
}
|
|
|
|
void ModalWindowFunction(int id)
|
|
{
|
|
if (m_PlacementId == "ShowAdPlacement")
|
|
{
|
|
// show normal ads
|
|
if (m_LandscapeAdTexture != null && m_PortraitAdTexture != null)
|
|
{
|
|
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), Screen.width > Screen.height ? m_LandscapeAdTexture : m_PortraitAdTexture, ScaleMode.ScaleAndCrop);
|
|
}
|
|
else
|
|
{
|
|
GUIStyle myStyle = new GUIStyle(GUI.skin.label);
|
|
myStyle.alignment = TextAnchor.MiddleCenter;
|
|
myStyle.fontSize = 32;
|
|
GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "This screen would be your Ad Unit", myStyle);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// show promo ads
|
|
if (m_LandscapeTexture != null && m_PortraitTexture != null)
|
|
{
|
|
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), Screen.width > Screen.height ? m_LandscapeTexture : m_PortraitTexture, ScaleMode.ScaleAndCrop);
|
|
}
|
|
else
|
|
{
|
|
GUIStyle myStyle = new GUIStyle(GUI.skin.label);
|
|
myStyle.alignment = TextAnchor.MiddleCenter;
|
|
myStyle.fontSize = 32;
|
|
GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "This screen would be your Promo Ad Unit", myStyle);
|
|
}
|
|
|
|
GUIStyle purchaseStyle = new GUIStyle(GUI.skin.button);
|
|
purchaseStyle.fontSize = 40;
|
|
purchaseStyle.normal.textColor = Color.white;
|
|
if (!purchaseButtonIsClicked)
|
|
{
|
|
if (Screen.width > Screen.height)
|
|
{
|
|
if (GUI.Button(new Rect(Screen.width * 3 / 4 - 100, Screen.height * 3 / 4 - 100, 200, 100), "Purchase", purchaseStyle))
|
|
{
|
|
purchaseButtonIsClicked = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height * 3 / 4, 200, 100), "Purchase", purchaseStyle))
|
|
{
|
|
purchaseButtonIsClicked = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
GUIStyle confirmStyle = new GUIStyle(GUI.skin.button);
|
|
confirmStyle.fontSize = 40;
|
|
confirmStyle.normal.textColor = Color.white;
|
|
|
|
GUIStyle cancelStyle = new GUIStyle(GUI.skin.button);
|
|
cancelStyle.fontSize = 40;
|
|
cancelStyle.normal.textColor = Color.white;
|
|
|
|
if (GUI.Button(new Rect(Screen.width * 3 / 4, Screen.height - 150, 200, 100), "Cancel", confirmStyle))
|
|
{
|
|
purchaseButtonIsClicked = false;
|
|
m_Showing = false;
|
|
}
|
|
if (GUI.Button(new Rect(Screen.width * 3 / 4 - 200, Screen.height - 150, 200, 100), "Confirm", cancelStyle))
|
|
{
|
|
purchaseButtonIsClicked = false;
|
|
m_Showing = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (m_AllowSkip && GUI.Button(new Rect(20, 20, 150, 50), "Skip"))
|
|
{
|
|
m_Showing = false;
|
|
onFinish?.Invoke(ShowResult.Skipped);
|
|
}
|
|
|
|
if (GUI.Button(new Rect(Screen.width - 170, 20, 150, 50), "Close"))
|
|
{
|
|
m_Showing = false;
|
|
onFinish?.Invoke(ShowResult.Finished);
|
|
}
|
|
}
|
|
}
|
|
}
|