lib_unity_purchase/Editor/ServiceProjectSettings/PurchasingServiceEnabler.cs

80 lines
2.5 KiB
C#

#if SERVICES_SDK_CORE_ENABLED
using System;
using System.Reflection;
using Unity.Services.Core.Editor;
using UnityEditor.Analytics;
namespace UnityEditor.Purchasing
{
internal class PurchasingServiceEnabler : EditorGameServiceFlagEnabler
{
public event Action OnServiceEnabled;
public event Action OnServiceDisabled;
const string k_ServiceFlagName = "purchasing";
const string k_LegacyEnabledSettingName = "Purchasing";
protected override string FlagName => k_ServiceFlagName;
protected override void EnableLocalSettings()
{
SetPurchasingEnableSetting(true);
AnalyticsSettings.enabled = true;
OnServiceEnabled?.Invoke();
}
static void SetPurchasingEnableSetting(bool value)
{
PurchasingSettings.enabled = value;
SetLegacyEnabledSetting(value);
}
static void SetLegacyEnabledSetting(bool value)
{
var playerSettingsType = Type.GetType("UnityEditor.PlayerSettings,UnityEditor.dll");
if (playerSettingsType != null)
{
var setCloudServiceEnabledMethod = playerSettingsType.GetMethod("SetCloudServiceEnabled", BindingFlags.Static | BindingFlags.NonPublic);
if (setCloudServiceEnabledMethod != null)
{
setCloudServiceEnabledMethod.Invoke(null, new object[] { k_LegacyEnabledSettingName, value });
}
}
}
protected override void DisableLocalSettings()
{
SetPurchasingEnableSetting(false);
OnServiceDisabled?.Invoke();
}
public override bool IsEnabled()
{
return GetLegacyEnabledSetting();
}
static bool GetLegacyEnabledSetting()
{
var isEnabled = false;
var playerSettingsType = Type.GetType("UnityEditor.PlayerSettings,UnityEditor.dll");
if (playerSettingsType != null)
{
var getCloudServiceEnabledMethod = playerSettingsType.GetMethod("GetCloudServiceEnabled", BindingFlags.Static | BindingFlags.NonPublic);
if (getCloudServiceEnabledMethod != null)
{
var enabledStateResult = getCloudServiceEnabledMethod.Invoke(null, new object[] { k_LegacyEnabledSettingName });
isEnabled = Convert.ToBoolean(enabledStateResult);
}
}
return isEnabled;
}
}
}
#endif